--- loncom/html/res/adm/pages/annotator/admannotations.pm 2006/04/10 23:37:25 1.23
+++ loncom/html/res/adm/pages/annotator/admannotations.pm 2008/11/20 13:51:14 1.29
@@ -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.23 2006/04/10 23:37:25 albertel Exp $
+# $Id: admannotations.pm,v 1.29 2008/11/20 13:51:14 jms Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -27,6 +27,44 @@
#
##################
+=pod
+
+=head1 NAME
+
+Apache::admannotations
+
+=head1 SYNOPSIS
+
+This will take annotations and then plug them into a page.
+
+This is part of the LearningOnline Network with CAPA project
+described at http://www.lon-capa.org.
+
+=head1 OVERVIEW
+
+(empty)
+
+=head1 SUBROUTINES
+
+=over write_annotation()
+
+Put annotation
+
+=item js_get_symb()
+
+Construct editor
+
+=item construct_editor()
+
+=item construct_error()
+
+=item handler()
+
+=back
+
+=cut
+
+
package Apache::admannotations;
use strict;
@@ -38,35 +76,53 @@ use Apache::lonlocal;
# --------------------------------------------------------------Put annotation
sub write_annotation {
- my ($urlold, $annotation) = @_;
- 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) = @_;
- 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');
@@ -93,10 +149,10 @@ $start_page
@@ -109,7 +165,15 @@ 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();
@@ -128,10 +192,10 @@ $annot_error
-
-
+
+
+ onclick="javascript:this.form.symbnew.value=get_symb();this.form.submit();" />
@@ -140,42 +204,36 @@ $end_page
END_HTML2
}
+
# ---------------------------------------------------------------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) = &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 ($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=&Apache::loncommon::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);