Diff for /loncom/homework/radiobuttonresponse.pm between versions 1.113 and 1.119

version 1.113, 2007/03/27 19:20:49 version 1.119, 2007/06/20 22:50:27
Line 31  use strict; Line 31  use strict;
 use HTML::Entities();  use HTML::Entities();
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::lonnet;  use Apache::lonnet;
   use Apache::response;
   
   my $bubbles_per_line = 10;
   
 BEGIN {  BEGIN {
     &Apache::lonxml::register('Apache::radiobuttonresponse',('radiobuttonresponse'));      &Apache::lonxml::register('Apache::radiobuttonresponse',('radiobuttonresponse'));
Line 39  BEGIN { Line 42  BEGIN {
 sub start_radiobuttonresponse {  sub start_radiobuttonresponse {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
     my $result;      my $result;
   
     #when in a radiobutton response use these      #when in a radiobutton response use these
     &Apache::lonxml::register('Apache::radiobuttonresponse',('foilgroup','foil','conceptgroup'));      &Apache::lonxml::register('Apache::radiobuttonresponse',('foilgroup','foil','conceptgroup'));
     push (@Apache::lonxml::namespace,'radiobuttonresponse');      push (@Apache::lonxml::namespace,'radiobuttonresponse');
Line 142  sub grade_response { Line 146  sub grade_response {
     my ($answer,@whichfoils)=&whichfoils($max,$randomize);      my ($answer,@whichfoils)=&whichfoils($max,$randomize);
     if ( !&Apache::response::submitted() ) { return; }      if ( !&Apache::response::submitted() ) { return; }
     my $response;      my $response;
       
       # Need to know how many foils we have so that I know how many
       # bubble lines to consume:
       
       my $numfoils = scalar(@whichfoils);
       my $bubble_lines = int($numfoils / $bubbles_per_line);
       if (($numfoils % $bubbles_per_line) != 0) {
    $bubble_lines++; # Partial line of bubbles too.
       }
       
       
     if ($env{'form.submitted'} eq 'scantron') {      if ($env{'form.submitted'} eq 'scantron') {
  $response=&Apache::response::getresponse();   $response = &Apache::response::getresponse(1,undef,$bubble_lines,
    $bubbles_per_line);
   
     } else {      } else {
  $response = $env{'form.HWVAL_'.$Apache::inputtags::response['-1']};   $response = $env{'form.HWVAL_'.$Apache::inputtags::response['-1']};
     }      }
       &Apache::lonxml::increment_counter($bubble_lines-1);
   
     if ( $response !~ /[0-9]+/) { return; }      if ( $response !~ /[0-9]+/) { return; }
     my $part=$Apache::inputtags::part;      my $part=$Apache::inputtags::part;
     my $id = $Apache::inputtags::response['-1'];      my $id = $Apache::inputtags::response['-1'];
Line 180  sub end_foilgroup { Line 199  sub end_foilgroup {
  if ( $style eq 'survey'  && $target ne 'analyze') {   if ( $style eq 'survey'  && $target ne 'analyze') {
     if ($target eq 'web' || $target eq 'tex') {      if ($target eq 'web' || $target eq 'tex') {
  $result=&displayallfoils($direction, $target);   $result=&displayallfoils($direction, $target);
  if ($target eq 'web') {  
     &setup_prior_tries_hash();  
  }  
     } elsif ( $target eq 'answer' ) {      } elsif ( $target eq 'answer' ) {
  $result=&displayallanswers();   $result=&displayallanswers();
     } elsif ( $target eq 'grade' ) {      } elsif ( $target eq 'grade' ) {
Line 196  sub end_foilgroup { Line 212  sub end_foilgroup {
        $safeeval,'-2');         $safeeval,'-2');
     if ($target eq 'web' || $target eq 'tex') {      if ($target eq 'web' || $target eq 'tex') {
  $result=&displayfoils($target,$max,$randomize,$direction);   $result=&displayfoils($target,$max,$randomize,$direction);
  if ($target eq 'web') {  
     &setup_prior_tries_hash();  
  }  
     } elsif ($target eq 'answer' ) {      } elsif ($target eq 'answer' ) {
  $result=&displayanswers($max,$randomize);   $result=&displayanswers($max,$randomize);
     } elsif ( $target eq 'grade') {      } elsif ( $target eq 'grade') {
Line 214  sub end_foilgroup { Line 227  sub end_foilgroup {
  }   }
  $Apache::lonxml::post_evaluate=0;   $Apache::lonxml::post_evaluate=0;
     }      }
       if ($target eq 'web') {
    &Apache::response::setup_prior_tries_hash(\&format_prior_answer,
     [\%Apache::response::foilgroup]);
       }
       
     &Apache::response::poprandomnumber();      &Apache::response::poprandomnumber();
     &Apache::lonxml::increment_counter();      &Apache::lonxml::increment_counter();
     return $result;      return $result;
Line 237  sub getfoilcounts { Line 255  sub getfoilcounts {
     return ($truecnt,$falsecnt);      return ($truecnt,$falsecnt);
 }  }
   
 sub setup_prior_tries_hash {  sub format_prior_answer {
     my $part=$Apache::inputtags::part;      my ($mode,$answer,$other_data) = @_;
     my $id=$Apache::inputtags::response[-1];      my $foil_data = $other_data->[0];
     foreach my $i (1..$Apache::lonhomework::history{'version'}) {      my %response = &Apache::lonnet::str2hash($answer);
  my $key = "$i:resource.$part.$id.submission";      my ($name)   = keys(%response);
  next if (!exists($Apache::lonhomework::history{"$key"}));      return '<span class="LC_prior_radiobutton">'.
  my %response =    $foil_data->{$name.'.text'}.'</span>';
     &Apache::lonnet::str2hash($Apache::lonhomework::history{$key});  
  my ($name) = keys(%response);  
  $Apache::inputtags::submission_display{$key} =   
     $Apache::response::foilgroup{$name.'.text'}  
     }  
 }  }
   
 sub displayallfoils {  sub displayallfoils {
Line 514  sub displayfoils { Line 528  sub displayfoils {
     } else {      } else {
  my @alphabet = ('A'..'Z');   my @alphabet = ('A'..'Z');
  my $i = 0;   my $i = 0;
    my $bubble_number = 0;
  my $temp=0;     my $temp=0;  
  my $id=$Apache::inputtags::response['-1'];   my $id=$Apache::inputtags::response['-1'];
  my $part=$Apache::inputtags::part;   my $part=$Apache::inputtags::part;
Line 543  sub displayfoils { Line 558  sub displayfoils {
  if ($Apache::lonhomework::type eq 'exam') {   if ($Apache::lonhomework::type eq 'exam') {
     $result .= '{\small \textbf{'.$alphabet[$i].'}}$\bigcirc$'.$Apache::response::foilgroup{$name.'.text'}.'\\\\';  #' stupid emacs      $result .= '{\small \textbf{'.$alphabet[$i].'}}$\bigcirc$'.$Apache::response::foilgroup{$name.'.text'}.'\\\\';  #' stupid emacs
     $i++;      $i++;
       $bubble_number++;
       if($bubble_number >= $bubbles_per_line) {
    $i = 0;
    $bubble_number = 0;
    &Apache::lonxml::increment_counter(1);
    $result.='\item[\textbf{'.$Apache::lonxml::counter.'}.]';
       }
  } else {   } else {
     $result .= '\vspace*{-2 mm}\item '.$Apache::response::foilgroup{$name.'.text'};      $result .= '\vspace*{-2 mm}\item '.$Apache::response::foilgroup{$name.'.text'};
  }   }

Removed from v.1.113  
changed lines
  Added in v.1.119


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