--- loncom/html/res/adm/pages/annotator/admannotations.pm 2006/04/10 23:26:48 1.20
+++ loncom/html/res/adm/pages/annotator/admannotations.pm 2008/09/11 20:44:54 1.28
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# This will take annotations and then plug them into a page.
#
-# $Id: admannotations.pm,v 1.20 2006/04/10 23:26:48 albertel Exp $
+# $Id: admannotations.pm,v 1.28 2008/09/11 20:44:54 tempelho Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -33,40 +33,58 @@ use strict;
use Apache::Constants qw(:common);
use Apache::loncommon();
use Apache::lonnet;
+use Apache::lonlocal;
# --------------------------------------------------------------Put annotation
sub write_annotation {
- my $urlold=shift;
- my $annotation=shift;
- if ($annotation) {
- &Apache::lonnet::put('nohist_annotations',{$urlold => $annotation});
+ my ($symb, $enc, $annotation) = @_;
+
+
+ $annotation=~s/$^\s*$//;
+ my $key = $symb;
+ if (!$enc) {
+ $key =
+ &Apache::lonnet::clutter((&Apache::lonnet::decode_symb($symb))[2]);
}
+
+ &Apache::lonnet::put('nohist_annotations',{$key => $annotation});
return;
}
-# --------------------------------------------------------------Get annotation
-
-sub get_annotation {
- my $urlnew=shift;
- my %annotation=&Apache::lonnet::get('nohist_annotations',[$urlnew]);
- return %annotation;
-}
# ------------------------------------------------------------Construct editor
+sub js_get_symb {
+ return <
var timeout;
+$get_symb
+
function changed() {
- var urlnew=window.opener.clientwindow.location.href;
- if (urlnew!=document.annotInfo.urlold.value) {
- document.annotInfo.urlnew.value=urlnew;
+ var symbnew=get_symb();
+ if (symbnew!=document.annotInfo.symbold.value) {
+ document.annotInfo.symbnew.value=symbnew;
document.annotInfo.submit();
}
timeout=setTimeout('changed();','1000');
@@ -83,18 +101,23 @@ ENDJS
my $end_page =
&Apache::loncommon::end_page();
+
+ my %lt = ( 'close no save' => "Close (no save)",
+ 'save' => "Save and Update",);
+ %lt = &Apache::lonlocal::texthash(%lt);
+
return(<
-
+
$end_page
END_HTML
@@ -103,74 +126,80 @@ END_HTML
# ----------------------------------------------------Constructs error window
sub construct_error {
- my ($annot_error,$button_name) = @_;
- my $start_page = &Apache::loncommon::start_page('Annotations',undef,
- {'only_body' => 1,});
- my $end_page = &Apache::loncommon::end_page();
+ my ($annot_error,$button_name) = @_;
- return(<
+$get_symb
+
+ENDJS
+
+ my $start_page = &Apache::loncommon::start_page('Annotations',$js,
+ {'only_body' => 1,});
+ my $end_page = &Apache::loncommon::end_page();
+
+ my %lt = ( 'close' => "Close",
+ 'button' => $button_name,);
+ %lt = &Apache::lonlocal::texthash(%lt);
+
+ return(<
-
+
+
+
+
+
$end_page
END_HTML2
}
+
# ---------------------------------------------------------------Main Handler
sub handler {
- my $r=shift;
-
- $r->content_type('text/html');
- $r->send_http_header;
- return OK if $r->header_only;
-
-
- my $page;
- my %annot_hash;
-
- my $urlold=$env{'form.urlold'};
- $urlold=~s/^http\:\/\///;
- $urlold=~s/^[^\/]+//;
- $urlold=~s/\?.*$//;
- my $urlnew=$env{'form.urlnew'};
- $urlnew=~s/^http\:\/\///;
- $urlnew=~s/^[^\/]+//;
- $urlnew=~s/\?.*$//;
- my $annotation=$env{'form.annotation'};
-
- if ($urlold) {
- write_annotation($urlold,$annotation);
- }
- if (exists($env{'form.urlnew'})) {
- unless ($urlnew) {
- $page=construct_error("Cannot annotate current window. Please point your browser to a LON-CAPA page and then 'continue'.","continue");
- } else {
- if ($urlold eq $urlnew) {
- $annot_hash{$urlnew}=$annotation;
- } else {
- %annot_hash=get_annotation($urlnew);
- }
- $page=construct_editor($annot_hash{$urlnew},$env{'form.urlnew'});
- }
- }
- $r->print($page);
- return OK;
+ my ($r) = @_;
+
+ &Apache::loncommon::content_type($r,'text/html');
+ $r->send_http_header;
+ return OK if $r->header_only;
+
+
+ my $page;
+
+ my ($symb_old,$symb_old_enc) = &Apache::loncommon::clean_symb($env{'form.symbold'});
+ my ($symb_new,$symb_new_enc) = &Apache::loncommon::clean_symb($env{'form.symbnew'});
+
+ my $annotation=$env{'form.annotation'};
+
+ if ($symb_old) {
+ &write_annotation($symb_old,$symb_old_enc,$annotation);
+ }
+ if (exists($env{'form.symbnew'})) {
+ unless ($symb_new) {
+ $page=&construct_error(&mt("Cannot annotate current window. Please point your browser to a LON-CAPA page and then 'continue'."),"continue");
+ } else {
+ if ($symb_old ne $symb_new) {
+ $annotation=&Apache::loncommon::get_annotation($symb_new,$symb_new_enc);
+ }
+ # pass same symb through.
+ $page=&construct_editor($annotation,$env{'form.symbnew'});
+ }
+ }
+ $r->print($page);
+ return OK;
}
1;