Annotation of loncom/html/res/adm/pages/annotator/admannotations.pm, revision 1.16
1.1 tyszkabe 1: #
2: # This will take annotations and then plug them into a page.
3: #
4: # 08/25/00 Ben Tyszka
5: #
1.14 www 6: # 10/17,10/18,10/20 Gerd Kortemeyer
1.1 tyszkabe 7: #
8: #
9: ##################
10:
1.2 tyszkabe 11: package Apache::admannotations;
1.1 tyszkabe 12:
13: use strict;
14: use Apache::Constants qw(:common);
1.8 tyszkabe 15: use Apache::lonnet();
1.1 tyszkabe 16:
17: # --------------------------------------------------------------Put annotation
18:
19: sub write_annotation {
1.11 www 20: my $urlold=shift;
1.4 tyszkabe 21: my $annotation=shift;
1.11 www 22: if ($annotation) {
1.16 ! albertel 23: &Apache::lonnet::put('nohist_annotations',{$urlold => $annotation});
1.11 www 24: }
1.1 tyszkabe 25: return;
26: }
27:
28: # --------------------------------------------------------------Get annotation
29:
30: sub get_annotation {
1.8 tyszkabe 31: my $urlnew=shift;
1.15 albertel 32: my %annotation=&Apache::lonnet::get('nohist_annotations',[$urlnew]);
1.9 tyszkabe 33: return %annotation;
1.1 tyszkabe 34: }
35:
36: # ------------------------------------------------------------Construct editor
37:
38: sub construct_editor {
1.8 tyszkabe 39: my $annotation=shift;
1.13 www 40: if ($annotation=~/^error:/) { $annotation=''; }
1.8 tyszkabe 41: my $urlnew=shift;
1.5 tyszkabe 42: return(<<END_HTML)
1.2 tyszkabe 43: <html>
44: <head>
45: <title>Annotations</title>
1.12 www 46: <script>
47: var timeout;
48:
49: function changed() {
50: var urlnew=window.opener.clientwindow.location.href;
51: if (urlnew!=document.annotInfo.urlold.value) {
52: document.annotInfo.urlnew.value=urlnew;
53: document.annotInfo.submit();
54: }
55: timeout=setTimeout('changed();','1000');
1.2 tyszkabe 56: }
1.1 tyszkabe 57: </script>
1.2 tyszkabe 58: </head>
1.12 www 59: <body BGCOLOR="#555555"
60: onLoad="timeout=setTimeout('changed()','1000')"
61: onUnload='clearTimeout(timeout);'>
1.5 tyszkabe 62: <center>
1.12 www 63: <FORM name="annotInfo" method="post" action="/adm/annotations">
1.8 tyszkabe 64: <TEXTAREA NAME="annotation" WRAP=ON ROWS=12 COLS=36>$annotation</TEXTAREA><br>
1.12 www 65: <INPUT TYPE="hidden" name="urlold" value="$urlnew">
1.8 tyszkabe 66: <INPUT TYPE="hidden" name="urlnew" value="">
1.12 www 67: <INPUT TYPE=button name=send value="Save and Update"
68: onClick=
69: "javascript:this.form.urlnew.value=window.opener.clientwindow.location.href;this.form.submit();">
70: <INPUT TYPE=button name="close" value="Close (no save)" onClick="javascript:window.close();">
1.5 tyszkabe 71: </FORM>
72: </center>
1.2 tyszkabe 73: </body>
74: </html>
1.1 tyszkabe 75: END_HTML
76: }
77:
1.7 tyszkabe 78: # ----------------------------------------------------Constructs error window
1.5 tyszkabe 79:
1.6 tyszkabe 80: sub construct_error {
81: my $annot_error=shift;
82: my $button_name=shift;
1.5 tyszkabe 83: return(<<END_HTML2)
84: <html><head>
85: <title>Annotations</title>
86: </head>
1.11 www 87: <body BGCOLOR="#555555">
1.5 tyszkabe 88: <center>
1.12 www 89: <FORM name="annotInfo" method="post" action="/adm/annotations">
1.6 tyszkabe 90: <table bgcolor="#FFFFFF" width="100%" height="90%" align="center">
1.5 tyszkabe 91: <td>
1.12 www 92: <font size=+1><i>
1.6 tyszkabe 93: $annot_error
1.12 www 94: </i></font>
1.5 tyszkabe 95: </td>
96: </table>
1.12 www 97: <INPUT TYPE="hidden" name="urlold" value="">
1.8 tyszkabe 98: <INPUT TYPE="hidden" name="urlnew" value="">
1.12 www 99: <INPUT TYPE=button name=send value="$button_name"
100: onClick=
101: "javascript:this.form.urlnew.value=window.opener.clientwindow.location.href;this.form.submit();">
102: <INPUT TYPE=button name="close" value="Close" onClick="javascript:window.close();">
1.5 tyszkabe 103: </FORM>
104: </center>
105: </body>
106: </html>
107: END_HTML2
108: }
109:
1.7 tyszkabe 110: # ---------------------------------------------------------------Main Handler
1.1 tyszkabe 111:
112: sub handler {
1.5 tyszkabe 113: my $r=shift;
1.11 www 114:
115: $r->content_type('text/html');
116: $r->send_http_header;
117: return OK if $r->header_only;
118:
119:
1.8 tyszkabe 120: my $page;
1.9 tyszkabe 121: my %annot_hash;
1.12 www 122:
123: my $urlold=$ENV{'form.urlold'};
124: $urlold=~s/^http\:\/\///;
125: $urlold=~s/^[^\/]+//;
126: my $urlnew=$ENV{'form.urlnew'};
127: $urlnew=~s/^http\:\/\///;
128: $urlnew=~s/^[^\/]+//;
129: my $annotation=$ENV{'form.annotation'};
130:
131: if ($urlold) {
1.8 tyszkabe 132: write_annotation($urlold,$annotation);
1.5 tyszkabe 133: }
1.8 tyszkabe 134: if (exists($ENV{'form.urlnew'})) {
1.12 www 135: unless ($urlnew) {
136: $page=construct_error("Cannot annotate current window. Please point your browser to a LON-CAPA page and then 'continue'.","continue");
1.7 tyszkabe 137: } else {
1.8 tyszkabe 138: if ($urlold eq $urlnew) {
1.9 tyszkabe 139: $annot_hash{$urlnew}=$annotation;
1.8 tyszkabe 140: } else {
1.9 tyszkabe 141: %annot_hash=get_annotation($urlnew);
1.8 tyszkabe 142: }
1.12 www 143: $page=construct_editor($annot_hash{$urlnew},$ENV{'form.urlnew'});
1.7 tyszkabe 144: }
1.5 tyszkabe 145: }
1.8 tyszkabe 146: $r->print($page);
1.5 tyszkabe 147: return OK;
1.1 tyszkabe 148: }
149:
150: 1;
151: __END__
1.8 tyszkabe 152:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>