--- loncom/html/res/adm/pages/annotator/admannotations.pm 2000/09/07 20:15:17 1.2 +++ loncom/html/res/adm/pages/annotator/admannotations.pm 2007/04/24 23:26:26 1.27 @@ -1,127 +1,229 @@ -#!/usr/bin/perl -T -# +# The LearningOnline Network with CAPA # This will take annotations and then plug them into a page. # -# 08/25/00 Ben Tyszka +# $Id: admannotations.pm,v 1.27 2007/04/24 23:26:26 albertel 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 CGI qw(:all); use Apache::Constants qw(:common); +use Apache::loncommon(); use Apache::lonnet; - -########################## -# -# The following are fake get and put functions. -# DELETE the following get and put functions and edit the calls -# once the module is working. -# -# -#sub get { -# return "This is a sample annotation/n hopefully it'll look nice on the screen"; -#} -# -#sub put { -# return; -#} -# -# -# DELETE everything within this comment block -# -########################## +use Apache::lonlocal; # --------------------------------------------------------------Put annotation sub write_annotation { - my $url_old=shift; - my $annotation=@_; - Apache::lonnet::put("annotations",($url_old => $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 $url_new=shift; - my %annotation=Apache::lonnet::get("annotations",($url_new)); - 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 < - -Annotations - - - -@delete_this are the keys for the hash
$url_new is the new URL
$annot_hash{$url_new} is the new annotation
-
-
- - - - - -
- - +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 } -# ----------------------------------------------------------------Main Handler +# ----------------------------------------------------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 +} + +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; - my $url_old; - my $annotation; - $r->content_type('text/html'); + my ($r) = @_; + + &Apache::loncommon::content_type($r,'text/html'); $r->send_http_header; - if ($url_old=param("url_old")) { - $annotation=param("annotation"); - write_annotation($url_old,$annotation); - } - if (my $url_new=param("url_new")) { -# my %annot_hash; -# $r->print("$url_new \n"); #debug line -# $r->print($url_old); #debug line -# $r->print("<--the url_new
\n"); #debug line -# $r->print($annotation); #debug line -# $r->print("<--first annotation
\n"); #debug line -# Apache::lonnet::put("annotations",($url_new => $annotation)); #debug line -# my %annot_hash=Apache::lonnet::get("annotations",($url_new)); #debug line -# $r->print( keys(%phony_var)); #debug line -# $r->print(" = are the keys
\n"); #debug line -# $r->print("$phony_var{$url_new} = $url_new"); #debug line -# $r->print("<--test put-get
\n"); #debug line -# $r->print($annotation); #debug line -# $r->print("<--annotation
\n"); #debug line -# unless ($url_old eq $url_new) { - my %annot_hash=get_annotation($url_new); -# } -# $r->print($annotation); #debug line -# $r->print("<--annotation again
\n"); #debug line - my $page=construct_editor($url_new,%annot_hash); - $r->print($page); + return OK if $r->header_only; + + + my $page; + + 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 ($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=&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__ +