--- loncom/homework/caparesponse/caparesponse.pm 2000/10/13 14:59:31 1.10 +++ loncom/homework/caparesponse/caparesponse.pm 2000/10/25 22:02:53 1.11 @@ -24,38 +24,14 @@ sub end_caparesponse { my ($target,$token,$parstack,$parser,$safeeval,$style)=@_; if ( defined $ENV{'form.'.$ENV{'form.request.prefix'}.'submit'}) { $Apache::caparesponse::result=''; - $safeeval->share('&caparesponse_capa_check_answer'); - $safeeval->share('$Apache::caparesponse::result'); + $safeeval->share_from('capa',['&caparesponse_capa_check_answer']); my $response = $ENV{'form.'.$ENV{'form.request.prefix'}.'HWVAL'.$Apache::inputtags::curvalue}; - #Apache::lonxml::debug("submitted a $response
\n"); - #Apache::lonxml::debug($$parstack[$#$parstack] . "\n
"); - my $expression="caparesponse_check $response $$parstack[$#$parstack];"; - #&Apache::run::run($expression,$safeeval); + &Apache::lonxml::debug("submitted a $response
\n"); + &Apache::lonxml::debug($$parstack[$#$parstack] . "\n
"); + my $expression="&caparesponse_check('".$response."','".$$parstack[$#$parstack]."');"; + my $result = &Apache::run::run($expression,$safeeval); - #&Apache::lonxml::debug("\n
result:$Apache::caparesponse::result:
\n"); - my $args =''; - if ( $#$parstack > -1 ) { - $args=$$parstack[$#$parstack]; - } - my $answer = &Apache::run::run("{$args;".'return $answer}',$safeeval); - if ( $answer == 1.0 * $answer ) { - my $tol = &Apache::run::run("{$args;".'return $tol}',$safeeval); - my $format = &Apache::run::run("{$args;".'return $format}',$safeeval); - my $formatedanswer = sprintf('%.'.$format,$answer); - my $difference = abs($answer - $formatedanswer); - my $studiff = abs($answer - $response); - if ( $difference > $studiff ) { - return "Correct, Computer had $answer

"; - } else { - return "Incorrect, Computer had $answer

"; - } - } else { - if ( $answer eq $response ) { - return "Correct, Computer had $answer

"; - } else { - return "Incorrect, Computer had $answer

"; - } - } + &Apache::lonxml::debug("\n
result:$Apache::caparesponse::result:$result
\n"); } else { #return "The correct answer is ".&Apache::run::run("{$$parstack['-1'];".'return $answer}',$safeeval)."\n"; }