Diff for /loncom/homework/caparesponse/caparesponse.pm between versions 1.134 and 1.140

version 1.134, 2004/02/23 20:57:50 version 1.140, 2004/03/12 18:41:43
Line 99  sub end_numericalresponse { Line 99  sub end_numericalresponse {
     my $tag;      my $tag;
     if (scalar(@$tagstack)) { $tag=$$tagstack[-1]; }      if (scalar(@$tagstack)) { $tag=$$tagstack[-1]; }
     if ( $target eq 'grade' && defined($ENV{'form.submitted'})) {      if ( $target eq 'grade' && defined($ENV{'form.submitted'})) {
  &Apache::response::setup_params($tag);   &Apache::response::setup_params($tag,$safeeval);
  $safeeval->share_from('capa',['&caparesponse_capa_check_answer']);   $safeeval->share_from('capa',['&caparesponse_capa_check_answer']);
  my $partid = $Apache::inputtags::part;   my $partid = $Apache::inputtags::part;
  my $id = $Apache::inputtags::response['-1'];   my $id = $Apache::inputtags::response['-1'];
Line 133  sub end_numericalresponse { Line 133  sub end_numericalresponse {
  my $hideunit=&Apache::lonnet::EXT('resource.'.$partid.'_'.$id.'.turnoffunit');   my $hideunit=&Apache::lonnet::EXT('resource.'.$partid.'_'.$id.'.turnoffunit');
   
  foreach my $key (keys(%Apache::inputtags::params)) {   foreach my $key (keys(%Apache::inputtags::params)) {
     $expression.= ';my $'. #'      $expression.= ';my $__LC__'. #'
  $key.'="'.$Apache::inputtags::params{$key}.'"';   $key.'="'.$Apache::inputtags::params{$key}.'"';
  }   }
   
  #no way to enter units, with radio buttons   #no way to enter units, with radio buttons
  if ($Apache::lonhomework::type eq 'exam' ||   if ($Apache::lonhomework::type eq 'exam' ||
     lc($hideunit) eq "yes") {      lc($hideunit) eq "yes") {
     $expression.=';my $unit=undef;';      $expression.=';my $__LC__unit=undef;';
  }   }
  #sig fig don't make much sense either   #sig fig don't make much sense either
  if (($Apache::lonhomework::type eq 'exam' ||   if (($Apache::lonhomework::type eq 'exam' ||
      $ENV{'form.submitted'} eq 'scantron') &&       $ENV{'form.submitted'} eq 'scantron') &&
     $tag eq 'numericalresponse') {      $tag eq 'numericalresponse') {
     $expression.=';my $sig=undef;';      $expression.=';my $__LC__sig=undef;';
  }   }
   
  if ($tag eq 'formularesponse') {   if ($tag eq 'formularesponse') {
     $expression.=';my $type="fml";';      $expression.=';my $__LC__type="fml";';
  } elsif ($tag eq 'numericalresponse') {   } elsif ($tag eq 'numericalresponse') {
     $expression.=';my $type="float";';      $expression.=';my $__LC__type="float";';
  }   }
  $expression.="');";   $expression.="');";
  my @answer=&Apache::lonxml::get_param_var('answer',$parstack,$safeeval);   my @answer=&Apache::lonxml::get_param_var('answer',$parstack,$safeeval);
Line 298  sub end_numericalresponse { Line 298  sub end_numericalresponse {
     push (@{ $Apache::lonhomework::analyze{"$part_id.incorrect"} }, @incorrect);      push (@{ $Apache::lonhomework::analyze{"$part_id.incorrect"} }, @incorrect);
  }   }
  if (scalar(@$tagstack)) {   if (scalar(@$tagstack)) {
     &Apache::response::setup_params($tag);      &Apache::response::setup_params($tag,$safeeval);
  }   }
  my (@answers)=&Apache::lonxml::get_param_var('answer',$parstack,$safeeval);   my (@answers)=&Apache::lonxml::get_param_var('answer',$parstack,$safeeval);
  my (@formats)=&Apache::lonxml::get_param_var('format',$parstack,$safeeval);   my (@formats)=&Apache::lonxml::get_param_var('format',$parstack,$safeeval);
Line 382  sub get_table_sizes { Line 382  sub get_table_sizes {
     my $cell_width=0;      my $cell_width=0;
     foreach my $member (@$rbubble_values) {      foreach my $member (@$rbubble_values) {
  my $cell_width_real=0;   my $cell_width_real=0;
  if ($member=~/(\d*)\.?(\d*)(E|e)(\+|-)?(\d*)/) {   if ($member=~/(\+|-)?(\d*)\.?(\d*)\s*\$\\times\s*10\^{(\+|-)?(\d+)}\$/) {
       $cell_width_real=(length($2)+length($3)+length($5)+7)*$scale;
    } elsif ($member=~/(\d*)\.?(\d*)(E|e)(\+|-)?(\d*)/) {
     $cell_width_real=(length($1)+length($2)+length($5)+9)*$scale;      $cell_width_real=(length($1)+length($2)+length($5)+9)*$scale;
  } elsif ($member=~/(\d*)\.?(\d*)/) {          } elsif ($member=~/(\d*)\.(\d*)/) {
     $cell_width_real=(length($1)+length($2)+3)*$scale;      $cell_width_real=(length($1)+length($2)+3)*$scale;
  } else {   } else {
     $cell_width_real=(length($member)+1)*$scale;      $cell_width_real=(length($member)+1)*$scale*0.9;
  }   }
  if ($cell_width_real>$cell_width) {$cell_width=$cell_width_real;}   if ($cell_width_real>$cell_width) {$cell_width=$cell_width_real;}
     }      }
Line 401  sub get_table_sizes { Line 403  sub get_table_sizes {
  $textwidth=$1.'.'.$2;   $textwidth=$1.'.'.$2;
     }      }
     my $bubbles_per_line=int($textwidth/$cell_width);      my $bubbles_per_line=int($textwidth/$cell_width);
     if (($bubbles_per_line > $number_of_bubbles/2) && ($number_of_bubbles % 2==2)) {$bubbles_per_line=$number_of_bubbles/2;}      if (($bubbles_per_line > $number_of_bubbles/2) && ($number_of_bubbles % 2==0)) {$bubbles_per_line=$number_of_bubbles/2;}
     my $number_of_tables = int($number_of_bubbles/$bubbles_per_line);      my $number_of_tables = int($number_of_bubbles/$bubbles_per_line);
     my @table_range = ();      my @table_range = ();
     for (my $i=0;$i<$number_of_tables;$i++) {push @table_range,$bubbles_per_line;}      for (my $i=0;$i<$number_of_tables;$i++) {push @table_range,$bubbles_per_line;}
Line 410  sub get_table_sizes { Line 412  sub get_table_sizes {
  push @table_range,($number_of_bubbles % $bubbles_per_line);   push @table_range,($number_of_bubbles % $bubbles_per_line);
     }      }
     $cell_width-=8;      $cell_width-=8;
       $cell_width=$cell_width*3/4;
     return ($cell_width,$number_of_tables,@table_range);      return ($cell_width,$number_of_tables,@table_range);
 }  }
   
Line 579  sub end_stringresponse { Line 582  sub end_stringresponse {
  &Apache::lonxml::default_homework_load($safeeval);   &Apache::lonxml::default_homework_load($safeeval);
     }      }
     if ( $target eq 'grade' && defined($ENV{'form.submitted'})) {      if ( $target eq 'grade' && defined($ENV{'form.submitted'})) {
  &Apache::response::setup_params('stringresponse');   &Apache::response::setup_params('stringresponse',$safeeval);
  $safeeval->share_from('capa',['&caparesponse_capa_check_answer']);   $safeeval->share_from('capa',['&caparesponse_capa_check_answer']);
  if ($Apache::lonhomework::type eq 'exam' ||   if ($Apache::lonhomework::type eq 'exam' ||
     $ENV{'form.submitted'} eq 'scantron') {      $ENV{'form.submitted'} eq 'scantron') {
Line 656  sub end_stringresponse { Line 659  sub end_stringresponse {
     push (@{ $Apache::lonhomework::analyze{"parts"} },"$part.$id");      push (@{ $Apache::lonhomework::analyze{"parts"} },"$part.$id");
     $Apache::lonhomework::analyze{"$part.$id.type"} = 'stringresponse';      $Apache::lonhomework::analyze{"$part.$id.type"} = 'stringresponse';
  }   }
  &Apache::response::setup_params('stringresponse');   &Apache::response::setup_params('stringresponse',$safeeval);
  if ($target eq 'answer') {   if ($target eq 'answer') {
     $result.=&Apache::response::answer_header('stringresponse');      $result.=&Apache::response::answer_header('stringresponse');
  }   }

Removed from v.1.134  
changed lines
  Added in v.1.140


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