1: # The LearningOnline Network with CAPA
2: # Edit Handler for RAT Maps
3: #
4: # $Id: lonratedt.pm,v 1.6 2002/05/09 21:59:33 www Exp $
5: #
6: # Copyright Michigan State University Board of Trustees
7: #
8: # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
9: #
10: # LON-CAPA is free software; you can redistribute it and/or modify
11: # it under the terms of the GNU General Public License as published by
12: # the Free Software Foundation; either version 2 of the License, or
13: # (at your option) any later version.
14: #
15: # LON-CAPA is distributed in the hope that it will be useful,
16: # but WITHOUT ANY WARRANTY; without even the implied warranty of
17: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18: # GNU General Public License for more details.
19: #
20: # You should have received a copy of the GNU General Public License
21: # along with LON-CAPA; if not, write to the Free Software
22: # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23: #
24: # /home/httpd/html/adm/gpl.txt
25: #
26: # http://www.lon-capa.org/
27: #
28: # (TeX Content Handler
29: #
30: # 05/29/00,05/30 Gerd Kortemeyer)
31: # 7/1,6/30 Gerd Kortemeyer
32:
33: package Apache::lonratedt;
34:
35: use strict;
36: use Apache::Constants qw(:common);
37: use Apache::lonnet;
38:
39: # --------------------------------------------------------- Build up RAT screen
40: sub ratedt {
41: my ($r,$url)=@_;
42: $r->print(<<ENDDOCUMENT);
43:
44: <html>
45: <head>
46: <script language="JavaScript">
47: var flag=0;
48: </script>
49: </head>
50: <frameset rows="1,50,*" border=0>
51: <frame name=server src="$url/loadonly/ratserver" noresize noscroll>
52: <frame name=code src="/adm/rat/code.html">
53: <frame name=mapout src="/adm/rat/map.html">
54: </frameset>
55: </html>
56:
57: ENDDOCUMENT
58: }
59:
60: sub smpedt {
61: my ($r,$fn)=@_;
62: $r->print(<<ENDSMPHEAD);
63: <html>
64: <head>
65: <script>
66: var srch;
67: var srchflag=-1; // 1 means currently open
68: // 0 means closed (but has been open)
69: // -1 means never yet opened/defined
70: var srchmode='';
71:
72: var idx;
73: var idxflag=-1; // 1 means currently open
74: // 0 means closed (but has been open)
75: // -1 means never yet opened/defined
76: var idxmode='';
77:
78: // ------------------------------------------------------ Clears indexer window
79: function idxclear() {
80: idx.document.clear();
81: }
82:
83: // ------------------------------------------------------- Clears search window
84: function srchclear() {
85: srch.document.clear();
86: }
87:
88: // ------------------------------------------------------ Closes indexer window
89: function idxclose() {
90: if (idx && !idx.closed) {
91: idxflag=0;
92: idx.close();
93: }
94: }
95:
96: // ------------------------------------------------------- Closes search window
97: function srchclose() {
98: if (srch && !srch.closed) {
99: srchflag=0;
100: srch.close();
101: }
102: }
103:
104: // -------------------------------------------------------- Open indexer window
105: function idxopen(mode) {
106: var options="scrollbars=1,resizable=1,menubar=0";
107: idxmode=mode;
108: idxflag=1;
109: idx=open("/res/?launch=1&mode=simple&catalogmode="+mode,"idxout",options);
110: idx.focus();
111: }
112:
113: // --------------------------------------------------------- Open search window
114: function srchopen(mode) {
115: var options="scrollbars=1,resizable=1,menubar=0";
116: srchmode=mode;
117: srchflag=1;
118: srch=open("/adm/searchcat?launch=1&mode=simple&catalogmode="+mode,"srchout",options);
119: srch.focus();
120: }
121: // ----------------------------------------------------- launch indexer browser
122: function groupsearch() {
123: srchcheck('groupsearch');
124: }
125:
126: function groupimport() {
127: idxcheck('groupimport');
128: }
129: // ------------------------------------------------------- Do srch status check
130: function srchcheck(mode) {
131: if (!srch || srch.closed || srchmode!=mode) {
132: srchopen(mode);
133: }
134: srch.focus();
135: }
136:
137: // -------------------------------------------------------- Do idx status check
138: function idxcheck(mode) {
139: if (!idx || idx.closed || idxmode!=mode) {
140: idxopen(mode);
141: }
142: idx.focus();
143: }
144: </script>
145: </head>
146: <body bgcolor='#FFFFFF'>
147: <form method=post>
148: <input type=submit name=forceadv
149: value="Advanced Map Editing - Graphical Resource Assembly Tool"><hr>
150: This is the future site of the great simple RAT
151: <a href="javascript:groupsearch()">Group Search</a>
152: <a href="javascript:groupimport()">Group Import</a>
153:
154: ENDSMPHEAD
155:
156: $r->print(
157: '<input type=submit name=forcesmp value="Store"></form></body></html>');
158: }
159:
160: sub nodir {
161: my ($r,$dir)=@_;
162: $dir=~s/^\/home\/\w+\/public\_html//;
163: $r->print(<<ENDNODIR);
164: <html>
165: <body bgcolor='#FFFFFF'>
166: <h1>No such directory: $dir</h1>
167: </body>
168: </html>
169: ENDNODIR
170: }
171:
172: # ================================================================ Main Handler
173:
174: sub handler {
175: my $r=shift;
176: $r->content_type('text/html');
177: $r->send_http_header;
178:
179: return OK if $r->header_only;
180:
181: my $url=$r->uri;
182: my $fn=&Apache::lonnet::filelocation('',$url);
183:
184: my ($dir)=($fn=~/^(.+)\/[^\/]+$/);
185: unless (-e $dir) {
186: &nodir($r,$dir);
187: return OK;
188: }
189: my $adv=0;
190:
191: unless ($ENV{'form.forcesmp'}) {
192: if ($ENV{'form.forceadv'}) {
193: $adv=1;
194: } elsif (my $fh=Apache::File->new($fn)) {
195: my $allmap=join('',<$fh>);
196: $adv=($allmap=~/\<map[^\>]+mode\s*\=\s*(\'|\")rat/is);
197: }
198: }
199:
200: if ($adv) {
201: &ratedt($r,$url);
202: } else {
203: &smpedt($r,$fn);
204: }
205: return OK;
206: }
207:
208: 1;
209: __END__
210:
211:
212:
213:
214:
215:
216:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>