--- loncom/html/res/adm/pages/annotator/admannotations.pm 2000/09/22 22:43:18 1.7 +++ loncom/html/res/adm/pages/annotator/admannotations.pm 2021/12/24 00:48:31 1.37 @@ -1,144 +1,283 @@ -#!/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.37 2021/12/24 00:48:31 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 CGI qw(:all); use Apache::Constants qw(:common); +use Apache::loncommon(); use Apache::lonnet; +use Apache::lonlocal; # --------------------------------------------------------------Put annotation sub write_annotation { - my $url_old=shift; - my $annotation=shift; - Apache::lonnet::put("annotations",($url_old => $annotation)); - return; -} + my ($symb, $enc, $annotation) = @_; -# --------------------------------------------------------------Get annotation + $annotation=~s/^\s*$//; + my $key = $symb; + if (!$enc) { + $key = + &Apache::lonnet::clutter((&Apache::lonnet::decode_symb($symb))[2]); + } -sub get_annotation { - my $url_new=shift; - my %annotation=Apache::lonnet::get("annotations",($url_new)); - return %annotation; + &Apache::lonnet::put('nohist_annotations',{$key => $annotation}); + return; } + # ------------------------------------------------------------Construct editor +sub js_get_symb { + return < - -Annotations - - - +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(); + + + return(< -
-
- - - - -
+
+
+ + + + +
- - +$end_page END_HTML } # ----------------------------------------------------Constructs error window sub construct_error { - my $annot_error=shift; - my $button_name=shift; - return(< -Annotations - - - +ENDJS + + my $start_page = &Apache::loncommon::start_page('Annotations',$js, + {'only_body' => 1,}); + my $end_page = &Apache::loncommon::end_page(); + + my %lt = &Apache::lonlocal::texthash( + 'close' => 'Close', + 'button' => $button_name, + ); + + return(< -
+
- + $annot_error - +
- - - - -
+ + + + + - - +$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 { - my $r=shift; - my $url_old; - my $annotation; - my $page; - my $url_new; - my %annot_hash; - $r->content_type('text/html'); - $r->send_http_header; - if ($url_old=param("url_old")) { - $annotation=param("annotation"); - write_annotation($url_old,$annotation); - } - if (defined(param("url_new"))) { - $url_new=param("url_new"); - if ($url_new eq "") { - $page=construct_error("Cannot annotate current window. Please point your browser to a Lon-CAPA page and then 'continue'.","coninue"); - } else { - if ($url_old eq $url_new) { - %annot_hash=($url_new => $annotation); - } else { - %annot_hash=get_annotation($url_new); - } - if (exists($annot_hash{"con_lost"})) { - $page=construct_error("Connection broken with home server. Please contact your system administrator.","try again"); - } else { - $page=construct_editor($url_new,%annot_hash); - } + my ($r) = @_; + + &Apache::loncommon::content_type($r,'text/html'); + $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 ($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); - } else { - $page=construct_error("Cannot annotate current window. Please point your browser to a Lon-CAPA page and then 'continue'.","coninue"); - $r->print($page); - } - return OK; + return OK; } 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 + +