--- loncom/homework/response.pm 2006/12/15 22:11:43 1.156 +++ loncom/homework/response.pm 2006/12/18 21:12:51 1.157 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # various response type definitons response definition # -# $Id: response.pm,v 1.156 2006/12/15 22:11:43 www Exp $ +# $Id: response.pm,v 1.157 2006/12/18 21:12:51 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -368,7 +368,8 @@ sub start_customresponse { my $id = &Apache::response::start_response($parstack,$safeeval); push(@Apache::lonxml::namespace,'customresponse'); my $result; - undef($Apache::response::custom_answer); + @Apache::response::custom_answer=(); + @Apache::response::custom_answer_type=(); &Apache::lonxml::register('Apache::response',('answer')); if ($target eq 'web') { if ( &Apache::response::show_answer() ) { @@ -420,7 +421,7 @@ sub end_customresponse { ${$safeeval->varglob('LONCAPA::customresponse_submission')}= $response; - my $award = &Apache::run::run('{ my $submission=$LONCAPA::customresponse_submission;'.$Apache::response::custom_answer.'}',$safeeval); + my $award = &Apache::run::run('{ my $submission=$LONCAPA::customresponse_submission;'.$Apache::response::custom_answer[-1].'}',$safeeval); if (!&Apache::inputtags::valid_award($award)) { $error = $award; $award = 'ERROR'; @@ -448,6 +449,8 @@ sub end_customresponse { &Apache::lonxml::increment_counter(&Apache::response::repetition()); } pop(@Apache::lonxml::namespace); + pop(@Apache::response::custom_answer); + pop(@Apache::response::custom_answer_type); &Apache::lonxml::deregister('Apache::response',('answer')); &Apache::response::end_response(); return $result; @@ -459,7 +462,8 @@ sub start_mathresponse { my $id = &Apache::response::start_response($parstack,$safeeval); push(@Apache::lonxml::namespace,'mathresponse'); my $result; - undef($Apache::response::custom_answer); + @Apache::response::custom_answer=(); + @Apache::response::custom_answer_type=(); &Apache::lonxml::register('Apache::response',('answer')); if ($target eq 'web') { if ( &Apache::response::show_answer() ) { @@ -514,7 +518,7 @@ sub end_mathresponse { my $cas = &Apache::lonxml::get_param('cas',$parstack,$safeeval); if ($cas eq 'maxima') { my $args = [&Apache::lonxml::get_param_var('args',$parstack,$safeeval)]; - $award=&Apache::lonmaxima::maxima_run($Apache::response::custom_answer,$response,$args); + $award=&Apache::lonmaxima::maxima_run($Apache::response::custom_answer[-1],$response,$args); } if (!&Apache::inputtags::valid_award($award)) { $error = $award; @@ -530,6 +534,8 @@ sub end_mathresponse { } } pop(@Apache::lonxml::namespace); + pop(@Apache::response::custom_answer); + pop(@Apache::response::custom_answer_type); &Apache::lonxml::deregister('Apache::response',('answer')); &Apache::response::end_response(); return $result; @@ -561,11 +567,11 @@ sub implicit_multiplication { sub start_answer { my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; my $result; - $Apache::response::custom_answer= - &Apache::lonxml::get_all_text_unbalanced("/answer",$parser); - $Apache::response::custom_answer_type= - lc(&Apache::lonxml::get_param('type',$parstack,$safeeval)); - $Apache::response::custom_answer_type =~ s/\s+//g; + push(@Apache::response::custom_answer, + &Apache::lonxml::get_all_text_unbalanced("/answer",$parser)); + push(@Apache::response::custom_answer_type, + lc(&Apache::lonxml::get_param('type',$parstack,$safeeval))); + $Apache::response::custom_answer_type[-1] =~ s/\s+//g; if ($target eq "edit" ) { $result=&Apache::edit::tag_start($target,$token,'Answer algorithm'); $result.=&Apache::edit::editfield($token->[1],