Diff for /loncom/homework/caparesponse/caparesponse.pm between versions 1.126.2.2 and 1.139

version 1.126.2.2, 2004/02/26 18:24:24 version 1.139, 2004/03/12 16:55:35
Line 29 Line 29
 package Apache::caparesponse;  package Apache::caparesponse;
 use strict;  use strict;
 use capa;  use capa;
   use Apache::lonlocal;
   
 BEGIN {  BEGIN {
     &Apache::lonxml::register('Apache::caparesponse',('caparesponse','numericalresponse','stringresponse','formularesponse'));      &Apache::lonxml::register('Apache::caparesponse',('caparesponse','numericalresponse','stringresponse','formularesponse'));
Line 132  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 179  sub end_numericalresponse { Line 180  sub end_numericalresponse {
     my $unit=&Apache::lonxml::get_param_var('unit',$parstack,      my $unit=&Apache::lonxml::get_param_var('unit',$parstack,
     $safeeval);      $safeeval);
     if ($target eq 'web') {      if ($target eq 'web') {
  $result="<br />The correct answer is ";   $result="<br />".&mt('The correct answer is')." ";
     }      }
     for (my $i=0; $i <= $#answers; $i++) {      for (my $i=0; $i <= $#answers; $i++) {
  my $answer=$answers[$i];   my $answer=$answers[$i];
Line 381  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 409  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 518  sub get_sigrange { Line 522  sub get_sigrange {
  }   }
  if (!$sig_ubound) { $sig_ubound=$sig_lbound; }   if (!$sig_ubound) { $sig_ubound=$sig_lbound; }
     }      }
       if (($sig_ubound<$sig_lbound) ||
    ($sig_lbound > 15) ||
    ($sig =~/(\+|-)/ ) ) {
    my $errormsg=&mt("Invalid Significant figures detected")." ($sig)";
    if ($ENV{'request.state'} eq 'construct') {
       $errormsg.=
    &Apache::loncommon::help_open_topic('Significant_Figures');
    }
    &Apache::lonxml::error($errormsg);
       }
     return ($sig_ubound,$sig_lbound);      return ($sig_ubound,$sig_lbound);
 }  }
   
Line 536  sub start_stringresponse { Line 550  sub start_stringresponse {
  [['cs','Case Sensitive'],['ci','Case Insensitive'],   [['cs','Case Sensitive'],['ci','Case Insensitive'],
   ['mc','Case Insensitive, Any Order'],    ['mc','Case Insensitive, Any Order'],
   ['re','Regular Expression']],$token);    ['re','Regular Expression']],$token);
    $result.=&Apache::edit::checked_arg('Answer Display:','answerdisplay',
       [['inline','Inline']],$token);
  $result.=&Apache::edit::end_row().&Apache::edit::start_spanning_row();   $result.=&Apache::edit::end_row().&Apache::edit::start_spanning_row();
     } elsif ($target eq 'modified') {      } elsif ($target eq 'modified') {
  my $constructtag;         my $constructtag;
  $constructtag=&Apache::edit::get_new_args($token,$parstack,         $constructtag=&Apache::edit::get_new_args($token,$parstack,
   $safeeval,'answer',                                                   $safeeval,'answer',
   'type');                                                   'type','answerdisplay');
  if ($constructtag) {         if ($constructtag) {
     $result = &Apache::edit::rebuild_tag($token);             $result = &Apache::edit::rebuild_tag($token);
     $result.=&Apache::edit::handle_insert();             $result.=&Apache::edit::handle_insert();
  }         }
     } elsif ($target eq 'answer' || $target eq 'grade') {      } elsif ($target eq 'answer' || $target eq 'grade') {
  &Apache::response::reset_params();   &Apache::response::reset_params();
     }      }
Line 560  sub end_stringresponse { Line 576  sub end_stringresponse {
     my $id=$Apache::inputtags::response[-1];      my $id=$Apache::inputtags::response[-1];
     my $answer=&Apache::lonxml::get_param('answer',$parstack,$safeeval);      my $answer=&Apache::lonxml::get_param('answer',$parstack,$safeeval);
     my $type=&Apache::lonxml::get_param('type',$parstack,$safeeval);      my $type=&Apache::lonxml::get_param('type',$parstack,$safeeval);
       my $answerdisplay=&Apache::lonxml::get_param('answerdisplay',$parstack,$safeeval);
     &Apache::lonxml::debug("current $answer ".$token->[2]);      &Apache::lonxml::debug("current $answer ".$token->[2]);
     if (!$Apache::lonxml::default_homework_loaded) {      if (!$Apache::lonxml::default_homework_loaded) {
  &Apache::lonxml::default_homework_load($safeeval);   &Apache::lonxml::default_homework_load($safeeval);
Line 622  sub end_stringresponse { Line 639  sub end_stringresponse {
  my $status = $Apache::inputtags::status['-1'];   my $status = $Apache::inputtags::status['-1'];
  if (  &Apache::response::show_answer() ) {   if (  &Apache::response::show_answer() ) {
     if ($target eq 'web') {      if ($target eq 'web') {
  $result="<br />The correct answer is ".$answer;   $result=($answerdisplay eq 'inline'?'':"<br />".&mt('The correct answer is')." ")
       .$answer;
 #    join(', ',@answers).".<br />";  #    join(', ',@answers).".<br />";
     }      }
  }   }

Removed from v.1.126.2.2  
changed lines
  Added in v.1.139


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