[LON-CAPA-cvs] cvs: loncom(version_2_9_X) /homework lonsimpleproblemedit.pm
raeburn
raeburn@source.lon-capa.org
Wed, 27 Jan 2010 20:38:08 -0000
raeburn Wed Jan 27 20:38:08 2010 EDT
Modified files: (Branch: version_2_9_X)
/loncom/homework lonsimpleproblemedit.pm
Log:
- Backport 1.24, 1.25, 1.26, 1.27.
Index: loncom/homework/lonsimpleproblemedit.pm
diff -u loncom/homework/lonsimpleproblemedit.pm:1.20.2.1 loncom/homework/lonsimpleproblemedit.pm:1.20.2.2
--- loncom/homework/lonsimpleproblemedit.pm:1.20.2.1 Wed Aug 12 21:22:40 2009
+++ loncom/homework/lonsimpleproblemedit.pm Wed Jan 27 20:38:08 2010
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Simple Problem Parameter Setting "Editor"
#
-# $Id: lonsimpleproblemedit.pm,v 1.20.2.1 2009/08/12 21:22:40 raeburn Exp $
+# $Id: lonsimpleproblemedit.pm,v 1.20.2.2 2010/01/27 20:38:08 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -95,6 +95,19 @@
ENDHINT
}
+sub script {
+ my $text=$qparms{$prefix.'numericalscript'};
+ my $ht=&mt('Scripting (optional)');
+ return (<<ENDSCRIPT);
+<table bgcolor="#ccccaa" cellspacing="4" cellpadding="2">
+<tr><td><b>$ht</b><br />
+<textarea style="width:100%" name="numericalscript" cols="80" rows="4">$text</textarea>
+</td></tr>
+</table>
+<br />
+ENDSCRIPT
+}
+
sub foil {
my $number=shift;
my %values='';
@@ -178,6 +191,8 @@
# ------------------------------------------------ Prefix for everything stored
$prefix=$env{'request.course.id'}.'.'.$symb.'.0.';
+#----------------------------------- Prefix for storing weight of Problem Parts
+ my $weightprefix=$env{'request.course.id'}.'.'.$symb.'.';
# ---------------------------------------------------------- Anything to store?
if (($symb) && (defined($env{'form.questiontype'}))) {
@@ -203,12 +218,24 @@
$storecontent{$prefix.$parm}=~s/\s+$//s;
}
}
+# ---------------------------------------------------- Set weights of hidden parts to zero
+# ------------------------------------------------------ and used part to 1
+ $storecontent{$weightprefix.'essay.weight'}=0;
+ $storecontent{$weightprefix.'numerical.weight'}=0;
+ $storecontent{$weightprefix.'option.weight'}=0;
+ $storecontent{$weightprefix.'radio.weight'}=0;
+ $storecontent{$weightprefix.'string.weight'}=0;
+ $storecontent{$weightprefix.$env{'form.questiontype'}.'.weight'}=1;
+
my $reply=&Apache::lonnet::cput
('resourcedata',\%storecontent,
$env{'course.'.$env{'request.course.id'}.'.domain'},
$env{'course.'.$env{'request.course.id'}.'.num'});
-
}
+
+ &Apache::lonnet::devalidatecourseresdata(
+ $env{'course.'.$env{'request.course.id'}.'.num'},
+ $env{'course.'.$env{'request.course.id'}.'.domain'});
# ------------------------------------------------------------------- Read Data
%qparms=&Apache::lonnet::dump('resourcedata',
@@ -240,7 +267,9 @@
'1 out of N multiple choice (radio button)',
'option' => 'Option response',
'string' => 'Short string response',
- 'essay' => 'Essay, open end');
+ 'essay' => 'Essay, open end',
+ 'numerical' => 'Numerical response');
+
$qtype=$qparms{$prefix.'questiontype'};
unless (defined($qtype)) { $qtype='radio'; }
unless ($questiontypes{$qtype}) { $qtype='radio'; }
@@ -249,6 +278,10 @@
($qtype,'questiontype',%questiontypes).
'</b><br /><input type="submit" value="'.&mt('Save and Edit').
'" /><p> </p>');
+# Script
+ if ($qtype eq 'numerical') {
+ $r->print(&script());
+ }
# Question Text
$r->print(&questiontext());
# Radio, Option ===
@@ -310,13 +343,31 @@
unless ($stringtypes{$stringtype}) { $stringtype='cs'; }
$r->print(
'<table bgcolor="#00ee44" cellspacing="4" cellpadding="2">'.
- '<tr><td>'.&mt('Correct answer').': <input type="text" size="20" name="stringanswer" value="'.$stringanswer.'" /> '.
+ '<tr><td><label>'.&mt('Correct answer').': <input type="text" size="20" name="stringanswer" value="'.$stringanswer.'" /></label> '.
&Apache::loncommon::select_form
($stringtype,'stringtype',%stringtypes).
'</td></tr></table><br />');
# Hint
$r->print(&hint());
}
+ if ($qtype eq 'numerical') {
+ my $numericalanswer=$qparms{$prefix.'numericalanswer'};
+ unless (defined($numericalanswer)) { $numericalanswer=''; }
+ my $numericaltolerance=$qparms{$prefix.'numericaltolerance'};
+ unless (defined($numericaltolerance)) { $numericaltolerance='5%'; }
+ my $numericalsigfigs=$qparms{$prefix.'numericalsigfigs'};
+ unless (defined($numericalsigfigs)) { $numericalsigfigs='1,15'; }
+
+ $r->print(
+ '<table bgcolor="#00ee44" cellspacing="4" cellpadding="2">'.
+ '<tr><td><label>'.&mt('Correct answer').': <input type="text" size="20" name="numericalanswer" value="'.$numericalanswer.'" /></label> '.
+ '<label>'.&mt('Unit').': <input type="text" size="5" name="numericalunit" value="'.$qparms{$prefix.'numericalunit'}.'" /></label> '.
+ '<label>'.&mt('Format').': <input type="text" size="5" name="numericalformat" value="'.$qparms{$prefix.'numericalformat'}.'" /></label> '.
+ '<label>'.&mt('Tolerance').': <input type="text" size="5" name="numericaltolerance" value="'.$numericaltolerance.'" /></label> '.
+ '<label>'.&mt('Significant digits').': <input type="text" size="5" name="numericalsigfigs" value="'.$numericalsigfigs.'" /></label>'.
+ '</td></tr></table><br />');
+ $r->print(&hint());
+ }
# Store Button
$r->print(
'<input type="submit" value="'.&mt('Save and Edit').'" /></form>');