version 1.154, 2004/10/07 20:28:30
|
version 1.158, 2004/12/23 22:53:41
|
Line 62 sub start_numericalresponse {
|
Line 62 sub start_numericalresponse {
|
if ($token->[1] eq 'numericalresponse') { |
if ($token->[1] eq 'numericalresponse') { |
$constructtag=&Apache::edit::get_new_args($token,$parstack, |
$constructtag=&Apache::edit::get_new_args($token,$parstack, |
$safeeval,'answer', |
$safeeval,'answer', |
'incorrect','unit', |
'incorrect','unit', |
'format'); |
'format'); |
} elsif ($token->[1] eq 'formularesponse') { |
} elsif ($token->[1] eq 'formularesponse') { |
$constructtag=&Apache::edit::get_new_args($token,$parstack, |
$constructtag=&Apache::edit::get_new_args($token,$parstack, |
Line 103 sub start_numericalresponse {
|
Line 103 sub start_numericalresponse {
|
} else { |
} else { |
$format=$formats[0]; |
$format=$formats[0]; |
} |
} |
|
if ($unit=~/\$/) { $format="\$".$format; $unit=~s/\$//g; } |
|
if ($unit=~/\,/) { $format="\,".$format; $unit=~s/\,//g; } |
my $formatted=&format_number($answer,$format,$target, |
my $formatted=&format_number($answer,$format,$target, |
$safeeval); |
$safeeval); |
$answertxt.=$formatted.','; |
$answertxt.=$formatted.','; |
Line 134 sub end_numericalresponse {
|
Line 136 sub end_numericalresponse {
|
if ($Apache::lonhomework::type eq 'exam' && |
if ($Apache::lonhomework::type eq 'exam' && |
$tag eq 'formularesponse') { |
$tag eq 'formularesponse') { |
$increment=&Apache::response::scored_response($partid,$id); |
$increment=&Apache::response::scored_response($partid,$id); |
|
} elsif ($Apache::lonhomework::type eq 'survey') { |
|
if ( !defined($ENV{'form.submitted'})) { return ''; } |
|
my $response = &Apache::response::getresponse(); |
|
if ( $response =~ /[^\s]/) { |
|
my %previous=&Apache::response::check_for_previous($response, |
|
$partid,$id); |
|
$Apache::lonhomework::results{"resource.$partid.$id.submission"}=$response; |
|
my $ad=$Apache::lonhomework::results{"resource.$partid.$id.awarddetail"}='SUBMITTED'; |
|
&Apache::response::handle_previous(\%previous,$ad); |
|
} |
} else { |
} else { |
my $response = &Apache::response::getresponse(); |
my $response = &Apache::response::getresponse(); |
if ( $response =~ /[^\s]/) { |
if ( $response =~ /[^\s]/) { |
Line 148 sub end_numericalresponse {
|
Line 160 sub end_numericalresponse {
|
my (@formats)=&Apache::lonxml::get_param_var('format',$parstack,$safeeval); |
my (@formats)=&Apache::lonxml::get_param_var('format',$parstack,$safeeval); |
my (@answers)=&Apache::lonxml::get_param_var('answer',$parstack,$safeeval); |
my (@answers)=&Apache::lonxml::get_param_var('answer',$parstack,$safeeval); |
my (@incorrect)=&Apache::lonxml::get_param_var('incorrect',$parstack,$safeeval); |
my (@incorrect)=&Apache::lonxml::get_param_var('incorrect',$parstack,$safeeval); |
my @values=&make_numerical_bubbles($number_of_bubbles,$target,$answers[0],$formats[0],\@incorrect,$safeeval); |
my ($values,$display)=&make_numerical_bubbles($number_of_bubbles,$target,$answers[0],$formats[0],\@incorrect,$safeeval); |
$response=$values[$response]; |
$response=$values->[$response]; |
} |
} |
$Apache::lonhomework::results{"resource.$partid.$id.submission"}=$response; |
$Apache::lonhomework::results{"resource.$partid.$id.submission"}=$response; |
my $args_ref= \%{$safeeval->varglob('LONCAPA::CAPAresponse_args')}; |
my $args_ref= \%{$safeeval->varglob('LONCAPA::CAPAresponse_args')}; |
Line 226 sub end_numericalresponse {
|
Line 238 sub end_numericalresponse {
|
my $unit=&Apache::lonxml::get_param_var('unit',$parstack, |
my $unit=&Apache::lonxml::get_param_var('unit',$parstack, |
$safeeval); |
$safeeval); |
my (@incorrect)=&Apache::lonxml::get_param_var('incorrect',$parstack,$safeeval); |
my (@incorrect)=&Apache::lonxml::get_param_var('incorrect',$parstack,$safeeval); |
my @bubble_values=&make_numerical_bubbles($number_of_bubbles, |
my ($bubble_values,$bubble_display)= |
$target,$answers[0], |
&make_numerical_bubbles($number_of_bubbles, |
$formats[0],\@incorrect,$safeeval); |
$target,$answers[0], |
|
$formats[0],\@incorrect,$safeeval); |
my @alphabet=('A'..'Z'); |
my @alphabet=('A'..'Z'); |
if ($target eq 'web') { |
if ($target eq 'web') { |
if ($tag eq 'numericalresponse') { |
if ($tag eq 'numericalresponse') { |
Line 237 sub end_numericalresponse {
|
Line 250 sub end_numericalresponse {
|
my $previous=$Apache::lonhomework::history{"resource.$Apache::inputtags::part.$id.submission"}; |
my $previous=$Apache::lonhomework::history{"resource.$Apache::inputtags::part.$id.submission"}; |
for (my $ind=0;$ind<$number_of_bubbles;$ind++) { |
for (my $ind=0;$ind<$number_of_bubbles;$ind++) { |
my $checked=''; |
my $checked=''; |
if ($previous eq $bubble_values[$ind]) { |
if ($previous eq $bubble_values->[$ind]) { |
$checked=" checked='on' "; |
$checked=" checked='on' "; |
} |
} |
$result.='<td><input type="radio" name="HWVAL_'.$id. |
$result.='<td><input type="radio" name="HWVAL_'.$id. |
'" value="'.$bubble_values[$ind].'" '.$checked |
'" value="'.$bubble_values->[$ind].'" '.$checked |
.' /><b>'.$alphabet[$ind].'</b>: '. |
.' /><b>'.$alphabet[$ind].'</b>: '. |
$bubble_values[$ind].'</td>'; |
$bubble_display->[$ind].'</td>'; |
} |
} |
$result.='</tr></table>'; |
$result.='</tr></table>'; |
} elsif ($tag eq 'formularesponse') { |
} elsif ($tag eq 'formularesponse') { |
Line 257 sub end_numericalresponse {
|
Line 270 sub end_numericalresponse {
|
} |
} |
if ($tag eq 'numericalresponse') { |
if ($tag eq 'numericalresponse') { |
my ($celllength,$number_of_tables,@table_range)= |
my ($celllength,$number_of_tables,@table_range)= |
&get_table_sizes($number_of_bubbles,\@bubble_values); |
&get_table_sizes($number_of_bubbles,$bubble_values); |
my $j=0; |
my $j=0; |
my $cou=0; |
my $cou=0; |
$result.='\vskip -1 mm \noindent \begin{enumerate}\item[\textbf{'.$Apache::lonxml::counter.'}.]'; |
$result.='\vskip -1 mm \noindent \begin{enumerate}\item[\textbf{'.$Apache::lonxml::counter.'}.]'; |
Line 268 sub end_numericalresponse {
|
Line 281 sub end_numericalresponse {
|
} |
} |
$result.='}'; |
$result.='}'; |
for (my $ind=$cou;$ind<$cou+$table_range[$j];$ind++) { |
for (my $ind=$cou;$ind<$cou+$table_range[$j];$ind++) { |
$result.='\hskip -4 mm {\small \textbf{'.$alphabet[$ind].'}}$\bigcirc$ & \hskip -3 mm {\small '.$bubble_values[$ind].'} '; |
$result.='\hskip -4 mm {\small \textbf{'.$alphabet[$ind].'}}$\bigcirc$ & \hskip -3 mm {\small '.$bubble_values->[$ind].'} '; |
if ($ind != $cou+$table_range[$j]-1) {$result.=' & ';} |
if ($ind != $cou+$table_range[$j]-1) {$result.=' & ';} |
} |
} |
$cou += $table_range[$j]; |
$cou += $table_range[$j]; |
Line 326 sub end_numericalresponse {
|
Line 339 sub end_numericalresponse {
|
} |
} |
if ($fmt && $tag eq 'numericalresponse') { |
if ($fmt && $tag eq 'numericalresponse') { |
$fmt=~s/e/E/g; |
$fmt=~s/e/E/g; |
|
if ($unit=~/\$/) { $fmt="\$".$fmt; $unit=~s/\$//g; } |
|
if ($unit=~/\,/) { $fmt="\,".$fmt; $unit=~s/\,//g; } |
$ans = &format_number($ans,$fmt,$target,$safeeval); |
$ans = &format_number($ans,$fmt,$target,$safeeval); |
if ($high) { |
#if ($high) { |
$high=&format_number($high,$fmt,$target,$safeeval); |
# $high=&format_number($high,$fmt,$target,$safeeval); |
$low =&format_number($low,$fmt,$target,$safeeval); |
# $low =&format_number($low,$fmt,$target,$safeeval); |
} |
#} |
} |
} |
if ($target eq 'answer') { |
if ($target eq 'answer') { |
if ($high && $tag eq 'numericalresponse') { $ans.=' ['.$low.','.$high.']'; } |
if ($high && $tag eq 'numericalresponse') { $ans.=' ['.$low.','.$high.']'; } |
Line 435 sub format_number {
|
Line 450 sub format_number {
|
$format = 'd'; |
$format = 'd'; |
} |
} |
} |
} |
|
if (!$Apache::lonxml::default_homework_loaded) { |
|
&Apache::lonxml::default_homework_load($safeeval); |
|
} |
$ans=&Apache::run::run("&prettyprint(q\0$number\0,q\0$format\0,q\0$target\0)",$safeeval); |
$ans=&Apache::run::run("&prettyprint(q\0$number\0,q\0$format\0,q\0$target\0)",$safeeval); |
return $ans; |
return $ans; |
} |
} |
|
|
sub make_numerical_bubbles { |
sub make_numerical_bubbles { |
my ($number_of_bubbles,$target,$answer,$format,$incorrect,$safeeval) =@_; |
my ($number_of_bubbles,$target,$answer,$format,$incorrect,$safeeval) =@_; |
my @bubble_values = (); |
my @bubble_values=(); |
&Apache::lonxml::debug("answer is $answer incorrect is $incorrect"); |
&Apache::lonxml::debug("answer is $answer incorrect is $incorrect"); |
my @oldseed=&Math::Random::random_get_seed(); |
my @oldseed=&Math::Random::random_get_seed(); |
if (defined($incorrect) && ref($incorrect)) { |
if (defined($incorrect) && ref($incorrect)) { |
Line 456 sub make_numerical_bubbles {
|
Line 474 sub make_numerical_bubbles {
|
&Apache::lonxml::debug("Answer was :$answer: returning :".$#bubble_values.": whih are :".join(':',@bubble_values)); |
&Apache::lonxml::debug("Answer was :$answer: returning :".$#bubble_values.": whih are :".join(':',@bubble_values)); |
&Math::Random::random_set_seed(@oldseed); |
&Math::Random::random_set_seed(@oldseed); |
if (defined($format) && $format ne '') { |
if (defined($format) && $format ne '') { |
|
my @bubble_display; |
foreach my $value (@bubble_values) { |
foreach my $value (@bubble_values) { |
$value=&format_number($value,$format,$target,$safeeval); |
push(@bubble_display, |
|
&format_number($value,$format,$target,$safeeval)); |
} |
} |
|
return (\@bubble_values,\@bubble_display); |
|
} else { |
|
return (\@bubble_values,\@bubble_values); |
} |
} |
return @bubble_values; |
|
} |
} |
if (defined($$incorrect[0]) && |
if (defined($$incorrect[0]) && |
scalar(@$incorrect)+1 < $number_of_bubbles) { |
scalar(@$incorrect)+1 < $number_of_bubbles) { |
Line 474 sub make_numerical_bubbles {
|
Line 496 sub make_numerical_bubbles {
|
my $power = $powers[$ind]; |
my $power = $powers[$ind]; |
$ind=&Math::Random::random_uniform_integer(1,0,$#factors); |
$ind=&Math::Random::random_uniform_integer(1,0,$#factors); |
my $factor = $factors[$ind]; |
my $factor = $factors[$ind]; |
|
my @bubble_display; |
for ($ind=0;$ind<$number_of_bubbles;$ind++) { |
for ($ind=0;$ind<$number_of_bubbles;$ind++) { |
$bubble_values[$ind] = $answer*($factor**($power-$powers[$#powers-$ind])); |
$bubble_values[$ind] = $answer*($factor**($power-$powers[$#powers-$ind])); |
$bubble_values[$ind] = &format_number($bubble_values[$ind], |
$bubble_display[$ind] = &format_number($bubble_values[$ind], |
$format,$target,$safeeval); |
$format,$target,$safeeval); |
|
|
} |
} |
&Math::Random::random_set_seed(@oldseed); |
&Math::Random::random_set_seed(@oldseed); |
return @bubble_values; |
return (\@bubble_values,\@bubble_display); |
} |
} |
|
|
sub get_tolrange { |
sub get_tolrange { |
Line 592 sub end_stringresponse {
|
Line 615 sub end_stringresponse {
|
if ($Apache::lonhomework::type eq 'exam' || |
if ($Apache::lonhomework::type eq 'exam' || |
$ENV{'form.submitted'} eq 'scantron') { |
$ENV{'form.submitted'} eq 'scantron') { |
$increment=&Apache::response::scored_response($part,$id); |
$increment=&Apache::response::scored_response($part,$id); |
|
} elsif ($Apache::lonhomework::type eq 'survey') { |
|
if ( !defined($ENV{'form.submitted'})) { return ''; } |
|
my $response = &Apache::response::getresponse(); |
|
if ( $response =~ /[^\s]/) { |
|
my %previous=&Apache::response::check_for_previous($response, |
|
$part,$id); |
|
$Apache::lonhomework::results{"resource.$part.$id.submission"}= |
|
$response; |
|
my $ad=$Apache::lonhomework::results{"resource.$part.$id.awarddetail"}='SUBMITTED'; |
|
&Apache::response::handle_previous(\%previous,$ad); |
|
} |
} else { |
} else { |
my $response = &Apache::response::getresponse(); |
my $response = &Apache::response::getresponse(); |
if ( $response =~ /[^\s]/) { |
if ( $response =~ /[^\s]/) { |