Diff for /loncom/homework/response.pm between versions 1.171 and 1.172

version 1.171, 2007/06/19 19:34:18 version 1.172, 2007/06/20 22:36:52
Line 860  Optional Arguments: Line 860  Optional Arguments:
   $resulttype - undef    -> a number between 0 and 25    $resulttype - undef    -> a number between 0 and 25
                 'A is 1' -> a number between 1 and 26                  'A is 1' -> a number between 1 and 26
                 'letter' -> a letter between 'A' and 'Z'                  'letter' -> a letter between 'A' and 'Z'
     $lines  - undef problem only needs a single line of bubbles.
               nonzero  Problem wants the first nonempty response in 
                         $lines lines of bubbles.
     $bubbles_per_line - Must be provided if lines is defined.. number of
                         bubbles on a line.
 =cut  =cut
   
 sub getresponse {  sub getresponse {
     my ($offset,$resulttype)=@_;      my ($offset,$resulttype, $lines, $bubbles_per_line)=@_;
     my $formparm='form.HWVAL_'.$Apache::inputtags::response['-1'];      my $formparm='form.HWVAL_'.$Apache::inputtags::response['-1'];
     my $response;      my $response;
     if (!defined($offset)) {      if (!defined($offset)) {
Line 872  sub getresponse { Line 876  sub getresponse {
     } else {      } else {
  $formparm.=":$offset";   $formparm.=":$offset";
     }      }
       if (!defined($lines)) {
    $lines = 1;
       }
   
     my %let_to_num=('A'=>0,'B'=>1,'C'=>2,'D'=>3,'E'=>4,'F'=>5,'G'=>6,'H'=>7,      my %let_to_num=('A'=>0,'B'=>1,'C'=>2,'D'=>3,'E'=>4,'F'=>5,'G'=>6,'H'=>7,
     'I'=>8,'J'=>9,'K'=>10,'L'=>11,'M'=>12,'N'=>13,'O'=>14,      'I'=>8,'J'=>9,'K'=>10,'L'=>11,'M'=>12,'N'=>13,'O'=>14,
     'P'=>15,'Q'=>16,'R'=>17,'S'=>18,'T'=>19,'U'=>20,'V'=>21,      'P'=>15,'Q'=>16,'R'=>17,'S'=>18,'T'=>19,'U'=>20,'V'=>21,
Line 879  sub getresponse { Line 887  sub getresponse {
     if ($env{'form.submitted'} eq 'scantron') {      if ($env{'form.submitted'} eq 'scantron') {
  my $part  = $Apache::inputtags::part;   my $part  = $Apache::inputtags::part;
  my $id    = $Apache::inputtags::response[-1];   my $id    = $Apache::inputtags::response[-1];
  $response = $env{'scantron.'.($Apache::lonxml::counter+$offset-1).  
  '.answer'};   my $line;
  # save bubbled letter for later   for ($line = 0; $line < $lines; $line++) {
  $Apache::lonhomework::results{"resource.$part.$id.scantron"}.=      $response = $env{'scantron.'.
     $response;   ($Apache::lonxml::counter+$offset-1+$line).
    '.answer'};
       if ($response ne "") {
    last;
       }
       
    }
  if ($resulttype ne 'letter') {   if ($resulttype ne 'letter') {
     if ($resulttype eq 'A is 1') {      if ($resulttype eq 'A is 1') {
  $response = $let_to_num{$response}+1;   $response = $let_to_num{$response}+1;
     } else {      } else {
  $response = $let_to_num{$response};   $response = $let_to_num{$response};
     }      }
       if ($response ne "") {
    $response += $line * $bubbles_per_line;
       }
    } else {
       if ($response ne "") {
    $response = chr(ord($response) + $line * $bubbles_per_line);
       }
  }   }
    # save submitted response for later
    $Apache::lonhomework::results{"resource.$part.$id.scantron"}.=
       $response;
   
     } else {      } else {
  $response = $env{$formparm};   $response = $env{$formparm};
     }      }
       # 
       #  If we have a nonempty answer, correct the numeric value
       #  of the answer for the line on which it was found.
       #
   
     return $response;      return $response;
 }  }
   

Removed from v.1.171  
changed lines
  Added in v.1.172


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