--- loncom/homework/caparesponse/caparesponse.pm 2003/05/13 15:27:45 1.98 +++ loncom/homework/caparesponse/caparesponse.pm 2003/06/24 20:41:56 1.105 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # caparesponse definition # -# $Id: caparesponse.pm,v 1.98 2003/05/13 15:27:45 sakharuk Exp $ +# $Id: caparesponse.pm,v 1.105 2003/06/24 20:41:56 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -150,6 +150,10 @@ sub end_numericalresponse { $expression.=';my $type="float";'; } $expression.="');"; + my @answer=&Apache::lonxml::get_param_var('answer',$parstack,$safeeval); + &Apache::lonxml::debug('answer is'.join(':',@answer)); + @{$safeeval->varglob('CAPARESPONSE_CHECK_LIST_answer')}=@answer; + $result = &Apache::run::run($expression,$safeeval); my ($awards) = split /:/ , $result; ($ad) = &Apache::inputtags::finalizeawards(split /,/ , $awards); @@ -309,7 +313,7 @@ sub end_numericalresponse { if ($Apache::inputtags::params{'sig'}) { ($sighigh,$siglow)=&get_sigrange($Apache::inputtags::params{'sig'}); } - if ($fmt) { + if ($fmt && $$tagstack[-1] eq 'numericalresponse') { $ans = sprintf('%.'.$fmt,$ans); if ($high) { $high=sprintf('%.'.$fmt,$high); @@ -317,12 +321,12 @@ sub end_numericalresponse { } } if ($target eq 'answer') { - if ($high) { $ans.=' ['.$low.','.$high.']'; } - if ($sighigh) { - if ($ENV{'form.print_answer'} eq 'yes') { - $ans.= " Sig \\textit{$siglow - $sighigh}"; + if ($high && $$tagstack[-1] eq 'numericalresponse') { $ans.=' ['.$low.','.$high.']'; } + if ($sighigh && $$tagstack[-1] eq 'numericalresponse') { + if ($ENV{'form.answer_output_mode'} eq 'tex') { + $ans.= " Sig \\textit{$siglow - $sighigh}"; } else { - $ans.= " Sig $siglow - $sighigh"; + $ans.= " Sig $siglow - $sighigh"; } } $result.=&Apache::response::answer_part($$tagstack[-1],$ans); @@ -334,9 +338,10 @@ sub end_numericalresponse { } } } - if ($unit) { + if (defined($unit) and ($unit ne '') and + $$tagstack[-1] eq 'numericalresponse') { if ($target eq 'answer') { - if ($ENV{'form.print_answer'} eq 'yes') { + if ($ENV{'form.answer_output_mode'} eq 'tex') { $result.=&Apache::response::answer_part($$tagstack[-1], "Unit: \\verb|$unit|"); } else { @@ -344,11 +349,10 @@ sub end_numericalresponse { "Unit: $unit"); } } elsif ($target eq 'analyze') { - push (@{ $Apache::lonhomework::analyze{"$part_id.unit"} }, - $unit); + push (@{ $Apache::lonhomework::analyze{"$part_id.unit"} }, $unit); } } - if ($type || $token->[1] eq 'stringresponse') { + if ($type || $$tagstack[-1] eq 'stringresponse') { my $string='Case Insensitive'; if ($type eq 'mc') { $string='Multiple Choice'; @@ -360,10 +364,15 @@ sub end_numericalresponse { $string='Formula'; } if ($target eq 'answer') { - $result.=&Apache::response::answer_part($$tagstack[-1], - ''.$string.''); + if ($ENV{'form.answer_output_mode'} eq 'tex') { + $result.=&Apache::response::answer_part($$tagstack[-1], + "\\textbf{$string}"); + } else { + $result.=&Apache::response::answer_part($$tagstack[-1], + "$string"); + } } elsif ($target eq 'analyze') { - push (@{ $Apache::lonhomework::analyze{"$part_id.type"} }, + push (@{ $Apache::lonhomework::analyze{"$part_id.str_type"} }, $type); } } @@ -489,7 +498,9 @@ sub start_stringresponse { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; my $result; if ($target eq 'meta') { + &Apache::response::start_response($parstack,$safeeval); $result=&Apache::response::meta_package_write('stringresponse'); + &Apache::response::end_response(); } else { $result.=&start_numericalresponse(@_); } @@ -504,7 +515,9 @@ sub start_formularesponse { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; my $result; if ($target eq 'meta') { + &Apache::response::start_response($parstack,$safeeval); $result=&Apache::response::meta_package_write('formularesponse'); + &Apache::response::end_response(); } else { $result.=&start_numericalresponse(@_); }