--- loncom/homework/caparesponse/caparesponse.pm 2004/10/18 20:28:23 1.155 +++ loncom/homework/caparesponse/caparesponse.pm 2004/10/21 03:24:23 1.157 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # caparesponse definition # -# $Id: caparesponse.pm,v 1.155 2004/10/18 20:28:23 albertel Exp $ +# $Id: caparesponse.pm,v 1.157 2004/10/21 03:24:23 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -62,7 +62,7 @@ sub start_numericalresponse { if ($token->[1] eq 'numericalresponse') { $constructtag=&Apache::edit::get_new_args($token,$parstack, $safeeval,'answer', - 'incorrect','unit', + 'incorrect','unit', 'format'); } elsif ($token->[1] eq 'formularesponse') { $constructtag=&Apache::edit::get_new_args($token,$parstack, @@ -103,6 +103,8 @@ sub start_numericalresponse { } else { $format=$formats[0]; } + if ($unit=~/\$/) { $format="\$".$format; $unit=~s/\$//g; } + if ($unit=~/\,/) { $format="\,".$format; $unit=~s/\,//g; } my $formatted=&format_number($answer,$format,$target, $safeeval); $answertxt.=$formatted.','; @@ -134,6 +136,16 @@ sub end_numericalresponse { if ($Apache::lonhomework::type eq 'exam' && $tag eq 'formularesponse') { $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 { my $response = &Apache::response::getresponse(); if ( $response =~ /[^\s]/) { @@ -326,6 +338,8 @@ sub end_numericalresponse { } if ($fmt && $tag eq 'numericalresponse') { $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); #if ($high) { # $high=&format_number($high,$fmt,$target,$safeeval); @@ -435,6 +449,9 @@ sub format_number { $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); return $ans; } @@ -592,6 +609,17 @@ sub end_stringresponse { if ($Apache::lonhomework::type eq 'exam' || $ENV{'form.submitted'} eq 'scantron') { $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 { my $response = &Apache::response::getresponse(); if ( $response =~ /[^\s]/) {