1: # The LearningOnline Network
2: # Simple Problem Parameter Setting "Editor"
3: #
4: # $Id: lonsimpleproblemedit.pm,v 1.1 2003/07/07 07:32:16 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:
29: package Apache::lonsimpleproblemedit;
30:
31: use strict;
32: use Apache::Constants qw(:common :http);
33: use Apache::loncommon;
34: use Apache::lonnet;
35:
36: sub questiontext {
37: my $text=shift;
38: return (<<ENDQUESTION);
39: <table bgcolor="#dddd22" cellspacing="4" cellpadding="2">
40: <tr><td><b>Question Text</b><br />
41: <textarea name="questiontext" cols="80" rows="8">$text</textarea>
42: </td></tr>
43: </table>
44: <br />
45: ENDQUESTION
46: }
47:
48: sub hint {
49: my $text=shift;
50: return (<<ENDHINT);
51: <table bgcolor="#accacc" cellspacing="4" cellpadding="2">
52: <tr><td><b>Hint Text</b><br />
53: <textarea name="hinttext" cols="80" rows="4">$text</textarea>
54: </td></tr>
55: </table>
56: <br />
57: ENDHINT
58: }
59:
60: sub foil {
61: my ($number,$value,$position,$text,%values)=@_;
62: $values{'unused'}='Not shown, not used';
63: unless (defined($value)) { $value='unused'; }
64: unless ($values{$value}) { $value='unused'; }
65: my %positions=('random' => 'Random position',
66: 'top' => 'Show always at top position',
67: 'bottom' => 'Show always at bottom position');
68: unless (defined($position)) { $position='random'; }
69: unless ($positions{$position}) {
70: $position='random';
71: }
72: my $selectvalue=&Apache::loncommon::select_form
73: ($value,'value'.$number,%values);
74: my $selectposition=&Apache::loncommon::select_form
75: ($position,'position'.$number,%positions);
76: return (<<ENDFOIL);
77: <table bgcolor="#dd55ff" cellspacing="4" cellpadding="2">
78: <tr><td colspan="2"><b>Foil</b></td></tr>
79: <tr><td>Value: $selectvalue</td><td>Position: $selectposition</td></tr>
80: <tr><td colspan="2">Text:<br />
81: <textarea name="text$number" cols="80" rows="4">$text</textarea>
82: </td></tr>
83: </table>
84: <br />
85: ENDFOIL
86: }
87:
88: sub handler {
89: my $r = shift;
90:
91: if ($r->header_only) {
92: $r->content_type('text/html');
93: $r->send_http_header;
94: return OK;
95: }
96:
97: # -------------------------------------------------------------------- Allowed?
98: unless (&Apache::lonnet::allowed('srm',$ENV{'request.course.id'})) {
99: return HTTP_NOT_ACCEPTABLE;
100: }
101: # ----------------------------------------------------------------- Send header
102: $r->content_type('text/html');
103: $r->send_http_header;
104: # ----------------------------------------------------- Figure out where we are
105: my $uri=$r->uri;
106: $uri=~s/\/smpedit$//;
107: my $symb=&Apache::lonnet::symbread($uri);
108:
109: # ---------------------------------------------------------- Anything to store?
110:
111: if (($symb) && ($ENV{'form.storeproblem'})) {
112: my %storecontent=();
113: undef %storecontent;
114: foreach (keys %ENV) {
115: if ($_=~/^form\.(\w+)$/) {
116: my $spnam=$1;
117: my $symbparm=$symb.'.'.$spnam;
118:
119: my $courselevelr=$ENV{'request.course.id'}.'.'.$symbparm;
120:
121: $storecontent{$courselevelr}=$ENV{'form.'.$spnam};;
122: }
123: }
124: my $reply=&Apache::lonnet::cput
125: ('resourcedata',\%storecontent,
126: $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
127: $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
128:
129: }
130: # ------------------------------------------------------------ Print the screen
131: $r->print(<<ENDDOCUMENT);
132: <html>
133: <head>
134: <title>The LearningOnline Network with CAPA</title>
135: ENDDOCUMENT
136: $r->print(&Apache::loncommon::bodytag('Simple Problem Editor'));
137: if ($symb) {
138: $r->print('<h1>'.&Apache::lonnet::gettitle($symb).'</h1>');
139: #
140: #
141: $r->print(&questiontext('What color?').
142: &foil(3,'green','bottom','Tomato',
143: ('green'=>'green','red'=>'red')).
144: &hint('This is the hint.'));
145: #
146: #
147:
148: } else {
149: $r->print('Could not identify problem.');
150: }
151: $r->print('</body></html>');
152: return OK;
153: }
154:
155: 1;
156: __END__
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>