Diff for /loncom/homework/caparesponse/caparesponse.pm between versions 1.200 and 1.205

version 1.200, 2006/12/13 22:48:10 version 1.205, 2006/12/19 14:53:18
Line 33  use Safe::Hole; Line 33  use Safe::Hole;
 use Apache::lonmaxima();  use Apache::lonmaxima();
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::lonnet;  use Apache::lonnet;
   use Apache::response();
 use Storable qw(dclone);  use Storable qw(dclone);
   
 BEGIN {  BEGIN {
Line 40  BEGIN { Line 41  BEGIN {
 }  }
   
 my %answer;  my %answer;
   my @answers;
   sub get_answer { return %answer; };
   sub push_answer{ push(@answers,dclone(\%answer)); undef(%answer) }
   sub pop_answer { %answer = %{pop(@answers)}; };
   
 my $cur_name;  my $cur_name;
 my $tag_internal_answer_name = 'INTERNAL';  my $tag_internal_answer_name = 'INTERNAL';
   
Line 372  sub add_in_tag_answer { Line 378  sub add_in_tag_answer {
     }      }
 }  }
   
   sub capa_formula_fix {
      my ($expression)=@_;
      return &Apache::response::implicit_multiplication($expression);
   }
   
 sub end_numericalresponse {  sub end_numericalresponse {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
     my $increment=1;      my $increment=1;
Line 384  sub end_numericalresponse { Line 395  sub end_numericalresponse {
     my $tag;      my $tag;
     my $safehole = new Safe::Hole;      my $safehole = new Safe::Hole;
     $safeeval->share_from('capa',['&caparesponse_capa_check_answer']);      $safeeval->share_from('capa',['&caparesponse_capa_check_answer']);
     $safehole->wrap(\&Apache::lonmaxima::maxima_check,$safeeval,'&maxima_check');  
   
     if (scalar(@$tagstack)) { $tag=$$tagstack[-1]; }      if (scalar(@$tagstack)) { $tag=$$tagstack[-1]; }
     if ( $target eq 'grade' && &Apache::response::submitted() ) {      if ( $target eq 'grade' && &Apache::response::submitted() ) {
Line 776  sub make_numerical_bubbles { Line 786  sub make_numerical_bubbles {
  &Apache::response::get_response_param($part.'_'.$id,'numbubbles',8);   &Apache::response::get_response_param($part.'_'.$id,'numbubbles',8);
   
     my ($format)=&Apache::lonxml::get_param_var('format',$parstack,$safeeval);      my ($format)=&Apache::lonxml::get_param_var('format',$parstack,$safeeval);
     my ($answer)=&Apache::lonxml::get_param_var('answer',$parstack,$safeeval);      my $name = (exists($answer{$tag_internal_answer_name}) 
    ? $tag_internal_answer_name
    : (sort(keys(%answer)))[0]);
   
       if ( scalar(@{$answer{$name}{'answers'}}) > 1) {
    &Apache::lonxml::error("Only answers with 1 component are supported in exam mode");
       }
       if (scalar(@{$answer{$name}{'answers'}[0]}) > 1) {
    &Apache::lonxml::error("Vector answers are unsupported in exam mode.");
       }
   
       my $answer = $answer{$name}{'answers'}[0][0];
     my (@incorrect)=&Apache::lonxml::get_param_var('incorrect',$parstack,      my (@incorrect)=&Apache::lonxml::get_param_var('incorrect',$parstack,
    $safeeval);     $safeeval);
     if ($#incorrect eq 0) { @incorrect=(split(/,/,$incorrect[0])); }      if ($#incorrect eq 0) { @incorrect=(split(/,/,$incorrect[0])); }

Removed from v.1.200  
changed lines
  Added in v.1.205


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>