--- loncom/html/res/adm/pages/annotator/admannotations.pm 2006/04/10 23:32:53 1.22
+++ loncom/html/res/adm/pages/annotator/admannotations.pm 2007/04/24 23:26:26 1.27
@@ -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.22 2006/04/10 23:32:53 albertel Exp $
+# $Id: admannotations.pm,v 1.27 2007/04/24 23:26:26 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -33,39 +33,71 @@ use strict;
use Apache::Constants qw(:common);
use Apache::loncommon();
use Apache::lonnet;
+use Apache::lonlocal;
# --------------------------------------------------------------Put annotation
sub write_annotation {
- my ($urlold, $annotation) = @_;
- if ($annotation) {
- &Apache::lonnet::put('nohist_annotations',{$urlold => $annotation});
+ my ($symb, $enc, $annotation) = @_;
+
+ return if (!$annotation);
+
+ 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) = @_;
- my %annotation=&Apache::lonnet::get('nohist_annotations',[$urlnew]);
- return %annotation;
+ my ($symb,$enc) = @_;
+
+ my $key = $symb;
+ if (!$enc) {
+ $key =
+ &Apache::lonnet::clutter((&Apache::lonnet::decode_symb($symb))[2]);
+ }
+ my %annotation=&Apache::lonnet::get('nohist_annotations',[$key]);
+ return $annotation{$key};
}
# ------------------------------------------------------------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');
@@ -82,16 +114,21 @@ 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(<
@@ -103,10 +140,22 @@ END_HTML
sub construct_error {
my ($annot_error,$button_name) = @_;
- my $start_page = &Apache::loncommon::start_page('Annotations',undef,
+
+ my $get_symb = &js_get_symb();
+ my $js = <
+$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(<
@@ -118,11 +167,11 @@ $annot_error
-
-
-
-
+
+
+
@@ -130,42 +179,45 @@ $end_page
END_HTML2
}
+sub clean_symb {
+ my ($symb) = @_;
+
+ &Apache::lonenc::check_decrypt(\$symb);
+ my $enc = $env{'request.enc'};
+ delete($env{'request.enc'});
+
+ return ($symb,$enc);
+}
+
# ---------------------------------------------------------------Main Handler
sub handler {
- my $r=shift;
-
- $r->content_type('text/html');
+ my ($r) = @_;
+
+ &Apache::loncommon::content_type($r,'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 ($symb_old,$symb_old_enc) = &clean_symb($env{'form.symbold'});
+ my ($symb_new,$symb_new_enc) = &clean_symb($env{'form.symbnew'});
+
my $annotation=$env{'form.annotation'};
- if ($urlold) {
- &write_annotation($urlold,$annotation);
+ if ($symb_old) {
+ &write_annotation($symb_old,$symb_old_enc,$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");
+ 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 ($urlold eq $urlnew) {
- $annot_hash{$urlnew}=$annotation;
- } else {
- %annot_hash=&get_annotation($urlnew);
+ if ($symb_old ne $symb_new) {
+ $annotation=&get_annotation($symb_new,$symb_new_enc);
}
- $page=&construct_editor($annot_hash{$urlnew},$env{'form.urlnew'});
+ # pass same symb through.
+ $page=&construct_editor($annotation,$env{'form.symbnew'});
}
}
$r->print($page);