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

version 1.153.6.3, 2012/01/21 21:40:41 version 1.153.6.4, 2012/01/23 12:00:13
Line 121  sub start_radiobuttonresponse { Line 121  sub start_radiobuttonresponse {
         else {          else {
             $result .= ' \renewcommand{\labelenumi}{\Alph{enumi}.}';              $result .= ' \renewcommand{\labelenumi}{\Alph{enumi}.}';
         }          }
         if (   $env{'form.pdfFormFields'} eq 'yes'  
             && $Apache::inputtags::status[-1] eq 'CAN_ANSWER' )  
         {  
             $result .= '\begin{itemize}';  
         }  
         else {  
             $result .= '\begin{enumerate}';  
         }  
     }      }
     elsif ( $target eq 'analyze' ) {      elsif ( $target eq 'analyze' ) {
         my $part_id = "$Apache::inputtags::part.$id";          my $part_id = "$Apache::inputtags::part.$id";
Line 143  sub end_radiobuttonresponse { Line 136  sub end_radiobuttonresponse {
       @_;        @_;
     my $result;      my $result;
     if ( $target eq 'edit' ) { $result = &Apache::edit::end_table(); }      if ( $target eq 'edit' ) { $result = &Apache::edit::end_table(); }
     if ( $target eq 'tex' ) {  
         if (    $env{'form.pdfFormFields'} eq 'yes'  
             and $Apache::inputtags::status[-1] eq 'CAN_ANSWER' )  
         {  
             $result .= '\end{itemize}';  
         }  
         else {  
             $result .= '\end{enumerate}';  
         }  
     }  
     &Apache::response::end_response;      &Apache::response::end_response;
     pop @Apache::lonxml::namespace;      pop @Apache::lonxml::namespace;
     &Apache::lonxml::deregister( 'Apache::radiobuttonresponse',      &Apache::lonxml::deregister( 'Apache::radiobuttonresponse',
Line 947  sub display_foils_html { Line 931  sub display_foils_html {
   
     return $result;      return $result;
 }  }
   ##
   #  Display foils in exam mode for latex
   #
   # @param $whichfoils - Reference to an array that contains the foil names to display
   # @param $bubbles_per_line - Number of bubbles on a line.
   #
   # @return string
   # @return the latex rendering of the exam problem.
   #
   # @note The direction is not honored for exams.   The lines reflect the number of
   #       bubbles on an exam sheet.
   #
   sub display_latex_exam {
       my ($whichfoils, $bubbles_per_line) = @_;
       my $result;
       my $numlines;
       my $bubble_number = 0;
       my $line          = 0;
       my $i             = 0;
   
       # This section puts out the prefix that tells the user
       # (if necessary) to only choose one bubble in the next n lines
       # for problems with more than one line worth of bubbles in the grid sheet:
   
       my $numitems = scalar( @{$whichfoils} );
       $numlines = int( $numitems / $bubbles_per_line );
       if ( ( $numitems % $bubbles_per_line ) != 0 ) {
    $numlines++;
       }
       if ( $numlines < 1 ) {
    $numlines = 1;
       }
       if ( $numlines > 1 ) {
    my $linetext;
    for ( my $i = 0 ; $i < $numlines ; $i++ ) {
       $linetext .= $Apache::lonxml::counter + $i . ', ';
    }
    $linetext =~ s/,\s$//;
    $result .=
       '\item[\small {\textbf{'
       . $linetext . '}}]'
       . ' {\footnotesize '
       . &mt( '(Bubble once in [_1] lines)', $numlines )
       . '} \hspace*{\fill} \\\\';
       }
       else {
    $result .= '\item[\textbf{' . $Apache::lonxml::counter . '}.]';
       }
   
       # Now output the bubbles themselves:
   
       foreach my $name (@{$whichfoils}) {
    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 -- it thinks it needs that apostrophe to close the quote
   
    $i++;
    $bubble_number++;
       }
       
       return $result;
   
   }
   
   ##
   #  Display latex when exam mode is not on.
   #
   #  @param $whichfoils - The foils to display
   #  @param $direction  - Display direction ('horizontal' is what matters to us).
   #  @param $vbegin     - Begin the vertical environment being used.
   #  @param  $vend      - End the vertical environment being used.
   #
   #  @return string
   #  @retval - The LaTeX rendering of the resource.'
   #
   sub display_latex {
       my ($whichfoils, $direction, $vbegin, $vend) = @_;
       my $result;
   
       $result .= $vbegin;
       foreach my $name (@{$whichfoils}) {
    $result .=  '\vspace*{-2 mm}\item '
       . $Apache::response::foilgroup{ $name . '.text' };
       }
   
       $result .= $vend;
   
       return $result;
   }
   
   
 ##  ##
Line 957  sub displayfoils { Line 1043  sub displayfoils {
   
     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"};
   
       # Show answers html.
   
     if ( ( $target ne 'tex' )      if ( ( $target ne 'tex' )
         && &Apache::response::show_answer() )          && &Apache::response::show_answer() )
     {      {
   
  $result = &display_foils_html(   $result = &display_foils_html(
     $whichfoils, $target, $direction, $part, $solved, 1);      $whichfoils, $target, $direction, $part, $solved, 1);
   
    # other html
       }  elsif ($target ne 'tex') {
       $result = &display_foils_html($whichfoils, $target, $direction, $part,
     0, 0);
   
          # LaTeX rendering:
       } else {
   
     }  else {  
         my $i             = 0;          my $i             = 0;
         my $bubble_number = 0;          my $bubble_number = 0;
         my $line          = 0;          my $line          = 0;
Line 972  sub displayfoils { Line 1068  sub displayfoils {
         my $id            = $Apache::inputtags::response['-1'];          my $id            = $Apache::inputtags::response['-1'];
         my $part          = $Apache::inputtags::part;          my $part          = $Apache::inputtags::part;
   
  if ($target ne 'tex') {  
     $result = &display_foils_html($whichfoils, $target, $direction, $part,  
  0, 0);   my $numlines;
  } else {  
    # Decide how to bracket the list of foils:
   
    my $begin_environment;
    my $end_environment;
   
     my $numlines;          if (   $env{'form.pdfFormFields'} eq 'yes'
                   && $Apache::inputtags::status[-1] eq 'CAN_ANSWER' )
               {
                   $begin_environment = '\begin{itemize}';
     # Rendering for latex exams.      $end_environment   = '\end{itemize}';
           }
           else {
               $begin_environment = '\begin{enumerate}';
       $end_environment   = '\end{enumerate}';
           }
   
    # Rendering for latex exams.
   
    if ( ( $Apache::lonhomework::type eq 'exam' ) )
    {
       $result .= $begin_environment;
       $result .= &display_latex_exam($whichfoils, $bubbles_per_line);
       $result .= $end_environment;
       $result .= '\vskip 0mm ';
           
     if ( ( $Apache::lonhomework::type eq 'exam' ) )   } else {    
   
       # Different rendering for PDF form than for a
       # 'regular' answer direction is honored in both of those
       #
   
       if ( ($env{'form.pdfFormFields'} eq 'yes')
       && ($Apache::inputtags::status[-1] eq 'CAN_ANSWER'))
     {      {
  my $numitems = scalar( @{$whichfoils} );   $result .= $begin_environment;
  $numlines = int( $numitems / $bubbles_per_line );   foreach my $name ( @{$whichfoils} ) {
  if ( ( $numitems % $bubbles_per_line ) != 0 ) {      
     $numlines++;      my $fieldname =
  }   $env{'request.symb'} 
  if ( $numlines < 1 ) {          . '&part_'
     $numlines = 1;   . $Apache::inputtags::part
  }   . '&radiobuttonresponse'
  if ( $numlines > 1 ) {   . '&HWVAL_'
     my $linetext;   . $Apache::inputtags::response['-1'];
     for ( my $i = 0 ; $i < $numlines ; $i++ ) {      $result .= '\item[{'
  $linetext .= $Apache::lonxml::counter + $i . ', ';   . &Apache::lonxml::print_pdf_radiobutton( $fieldname,
     }    $temp )
     $linetext =~ s/,\s$//;   . '}]'
     $result .=  
  '\item[\small {\textbf{'  
  . $linetext . '}}]'  
  . ' {\footnotesize '  
  . &mt( '(Bubble once in [_1] lines)', $numlines )  
  . '} \hspace*{\fill} \\\\';  
  }  
  else {  
     $result .= '\item[\textbf{' . $Apache::lonxml::counter . '}.]';  
  }  
     } # tex/exam  
       
       
     foreach my $name ( @{$whichfoils} ) {  
   
   
  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' }   . $Apache::response::foilgroup{ $name . '.text' }
     . '\\\\';    #' stupid emacs      . "\n";
     $i++;      
     $bubble_number++;      $temp++;
  }  
  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' };  
     }  
  }   }
    $result .= $end_environment;
  $temp++;      } else {
     }   $result .= &display_latex(
     if ($target eq 'tex') {       $whichfoils,  $direction, $begin_environment, $end_environment
  $result .= '\vskip 0 mm ';       );
     }      }
       $result .= '\vskip 0 mm '; 
          
  }   }
   
   
     }      }
     return $result;      return $result;
 }  }

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


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