Diff for /loncom/homework/radiobuttonresponse.pm between versions 1.153.6.2 and 1.153.6.3

version 1.153.6.2, 2012/01/21 20:54:57 version 1.153.6.3, 2012/01/21 21:40:41
Line 33  use Apache::lonnet; Line 33  use Apache::lonnet;
 use Apache::response;  use Apache::response;
   
 my $default_bubbles_per_line = 10;  my $default_bubbles_per_line = 10;
   my @alphabet      = ( 'A' .. 'Z' ); # Foil labels.
   
   
   
 BEGIN {  BEGIN {
     &Apache::lonxml::register( 'Apache::radiobuttonresponse',      &Apache::lonxml::register( 'Apache::radiobuttonresponse',
Line 800  sub html_radiobutton { Line 803  sub html_radiobutton {
     return $result;      return $result;
   
 }  }
   ##
   # Return a reference to the last response hash. This hash has exactly
   # one or zero entries.  The one entry is keyed by the foil 'name' of
   # the prior response
   #
   # @param $part - Number of the problem part.
   # 
   # @return reference to a hash.
   # @retval see above.
   #
   sub get_last_response {
       my ($part) = @_;
   
       my $id = $Apache::inputtags::response['-1'];
       my ( $lastresponse, $newvariation );
       
       if ((( $Apache::lonhomework::history{"resource.$part.type"} eq  'randomizetry')
    || ( $Apache::lonhomework::type eq 'randomizetry' )
    )
    && ( $Apache::inputtags::status[-1] eq 'CAN_ANSWER' )
    )
       {
   
    if ( $env{ 'form.' . $part . '.rndseed' } ne
        $Apache::lonhomework::history{"resource.$part.rndseed"} )
    {
       $newvariation = 1;
    }
       }
       unless ($newvariation) {
    $lastresponse =
       $Apache::lonhomework::history{"resource.$part.$id.submission"};
       }
       my %lastresponse = &Apache::lonnet::str2hash($lastresponse);
   
       return \%lastresponse;
   }
   
 ##  ##
 # Display foils in html rendition:  # Display foils in html rendition.:
 #  #
 # @param $whichfoils - Set of foils to display.  # @param $whichfoils - Set of foils to display.
 # @param $target     - Rendition target...there are several html targets.  # @param $target     - Rendition target...there are several html targets.
Line 871  sub display_foils_html { Line 911  sub display_foils_html {
  $result .= $finalclose;   $result .= $finalclose;
   
     } else {      } else {
    $result .= '<br />'; # end line prior to foilgroup:
   
  #  Not showing the answers, we need to generate the HTML appropriate   #  Not showing the answers, we need to generate the HTML appropriate
  #  to allowing the student to respond.   #  to allowing the student to respond.
   
    my $item_pretext;
    my $item_posttext;
    my $lastresponse = &get_last_response($part);
   
    if ( $direction eq 'horizontal' ) {
       $item_pretext  = '<td>';
       $item_posttext = '</td>';
    }
    else {
       $item_pretext = '<br/>';
    }
    my $item_no = 0;
    foreach my $name (@{$whichfoils}) {
       $result .= $item_pretext;
       $result .= &html_radiobutton(
    $part, $Apache::inputtags::response[-1],
    $name, $lastresponse, $item_no
    );
       $result .= $item_posttext;
       $item_no++;
    }
   
    if ($direction eq 'horizontal' ) {
               $result .= "</tr></table>";
           } else {
        $result .= "<br />"; 
    }
     }      }
   
     return $result;      return $result;
Line 896  sub displayfoils { Line 964  sub displayfoils {
  $result = &display_foils_html(   $result = &display_foils_html(
     $whichfoils, $target, $direction, $part, $solved, 1);      $whichfoils, $target, $direction, $part, $solved, 1);
   
     }      }  else {
     else {  
         my @alphabet      = ( 'A' .. 'Z' );  
         my $i             = 0;          my $i             = 0;
         my $bubble_number = 0;          my $bubble_number = 0;
         my $line          = 0;          my $line          = 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;
         my ( $lastresponse, $newvariation );  
   
         if (   if ($target ne 'tex') {
             (      $result = &display_foils_html($whichfoils, $target, $direction, $part,
                 (   0, 0);
                     $Apache::lonhomework::history{"resource.$part.type"} eq   } else {
                     'randomizetry'  
                 )  
                 || ( $Apache::lonhomework::type eq 'randomizetry' )      my $numlines;
             )      
             && ( $Apache::inputtags::status[-1] eq 'CAN_ANSWER' )      
           )      
         {      # Rendering for latex exams.
       
             if ( $env{ 'form.' . $part . '.rndseed' } ne      if ( ( $Apache::lonhomework::type eq 'exam' ) )
                 $Apache::lonhomework::history{"resource.$part.rndseed"} )      {
             {   my $numitems = scalar( @{$whichfoils} );
                 $newvariation = 1;   $numlines = int( $numitems / $bubbles_per_line );
             }   if ( ( $numitems % $bubbles_per_line ) != 0 ) {
         }      $numlines++;
         unless ($newvariation) {   }
             $lastresponse =   if ( $numlines < 1 ) {
               $Apache::lonhomework::history{"resource.$part.$id.submission"};      $numlines = 1;
         }   }
         my %lastresponse = &Apache::lonnet::str2hash($lastresponse);   if ( $numlines > 1 ) {
         if ( $target ne 'tex' && $direction eq 'horizontal' ) {      my $linetext;
             $result .= "<table><tr>";      for ( my $i = 0 ; $i < $numlines ; $i++ ) {
         }   $linetext .= $Apache::lonxml::counter + $i . ', ';
         my $numlines;      }
         if ( ( $target eq 'tex' ) && ( $Apache::lonhomework::type eq 'exam' ) )      $linetext =~ s/,\s$//;
         {      $result .=
             my $numitems = scalar( @{$whichfoils} );   '\item[\small {\textbf{'
             $numlines = int( $numitems / $bubbles_per_line );   . $linetext . '}}]'
             if ( ( $numitems % $bubbles_per_line ) != 0 ) {   . ' {\footnotesize '
                 $numlines++;   . &mt( '(Bubble once in [_1] lines)', $numlines )
             }   . '} \hspace*{\fill} \\\\';
             if ( $numlines < 1 ) {   }
                 $numlines = 1;   else {
             }      $result .= '\item[\textbf{' . $Apache::lonxml::counter . '}.]';
             if ( $numlines > 1 ) {   }
                 my $linetext;      } # tex/exam
                 for ( my $i = 0 ; $i < $numlines ; $i++ ) {      
                     $linetext .= $Apache::lonxml::counter + $i . ', ';      
                 }      foreach my $name ( @{$whichfoils} ) {
                 $linetext =~ s/,\s$//;  
                 $result .=  
                     '\item[\small {\textbf{'   if ( $Apache::lonhomework::type eq 'exam' ) {
                   . $linetext . '}}]'      if ( $bubble_number >= $bubbles_per_line ) {
                   . ' {\footnotesize '   $line++;
                   . &mt( '(Bubble once in [_1] lines)', $numlines )   $i             = 0;
                   . '} \hspace*{\fill} \\\\';   $bubble_number = 0;
             }      }
             else {      my $identifier;
                 $result .= '\item[\textbf{' . $Apache::lonxml::counter . '}.]';      if ( $numlines > 1 ) {
             }   $identifier = $Apache::lonxml::counter + $line;
         }      }
  my $item_pretext;      $result .=
  my $item_posttext;   '{\small \textbf{'
  if ( $target ne 'tex' ) {   . $identifier
     if ( $direction eq 'horizontal' ) {   . $alphabet[$i]
  $item_pretext  = '<td>';   . '}}$\bigcirc$'
  $item_posttext = '</td>';   . $Apache::response::foilgroup{ $name . '.text' }
       . '\\\\';    #' stupid emacs
       $i++;
       $bubble_number++;
    }
    else {
       if (   $env{'form.pdfFormFields'} eq 'yes'
      && $Apache::inputtags::status[-1] eq 'CAN_ANSWER' )
       {
    my $fieldname =
       $env{'request.symb'} 
    . '&part_'
       . $Apache::inputtags::part
       . '&radiobuttonresponse'
       . '&HWVAL_'
       . $Apache::inputtags::response['-1'];
    $result .= '\item[{'
       . &Apache::lonxml::print_pdf_radiobutton( $fieldname,
         $temp )
       . '}]'
       . $Apache::response::foilgroup{ $name . '.text' }
    . "\n";
       }
       else {
    $result .= '\vspace*{-2 mm}\item '
       . $Apache::response::foilgroup{ $name . '.text' };
       }
    }
   
    $temp++;
     }      }
     else {      if ($target eq 'tex') {
  $item_pretext = '<br/>';   $result .= '\vskip 0 mm '; 
     }      }
  }   }
         foreach my $name ( @{$whichfoils} ) {  
   
             if ( $target ne 'tex' ) {  
  $result .= $item_pretext;  
  $result .= &html_radiobutton(  
     $part, $Apache::inputtags::response[-1],  
     $name, $lastresponse, $temp  
     );  
  $result .= $item_posttext;  
             }  
             else {  
                 if ( $Apache::lonhomework::type eq 'exam' ) {  
                     if ( $bubble_number >= $bubbles_per_line ) {  
                         $line++;  
                         $i             = 0;  
                         $bubble_number = 0;  
                     }  
                     my $identifier;  
                     if ( $numlines > 1 ) {  
                         $identifier = $Apache::lonxml::counter + $line;  
                     }  
                     $result .=  
                         '{\small \textbf{'  
                       . $identifier  
                       . $alphabet[$i]  
                       . '}}$\bigcirc$'  
                       . $Apache::response::foilgroup{ $name . '.text' }  
                       . '\\\\';    #' stupid emacs  
                     $i++;  
                     $bubble_number++;  
                 }  
                 else {  
                     if (   $env{'form.pdfFormFields'} eq 'yes'  
                         && $Apache::inputtags::status[-1] eq 'CAN_ANSWER' )  
                     {  
                         my $fieldname =  
                             $env{'request.symb'}   
                           . '&part_'  
                           . $Apache::inputtags::part  
                           . '&radiobuttonresponse'  
                           . '&HWVAL_'  
                           . $Apache::inputtags::response['-1'];  
                         $result .= '\item[{'  
                           . &Apache::lonxml::print_pdf_radiobutton( $fieldname,  
                             $temp )  
                           . '}]'  
                           . $Apache::response::foilgroup{ $name . '.text' }  
                           . "\n";  
                     }  
                     else {  
                         $result .= '\vspace*{-2 mm}\item '  
                           . $Apache::response::foilgroup{ $name . '.text' };  
                     }  
                 }  
             }  
   
             $temp++;  
         }  
         if ( $target ne 'tex' && $direction eq 'horizontal' ) {  
             $result .= "</tr></table>";  
         }  
     }  
     if ( $target ne 'tex'  
  && ( $direction ne 'horizontal' )   
  ) {   
      $result .= "<br />";   
     }  
     if ($target eq 'tex') {  
  $result .= '\vskip 0 mm ';   
     }      }
     return $result;      return $result;
 }  }

Removed from v.1.153.6.2  
changed lines
  Added in v.1.153.6.3


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