# The LearningOnline Network with CAPA # This will take annotations and then plug them into a page. # # $Id: admannotations.pm,v 1.28.2.2 2009/01/08 19:55:25 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # # This file is part of the LearningOnline Network with CAPA (LON-CAPA). # # LON-CAPA is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # LON-CAPA is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with LON-CAPA; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # /home/httpd/html/adm/gpl.txt # # http://www.lon-capa.org/ # ################## package Apache::admannotations; use strict; use Apache::Constants qw(:common); use Apache::loncommon(); use Apache::lonnet; use Apache::lonlocal; # --------------------------------------------------------------Put annotation sub write_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; } # ------------------------------------------------------------Construct editor sub js_get_symb { return < var timeout; $get_symb function changed() { var symbnew=get_symb(); if (symbnew!=document.annotInfo.symbold.value) { document.annotInfo.symbnew.value=symbnew; document.annotInfo.submit(); } timeout=setTimeout('changed();','1000'); } ENDJS my %load_items = ('onload' => "timeout=setTimeout('changed()','1000')", 'onunload' => 'clearTimeout(timeout);'); my $start_page = &Apache::loncommon::start_page('Annotations',$js, {'only_body' => 1, 'add_entries' => \%load_items,}); 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 } # ----------------------------------------------------Constructs error window sub construct_error { my ($annot_error,$button_name) = @_; 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(<
$annot_error
$end_page END_HTML2 } # ---------------------------------------------------------------Main Handler sub handler { 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'},1); my ($symb_new,$symb_new_enc) = &Apache::loncommon::clean_symb($env{'form.symbnew'},1); 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; __END__