--- loncom/homework/caparesponse/caparesponse.pm 2004/03/16 19:47:47 1.143
+++ loncom/homework/caparesponse/caparesponse.pm 2004/06/04 22:56:45 1.147
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# caparesponse definition
#
-# $Id: caparesponse.pm,v 1.143 2004/03/16 19:47:47 albertel Exp $
+# $Id: caparesponse.pm,v 1.147 2004/06/04 22:56:45 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -86,6 +86,39 @@ sub start_numericalresponse {
$safeeval);
if ($unit =~ /\S/) { $result.=" (in $unit) "; }
}
+ if ( &Apache::response::show_answer() ) {
+ my $answertxt;
+ my (@answers)=&Apache::lonxml::get_param_var('answer',$parstack,
+ $safeeval);
+ my (@formats)=&Apache::lonxml::get_param_var('format',$parstack,
+ $safeeval);
+ my $unit=&Apache::lonxml::get_param_var('unit',$parstack,
+ $safeeval);
+ for (my $i=0; $i <= $#answers; $i++) {
+ my $answer=$answers[$i];
+ my $format;
+ if ($#formats > 0) {
+ $format=$formats[$i];
+ } else {
+ $format=$formats[0];
+ }
+ my $formatted;
+ if ((defined($format)) && ($format ne '')) {
+ $format=~s/e/E/g;
+ &Apache::lonxml::debug("formatting with :$format: answer :$answer:");
+ $formatted=sprintf('%.'.$format,$answer).',';
+ } else {
+ &Apache::lonxml::debug("no format answer :$answer:");
+ $formatted="$answer,";
+ }
+ $answertxt.=$formatted;
+ }
+ chop $answertxt;
+ if ($target eq 'web') {
+ $answertxt.=" $unit.
";
+ }
+ $Apache::inputtags::answertxt{$id}=$answertxt;
+ }
}
return $result;
}
@@ -185,42 +218,6 @@ sub end_numericalresponse {
$safeeval);
my $award = $Apache::lonhomework::history{"resource.$Apache::inputtags::part.solved"};
my $status = $Apache::inputtags::status['-1'];
- if ( &Apache::response::show_answer() ) {
- my (@formats)=&Apache::lonxml::get_param_var('format',$parstack,
- $safeeval);
- my $unit=&Apache::lonxml::get_param_var('unit',$parstack,
- $safeeval);
- if ($target eq 'web') {
- $result="
".&mt('The correct answer is')." ";
- }
- for (my $i=0; $i <= $#answers; $i++) {
- my $answer=$answers[$i];
- my $format;
- if ($#formats > 0) {
- $format=$formats[$i];
- } else {
- $format=$formats[0];
- }
- my $formatted;
- if ((defined($format)) && ($format ne '')) {
- $format=~s/e/E/g;
- &Apache::lonxml::debug("formatting with :$format: answer :$answer:");
- $formatted=sprintf('%.'.$format,$answer).',';
- } else {
- &Apache::lonxml::debug("no format answer :$answer:");
- $formatted="$answer,";
- }
- if ($target eq 'tex') {
- $formatted='';
- #$formatted=&Apache::lonxml::latex_special_symbols($formatted);
- }
- $result.=$formatted;
- }
- chop $result;
- if ($target eq 'web') {
- $result.=" $unit.
";
- }
- }
if ($Apache::lonhomework::type eq 'exam') {
my $partid=$Apache::inputtags::part;
my $id=$Apache::inputtags::response[-1];
@@ -271,7 +268,7 @@ sub end_numericalresponse {
my $cou=0;
$result.='\vskip -1 mm \noindent \begin{enumerate}\item[\textbf{'.$Apache::lonxml::counter.'}.]';
for (my $i=0;$i<$number_of_tables;$i++) {
- $result.='\vskip -1 mm \noindent \begin{tabular}{';
+ $result.='\vskip -1 mm \noindent \setlength{\tabcolsep}{2 mm}\begin{tabular}{';
for (my $ind=0;$ind<$table_range[$j];$ind++) {
$result.='p{3 mm}p{'.$celllength.' mm}';
}
@@ -341,7 +338,7 @@ sub end_numericalresponse {
}
if ($target eq 'answer') {
if ($high && $tag eq 'numericalresponse') { $ans.=' ['.$low.','.$high.']'; }
- if ($sighigh && $tag eq 'numericalresponse') {
+ if (defined($sighigh) && $tag eq 'numericalresponse') {
if ($ENV{'form.answer_output_mode'} eq 'tex') {
$ans.= " Sig $siglow - $sighigh";
} else {
@@ -520,6 +517,10 @@ sub get_tolrange {
sub get_sigrange {
my ($sig)=@_;
&Apache::lonxml::debug("Got a sig of :$sig:");
+ my $courseid=$ENV{'request.course.id'};
+ if (lc($ENV{"course.$courseid.disablesigfigs"}) eq 'yes') {
+ return (15,0);
+ }
my $sig_lbound;
my $sig_ubound;
if ($sig eq '') {
@@ -527,11 +528,11 @@ sub get_sigrange {
$sig_ubound =15; #SIG_UB_DEFAULT
} else {
($sig_lbound,$sig_ubound) = split(/,/,$sig);
- if (!$sig_lbound) {
+ if (!defined($sig_lbound)) {
$sig_lbound = 0; #SIG_LB_DEFAULT
$sig_ubound =15; #SIG_UB_DEFAULT
}
- if (!$sig_ubound) { $sig_ubound=$sig_lbound; }
+ if (!defined($sig_ubound)) { $sig_ubound=$sig_lbound; }
}
if (($sig_ubound<$sig_lbound) ||
($sig_lbound > 15) ||
@@ -561,18 +562,21 @@ sub start_stringresponse {
[['cs','Case Sensitive'],['ci','Case Insensitive'],
['mc','Case Insensitive, Any Order'],
['re','Regular Expression']],$token);
- $result.=&Apache::edit::checked_arg('Answer Display:','answerdisplay',
- [['inline','Inline']],$token);
$result.=&Apache::edit::end_row().&Apache::edit::start_spanning_row();
} elsif ($target eq 'modified') {
- my $constructtag;
- $constructtag=&Apache::edit::get_new_args($token,$parstack,
- $safeeval,'answer',
- 'type','answerdisplay');
- if ($constructtag) {
- $result = &Apache::edit::rebuild_tag($token);
- $result.=&Apache::edit::handle_insert();
- }
+ my $constructtag;
+ $constructtag=&Apache::edit::get_new_args($token,$parstack,
+ $safeeval,'answer',
+ 'type','answerdisplay');
+ if ($constructtag) {
+ $result = &Apache::edit::rebuild_tag($token);
+ $result.=&Apache::edit::handle_insert();
+ }
+ } elsif ($target eq 'web') {
+ if ( &Apache::response::show_answer() ) {
+ $Apache::inputtags::answertxt{$id}=
+ &Apache::lonxml::get_param('answer',$parstack,$safeeval);
+ }
} elsif ($target eq 'answer' || $target eq 'grade') {
&Apache::response::reset_params();
}
@@ -648,13 +652,6 @@ sub end_stringresponse {
} elsif ($target eq 'web' || $target eq 'tex') {
my $award = $Apache::lonhomework::history{"resource.$Apache::inputtags::part.solved"};
my $status = $Apache::inputtags::status['-1'];
- if ( &Apache::response::show_answer() ) {
- if ($target eq 'web') {
- $result=($answerdisplay eq 'inline'?'':"
".&mt('The correct answer is')." ")
- .$answer;
-# join(', ',@answers).".
";
- }
- }
if ($Apache::lonhomework::type eq 'exam' && $target eq 'tex') {
$result.='\fbox{\fbox{\parbox{\textwidth-5mm}{\strut\\\\\strut\\\\\strut\\\\\strut\\\\}}}';
$increment = &Apache::response::repetition();