--- loncom/html/res/adm/pages/annotator/admannotations.pm 2006/04/11 15:52:33 1.25 +++ loncom/html/res/adm/pages/annotator/admannotations.pm 2021/12/24 00:48:31 1.37 @@ -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.25 2006/04/11 15:52:33 albertel Exp $ +# $Id: admannotations.pm,v 1.37 2021/12/24 00:48:31 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -27,6 +27,7 @@ # ################## + package Apache::admannotations; use strict; @@ -38,39 +39,67 @@ 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 < 'Close', + 'save' => 'Save', + 'cancel' => 'Cancel', + ); + my $js = < 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'); } + +function renameButton(){ + document.getElementById("close").value="$lt{'cancel'}"; +} + ENDJS @@ -84,20 +113,17 @@ 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(< - - $annotation - - + + $annotation + + - + @@ -109,18 +135,27 @@ 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); + my %lt = &Apache::lonlocal::texthash( + 'close' => 'Close', + 'button' => $button_name, + ); return(< - + @@ -128,10 +163,10 @@ $annot_error - - + + + onclick="javascript:this.form.symbnew.value=get_symb();this.form.submit();" /> @@ -140,6 +175,28 @@ $end_page END_HTML2 } +sub block_check { + my ($clientip) = @_; + my ($blocked,$blocktext) = + &Apache::loncommon::blocking_status('annotate',$clientip); + if ($blocked) { + my %lt = &Apache::lonlocal::texthash( + 'close' => 'Close', + ); + my $start_page = + &Apache::loncommon::start_page('Annotations',undef, + {'only_body' => 1,}); + my $end_page = ''."\n". + ''."\n". + ''."\n". + &Apache::loncommon::end_page(); + return ($blocked,$start_page.$blocktext.$end_page); + } else { + return (); + } +} + # ---------------------------------------------------------------Main Handler sub handler { @@ -149,33 +206,34 @@ sub handler { $r->send_http_header; return OK if $r->header_only; + my $clientip = &Apache::lonnet::get_requestor_ip($r); + if ($clientip ne '') { + my ($blocked,$output) = &block_check($clientip); + if ($blocked) { + $r->print($output); + return OK; + } + } 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'},1); + my ($symb_new,$symb_new_enc) = &Apache::loncommon::clean_symb($env{'form.symbnew'},1); + 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) { + 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); @@ -185,3 +243,41 @@ sub handler { 1; __END__ +=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 + +