--- loncom/homework/caparesponse/caparesponse.pm 2003/04/08 03:54:22 1.90
+++ loncom/homework/caparesponse/caparesponse.pm 2003/04/08 04:17:13 1.92
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# caparesponse definition
#
-# $Id: caparesponse.pm,v 1.90 2003/04/08 03:54:22 albertel Exp $
+# $Id: caparesponse.pm,v 1.92 2003/04/08 04:17:13 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -101,19 +101,28 @@ sub end_numericalresponse {
my %previous = &Apache::response::check_for_previous($response,$partid,$id);
$Apache::lonhomework::results{"resource.$partid.$id.submission"}=$response;
&Apache::lonxml::debug("submitted a $response
\n");
- &Apache::lonxml::debug($$parstack[$#$parstack] . "\n
");
+ &Apache::lonxml::debug($$parstack[-1] . "\n
");
if ($ENV{'form.submitted'} eq 'scantron') {
- &Apache::response::setrandomnumber();
- #FIXME the 8 here is based off of number of powers need a parameter
- my $ind=&Math::Random::random_uniform_integer(1,0,8);
- if ($ind eq $response) { $ad='CORRECT'; } else { $ad='INCORRECT'; }
+ my $number_of_bubbles = 8;#default values for number of bubbles
+ my (@formats)=&Apache::lonxml::get_param_var('format',
+ $parstack,$safeeval);
+ my (@answers)=&Apache::lonxml::get_param_var('answer',
+ $parstack,$safeeval);
+ my @values=&make_numerical_bubbles($number_of_bubbles,$target,
+ $answers[0],$formats[0]);
+ $response=$values[$response];
+ } else {
+ $response =~ s/\\/\\\\/g;
+ $response =~ s/\'/\\\'/g;
}
- $response =~ s/\\/\\\\/g;
- $response =~ s/\'/\\\'/g;
&Apache::lonxml::debug("current $response");
my $expression="&caparesponse_check_list('".$response."','".
$$parstack[-1];
+ #no way to enter units, with radio buttons
+ if ($Apache::lonhomework::type eq 'exam') {
+ $expression.=';my $unit=undef;';
+ }
foreach my $key (keys(%Apache::inputtags::params)) {
$expression.= ';my $'. #'
$key.'="'.$Apache::inputtags::params{$key}.'"';
@@ -143,7 +152,6 @@ sub end_numericalresponse {
$safeeval);
my $unit=&Apache::lonxml::get_param_var('unit',$parstack,
$safeeval);
-
if ($target eq 'web') {
$result="
The correct answer is ";
} elsif ($target eq 'tex') {
@@ -187,7 +195,8 @@ sub end_numericalresponse {
my $unit=&Apache::lonxml::get_param_var('unit',$parstack,
$safeeval);
my @bubble_values=&make_numerical_bubbles($number_of_bubbles,
- @answers);
+ $target,$answers[0],
+ $formats[0]);
my @alphabet=('A'..'Z');
my $id=$Apache::inputtags::response[-1];
if ($target eq 'web') {
@@ -195,11 +204,10 @@ sub end_numericalresponse {
if ($unit=~/\S/) {$result.=' (in '.$unit.')
';}
$result.= '
'.$alphabet[$ind]. - ': '.$ans.' | '; + '" value="'.$bubble_values[$ind].'">'. + $alphabet[$ind].': '. + $bubble_values[$ind].''; } $result.='