Diff for /loncom/homework/radiobuttonresponse.pm between versions 1.122 and 1.123

version 1.122, 2007/06/29 17:24:03 version 1.123, 2007/06/29 17:32:31
Line 158  sub storesurvey { Line 158  sub storesurvey {
   
   
 sub grade_response {  sub grade_response {
     my ($max,$randomize, $bubbles_per_line)=@_;      my ($answer, $whichfoils, $bubbles_per_line)=@_;
     #keep the random numbers the same must always call this  
     my ($answer,@whichfoils)=&whichfoils($max,$randomize);  
     if ( !&Apache::response::submitted() ) { return; }      if ( !&Apache::response::submitted() ) { return; }
     my $response;      my $response;
           
     if ($env{'form.submitted'} eq 'scantron') {      if ($env{'form.submitted'} eq 'scantron') {
  $response = &Apache::response::getresponse(1,undef,   $response = &Apache::response::getresponse(1,undef,
    &bubble_line_count(scalar(@whichfoils),     &bubble_line_count(scalar(@{ $whichfoils}),
       $bubbles_per_line),        $bubbles_per_line),
    $bubbles_per_line);     $bubbles_per_line);
   
Line 179  sub grade_response { Line 178  sub grade_response {
     my $part=$Apache::inputtags::part;      my $part=$Apache::inputtags::part;
     my $id = $Apache::inputtags::response['-1'];      my $id = $Apache::inputtags::response['-1'];
     my %responsehash;      my %responsehash;
     $responsehash{$whichfoils[$response]}=$response;      $responsehash{$whichfoils->[$response]}=$response;
     my $responsestr=&Apache::lonnet::hash2str(%responsehash);      my $responsestr=&Apache::lonnet::hash2str(%responsehash);
     my %previous=&Apache::response::check_for_previous($responsestr,      my %previous=&Apache::response::check_for_previous($responsestr,
        $part,$id);         $part,$id);
Line 232  sub end_foilgroup { Line 231  sub end_foilgroup {
  '-2');   '-2');
     my $randomize = &Apache::lonxml::get_param('randomize',$parstack,      my $randomize = &Apache::lonxml::get_param('randomize',$parstack,
        $safeeval,'-2');         $safeeval,'-2');
     my ($answer,@shown) = &whichfoils($max,$randomize);      my ($answer, @shown) = &whichfoils($max, $randomize);
     $answer_count = scalar(@shown);      $answer_count = scalar(@shown);
   
     if ($target eq 'web' || $target eq 'tex') {      if ($target eq 'web' || $target eq 'tex') {
  $result=&displayfoils($target,   $result=&displayfoils($target,
       $max,        $answer, \@shown,
       $randomize,  
       $direction,        $direction,
       $bubbles_per_line);        $bubbles_per_line);
     } elsif ($target eq 'answer' ) {      } elsif ($target eq 'answer' ) {
  $result=&displayanswers($max,$randomize);   $result=&displayanswers($answer, \@shown);
     } elsif ( $target eq 'grade') {      } elsif ( $target eq 'grade') {
  &grade_response($max,$randomize,   &grade_response($answer, \@shown, $bubbles_per_line);
                                 $bubbles_per_line);  
     }  elsif ( $target eq 'analyze') {      }  elsif ( $target eq 'analyze') {
  &Apache::response::analyze_store_foilgroup(\@shown,   &Apache::response::analyze_store_foilgroup(\@shown,
    ['text','value','location']);     ['text','value','location']);
Line 389  Respects Line 386  Respects
   - and selects a single correct statement from all possilble true statments    - and selects a single correct statement from all possilble true statments
   - and limits it to a toal of $max foils    - and limits it to a toal of $max foils
   
   WARNING: this routine uses the random number generator, it should only
   be called once per target, otherwise it can cause randomness changes in
   homework problems.
   
 Arguments  Arguments
   $max - maximum number of foils to select (including the true one)    $max - maximum number of foils to select (including the true one)
          (so a max of 5 is: 1 true, 4 false)           (so a max of 5 is: 1 true, 4 false)
Line 539  sub whichfoils { Line 540  sub whichfoils {
 }  }
   
 sub displayfoils {  sub displayfoils {
     my ($target,$max,$randomize,$direction, $bubbles_per_line)=@_;      my ($target,$answer,$whichfoils,$direction, $bubbles_per_line)=@_;
     my $result;      my $result;
   
     my ($answer,@whichfoils)=&whichfoils($max,$randomize);  
     my $part=$Apache::inputtags::part;      my $part=$Apache::inputtags::part;
     my $solved=$Apache::lonhomework::history{"resource.$part.solved"};      my $solved=$Apache::lonhomework::history{"resource.$part.solved"};
     if ( ($target ne 'tex') &&      if ( ($target ne 'tex') &&
Line 552  sub displayfoils { Line 552  sub displayfoils {
  $result.='<table><tr>';   $result.='<table><tr>';
     }      }
  }   }
  foreach my $name (@whichfoils) {   foreach my $name (@{ $whichfoils }) {
     if ($direction eq 'horizontal') {      if ($direction eq 'horizontal') {
  if ($target ne 'tex') { $result.='<td>'; }   if ($target ne 'tex') { $result.='<td>'; }
     }      }
Line 593  sub displayfoils { Line 593  sub displayfoils {
  if ($target ne 'tex' && $direction eq 'horizontal') {   if ($target ne 'tex' && $direction eq 'horizontal') {
     $result.="<table><tr>";      $result.="<table><tr>";
  }   }
  foreach my $name (@whichfoils) {   foreach my $name (@{ $whichfoils }) {
     if ($target ne 'tex') {      if ($target ne 'tex') {
  if ($direction eq 'horizontal') {   if ($direction eq 'horizontal') {
     $result.="<td>";       $result.="<td>"; 
Line 652  sub displayallanswers { Line 652  sub displayallanswers {
 }  }
   
 sub displayanswers {  sub displayanswers {
     my ($max,$randomize)=@_;      my ($answer, $whichopt)=@_;
     my ($answer,@whichopt) = &whichfoils($max,$randomize);  
     my $result=&Apache::response::answer_header('radiobuttonresponse');      my $result=&Apache::response::answer_header('radiobuttonresponse');
     if ($Apache::lonhomework::type eq 'exam') {      if ($Apache::lonhomework::type eq 'exam') {
  my $correct = ('A'..'Z')[$answer];   my $correct = ('A'..'Z')[$answer];
  $result.=&Apache::response::answer_part('radiobuttonresponse',   $result.=&Apache::response::answer_part('radiobuttonresponse',
  $correct);   $correct);
     }      }
     foreach my $name (@whichopt) {      foreach my $name (@{ $whichopt }) {
  $result.=&Apache::response::answer_part('radiobuttonresponse',   $result.=&Apache::response::answer_part('radiobuttonresponse',
  $Apache::response::foilgroup{$name.'.value'});   $Apache::response::foilgroup{$name.'.value'});
     }      }

Removed from v.1.122  
changed lines
  Added in v.1.123


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