--- loncom/homework/caparesponse/caparesponse.pm 2001/01/04 22:52:29 1.25 +++ loncom/homework/caparesponse/caparesponse.pm 2001/07/10 22:06:42 1.33 @@ -10,16 +10,16 @@ sub BEGIN { } sub start_caparesponse { - my ($target,$token,$parstack,$parser,$safeeval)=@_; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; my $id = &Apache::response::start_response($parstack,$safeeval); return ''; } sub end_caparesponse { - my ($target,$token,$parstack,$parser,$safeeval,$style)=@_; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; my $result = ''; if ( $target eq 'grade' ) { - if ( defined $ENV{'form.submit'}) { + if ( defined $ENV{'form.submitted'}) { $safeeval->share_from('capa',['&caparesponse_capa_check_answer']); my $response = $ENV{'form.HWVAL'.$Apache::inputtags::response['-1']}; if ( $response =~ /[^\s]/) { @@ -28,7 +28,7 @@ sub end_caparesponse { if ( $previous ) { $result = 'PREVIOUSLY_USED'; } else { - $Apache::lonhomework::results{"resource.$Apache::inputtags::part.$Apache::inputtags::response['-1'].submission"}=$response; + $Apache::lonhomework::results{"resource.$Apache::inputtags::part.$id.submission"}=$response; &Apache::lonxml::debug("submitted a $response
\n"); &Apache::lonxml::debug($$parstack[$#$parstack] . "\n
"); my $expression="&caparesponse_check('".$response."','". @@ -38,13 +38,13 @@ sub end_caparesponse { "');"; $result = &Apache::run::run($expression,$safeeval); my ($ad) = split /:/ , $result; - $Apache::lonhomework::results{"resource.$Apache::inputtags::part.$Apache::inputtags::response['-1'].awarddetail"}=$ad; + $Apache::lonhomework::results{"resource.$Apache::inputtags::part.$id.awarddetail"}=$ad; &Apache::lonxml::debug("$expression"); &Apache::lonxml::debug("\n
result:$result:$Apache::lonxml::curdepth
\n"); } } } - } else { + } elsif ($target eq 'web') { #$result .= "The correct answer is ".&Apache::run::run("{$$parstack['-1'];".'return $answer}',$safeeval)."\n"; } #Apache::lonxml::debug("\n
\nreal end caparesponse
\n"); @@ -53,16 +53,29 @@ sub end_caparesponse { } sub start_numericalresponse { - my ($target,$token,$parstack,$parser,$safeeval)=@_; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; my $id = &Apache::response::start_response($parstack,$safeeval); - return ''; + my $result; + if ($target eq 'edit') { + $result.=&Apache::edit::tag_start($target,$token,&Apache::lonxml::description($token)); + $result.=&Apache::edit::text_arg('Answer:','answer',$token). + &Apache::edit::text_arg('Unit:','unit',$token).''; + } elsif ($target eq 'modified') { + my $constructtag=&Apache::edit::get_new_args($token,$parstack,$safeeval, + 'answer','unit'); + if ($constructtag) { + $result = &Apache::edit::rebuild_tag($token); + $result.=&Apache::edit::handle_insert(); + } + } + return $result; } sub end_numericalresponse { - my ($target,$token,$parstack,$parser,$safeeval,$style)=@_; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; my $result = ''; if ( $target eq 'grade' ) { - if ( defined $ENV{'form.submit'}) { + if ( defined $ENV{'form.submitted'}) { $safeeval->share_from('capa',['&caparesponse_capa_check_answer']); my $response = $ENV{'form.HWVAL'.$Apache::inputtags::response['-1']}; if ( $response =~ /[^\s]/) { @@ -71,9 +84,12 @@ sub end_numericalresponse { if ( $previous ) { $result = 'PREVIOUSLY_USED'; } else { - $Apache::lonhomework::results{"resource.$Apache::inputtags::part.$Apache::inputtags::response['-1'].submission"}=$response; + $Apache::lonhomework::results{"resource.$Apache::inputtags::part.$id.submission"}=$response; &Apache::lonxml::debug("submitted a $response
\n"); &Apache::lonxml::debug($$parstack[$#$parstack] . "\n
"); + $response =~ s/\\/\\\\/g; + $response =~ s/\'/\\\'/g; + &Apache::lonxml::debug("current $response"); my $expression="&caparesponse_check_list('".$response."','". $$parstack[$#$parstack]. ';my $tol="'.$Apache::inputtags::params{'tol'}.'"'. @@ -82,7 +98,7 @@ sub end_numericalresponse { $result = &Apache::run::run($expression,$safeeval); my ($awards) = split /:/ , $result; my ($ad) = &Apache::inputtags::finalizeawards(split /,/ , $awards); - $Apache::lonhomework::results{"resource.$Apache::inputtags::part.$Apache::inputtags::response['-1'].awarddetail"}=$ad; + $Apache::lonhomework::results{"resource.$Apache::inputtags::part.$id.awarddetail"}=$ad; &Apache::lonxml::debug("$expression"); &Apache::lonxml::debug("\n
result:$result:$Apache::lonxml::curdepth
\n"); $result=''; @@ -91,7 +107,8 @@ sub end_numericalresponse { } } elsif ($target eq 'web') { my $award = $Apache::lonhomework::history{"resource.$Apache::inputtags::part.solved"}; - if ($award =~ /^correct/) { + my $status = $Apache::inputtags::status['-1']; + if ($award =~ /^correct/ || $status eq "SHOW_ANSWER" ) { my $answervar=&Apache::run::run("{$$parstack['-1'];".'return $answer}',$safeeval); my (@answers)=&Apache::run::run("$answervar",$safeeval); my $unit=&Apache::run::run("{$$parstack['-1'];".'return $unit}',$safeeval); @@ -102,6 +119,8 @@ sub end_numericalresponse { chop $result; $result.=" $unit.

"; } + } elsif ($target eq 'edit') { + $result.=''.&Apache::edit::end_table; } &Apache::response::end_response; return $result;