--- loncom/homework/caparesponse/caparesponse.pm 2006/03/09 00:41:13 1.188 +++ loncom/homework/caparesponse/caparesponse.pm 2006/07/03 14:21:45 1.193 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # caparesponse definition # -# $Id: caparesponse.pm,v 1.188 2006/03/09 00:41:13 albertel Exp $ +# $Id: caparesponse.pm,v 1.193 2006/07/03 14:21:45 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -29,6 +29,8 @@ package Apache::caparesponse; use strict; use capa; +use Safe::Hole; +use Apache::lonmaxima(); use Apache::lonlocal; use Apache::lonnet; @@ -247,7 +249,11 @@ sub check_submission { } if ($tag eq 'formularesponse') { - $$args_ref{'type'}='fml'; +# if ($$args_ref{'samples'}) { + $$args_ref{'type'}='fml'; +# } else { +# $$args_ref{'type'}='math'; +# } } elsif ($tag eq 'numericalresponse') { $$args_ref{'type'}='float'; } @@ -290,12 +296,15 @@ sub end_numericalresponse { my $partid = $Apache::inputtags::part; my $id = $Apache::inputtags::response[-1]; my $tag; + my $safehole = new Safe::Hole; $safeeval->share_from('capa',['&caparesponse_capa_check_answer']); + $safehole->wrap(\&Apache::lonmaxima::maxima_check,$safeeval,'&maxima_check'); + if (scalar(@$tagstack)) { $tag=$$tagstack[-1]; } if ( $target eq 'grade' && &Apache::response::submitted() ) { &Apache::response::setup_params($tag,$safeeval); if ($Apache::lonhomework::type eq 'exam' && - $tag eq 'formularesponse') { + (($tag eq 'formularesponse') || ($tag eq 'mathresponse'))) { $increment=&Apache::response::scored_response($partid,$id); } else { my $response = &Apache::response::getresponse(); @@ -776,7 +785,7 @@ sub start_stringresponse { sub end_stringresponse { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; - my $increment=1; + my $result = ''; my $part=$Apache::inputtags::part; my $id=$Apache::inputtags::response[-1]; @@ -792,7 +801,8 @@ sub end_stringresponse { $safeeval->share_from('capa',['&caparesponse_capa_check_answer']); if ($Apache::lonhomework::type eq 'exam' || &Apache::response::submitted('scantron')) { - $increment=&Apache::response::scored_response($part,$id); + &Apache::response::scored_response($part,$id); + } else { my $response = &Apache::response::getresponse(); if ( $response =~ /[^\s]/) { @@ -898,7 +908,7 @@ sub end_stringresponse { } if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || $target eq 'tex' || $target eq 'analyze') { - &Apache::lonxml::increment_counter($increment); + &Apache::lonxml::increment_counter(&Apache::response::repetition()); } &Apache::response::end_response; return $result;