Diff for /loncom/homework/radiobuttonresponse.pm between versions 1.153.6.8 and 1.153.6.9

version 1.153.6.8, 2012/01/30 11:36:55 version 1.153.6.9, 2012/02/04 20:40:07
Line 247  sub end_foilgroup { Line 247  sub end_foilgroup {
     my $part             = $Apache::inputtags::part;      my $part             = $Apache::inputtags::part;
     my $bubbles_per_line = &getbubblesnum( $part, $id );      my $bubbles_per_line = &getbubblesnum( $part, $id );
   
   
     if (   $target eq 'grade'      if (   $target eq 'grade'
         || $target eq 'web'          || $target eq 'web'
         || $target eq 'answer'          || $target eq 'answer'
Line 538  sub display_survey_html { Line 539  sub display_survey_html {
   
 }  }
   
   ##
   #  Generate LaTeX for surveys.
   #  
   #   @param $names - names of the foils to display.
   #   @param $showanswer - flag that is true to display answers.
   #   @param $lastresponse - Reference to a hash the indicates the last response.
   #   @param $direction    - Orientation of foils ('horiztonal' or otherwise).
   #   @param $venv         - LaTeX name for vertical env.
   #
   #   @return string
   #   @retval LaTeX rendering of the survey question.
   
   sub latex_survey {
       my ($names, $showanswer, $lastresponse, $direction, $venv) = @_;
   
       my $result;
   
   
    
   
       if ($showanswer) {
   
    $result .= "\\begin{$venv}";
    foreach my $name (@{$names}) {
       
       
       $result .= '\item \vskip -2mm ';
       
       if ( defined( $lastresponse->{$name} ) ) {
    $result .= '}';
       }
       $result .= $Apache::response::foilgroup{ $name . '.text' } . ' ';
    }
    $result .= "\\end{$venv}";
   
       } elsif ( $env{'form.pdfFormFields'} eq 'yes'
         && $Apache::inputtags::status[-1] eq 'CAN_ANSWER') {
    $result .= &display_pdf_form($names, $direction, $venv);
       } else {
    if ($direction eq 'horizontal') {
       my @foil_texts = &get_foil_texts($names);
       $result .=  &Apache::caparesponse::make_horizontal_latex_bubbles(
       $names, \@foil_texts, '$\bigcirc$');
    } else {
       $result .= "\\begin{$venv}";
   
       my $temp = 0;
       my $i    = 0;
       foreach my $name (@{$names}) {
   
    $result .= '\item \vskip -2mm ';
   
    if ($env{'form.pdfFormFields'} ne 'yes'
       or $Apache::inputtags::status[-1] ne 'CAN_ANSWER' )
    {
       $result .=
    '$\bigcirc$'
    . $Apache::response::foilgroup{ $name . '.text' }
       . '\\\\';    #' stupid emacs
    }
   
    $i++;    
    $temp++;
   
    $result .= '\vskip 0 mm ';
       }
       $result .= "\\end{$venv}";
    }
   
   
       }
       
       return $result;
   
       
   }
   ##
   #  Figure out the LaTeX environment in which to wrap the LaTeX vertical output.
   #
   # @return string
   # @retval the environment name.  The LaTeX should be wrapped a 
   #    \begin{retval} \end{retval} pair.
   #
   sub latex_vertical_environment {
       if ($env{'form.pdfFormFields'} eq 'yes'
    && $Apache::inputtags::status[-1] eq 'CAN_ANSWER') {
    return 'itemize';
       } else {
    return 'enumerate';
       }
   }
   
   
   
 ##  ##
 #  #
Line 554  sub displayallfoils{ Line 648  sub displayallfoils{
     my ( $direction, $target ) = @_;      my ( $direction, $target ) = @_;
     my $result;      my $result;
     &Apache::lonxml::debug("survey style display");      &Apache::lonxml::debug("survey style display");
   
     my @names;      my @names;
   
     if ( $Apache::response::foilgroup{'names'} ) {      if ( $Apache::response::foilgroup{'names'} ) {
         @names = @{ $Apache::response::foilgroup{'names'} };          @names = @{ $Apache::response::foilgroup{'names'} };
     }      }
   
     # Figure out how to bracket the list of foils for  
     # the TeX target:  
     #  
   
     my $begin_environment;  
     my $end_environment;  
       
     if ($target eq 'tex') {  
   
  # Decide how to bracket the list of foils:  
   
   
         if (   $env{'form.pdfFormFields'} eq 'yes'  
             && $Apache::inputtags::status[-1] eq 'CAN_ANSWER' )  
         {  
             $begin_environment = '\begin{itemize}';  
     $end_environment   = '\end{itemize}';  
         }  
         else {  
             $begin_environment = '\begin{enumerate}';  
     $end_environment   = '\end{enumerate}';  
         }  
  $result .= $begin_environment;  
     }  
   
     my $temp = 0;  
     my $i    = 0;  
     my $id   = $Apache::inputtags::response['-1'];      my $id   = $Apache::inputtags::response['-1'];
     my $part = $Apache::inputtags::part;      my $part = $Apache::inputtags::part;
     my $showanswer;      
     my $lastresponse;      my $showanswer = &Apache::response::show_answer();
     $showanswer = &Apache::response::show_answer();  
   
     my $lastresponse = &get_last_survey_response($part, $showanswer, $id);      my $lastresponse = &get_last_survey_response($part, $showanswer, $id);
   
     my $used_names = &remove_unused(\@names);      my $used_names = &remove_unused(\@names);
   
   
     if ($target ne 'tex') {      if ($target ne 'tex') {
  $result .= &display_survey_html($used_names, $part, $showanswer, $lastresponse, $direction);   $result .= &display_survey_html(
     } else {      $used_names, $part, $showanswer, $lastresponse, $direction
    );
       } else {
   
    my $vertical_env = &latex_vertical_environment();
    $result .= &latex_survey(
       $used_names, $showanswer, $lastresponse, $direction, $vertical_env
    );
   
  if ($showanswer) {  
     foreach my $name (@{$used_names}) {  
  if ( $Apache::response::foilgroup{ $name . '.value' } ne 'unused' )  
  {  
       
     $result .= '\item \vskip -2mm ';  
       
     if ( defined( $lastresponse->{$name} ) ) {  
  $result .= '}';  
     }  
     $result .= $Apache::response::foilgroup{ $name . '.text' };  
  }  
     }  
  } else {  
     foreach my $name (@{$used_names}) {  
  if ( $Apache::response::foilgroup{ $name . '.value' } ne 'unused' )  
  {  
     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 .= '\item \vskip -2mm ';  
     }  
       
     if (   $env{'form.pdfFormFields'} ne 'yes'  
    or $Apache::inputtags::status[-1] ne 'CAN_ANSWER' )  
     {  
  $result .=  
     '$\bigcirc$'  
     . $Apache::response::foilgroup{ $name . '.text' }  
  . '\\\\';    #' stupid emacs  
     }  
     $i++;  
   
     $temp++;  
       
     $result .= '\vskip 0 mm ';  
  }  
     }  
  }  
     }      }
   
   
     # Close tex bracketing:  
   
     if ($target eq 'tex') {  
  $result .= $end_environment;  
     }  
     return $result;      return $result;
 }  }
   
Line 1084  sub display_foils_html { Line 1100  sub display_foils_html {
 # @param $whichfoils       - Reference to an array that contains the foil names to display  # @param $whichfoils       - Reference to an array that contains the foil names to display
 # @param $bubbles_per_line - Number of bubbles on a line.  # @param $bubbles_per_line - Number of bubbles on a line.
 # @param $direction        - Rendering direction 'horizontal' is what we're looking for.  # @param $direction        - Rendering direction 'horizontal' is what we're looking for.
 # @param $vbegin           - Start latex fragment in vertical rendering.  # @param $venv             - Name of LaTeX environment to use for vertical rendering.
 # @param $vend             - End latex fragmentin vertical rendering.  
 #  #
 # @return string  # @return string
 # @return the latex rendering of the exam problem.  # @return the latex rendering of the exam problem.
 #  #
 #  #
 sub display_latex_exam {  sub display_latex_exam {
     my ($whichfoils, $bubbles_per_line, $direction, $vbegin, $vend) = @_;      my ($whichfoils, $bubbles_per_line, $direction, $venv) = @_;
     my $result;      my $result;
     my $numlines;      my $numlines;
     my $bubble_number = 0;      my $bubble_number = 0;
Line 1111  sub display_latex_exam { Line 1126  sub display_latex_exam {
   
   
     } else {      } else {
  $result .= $vbegin;   $result .= "\\begin{$venv}";
   
  # This section puts out the prefix that tells the user   # This section puts out the prefix that tells the user
  # (if necessary) to only choose one bubble in the next n lines   # (if necessary) to only choose one bubble in the next n lines
Line 1165  sub display_latex_exam { Line 1180  sub display_latex_exam {
     $i++;      $i++;
     $bubble_number++;      $bubble_number++;
  }   }
  $result .= $vend   $result .= "\\end{$venv}";
   
     }      }
   
Line 1178  sub display_latex_exam { Line 1193  sub display_latex_exam {
 #  #
 #  @param $whichfoils - The foils to display  #  @param $whichfoils - The foils to display
 #  @param $direction  - Display direction ('horizontal' is what matters to us).  #  @param $direction  - Display direction ('horizontal' is what matters to us).
 #  @param $vbegin     - Begin the vertical environment being used.  #  @param $venv       - Vertical env. to use for vertical rendering.
 #  @param  $vend      - End the vertical environment being used.  #  @param  $vend      - End the vertical environment being used.
 #  #
 #  @return string  #  @return string
 #  @retval - The LaTeX rendering of the resource.'  #  @retval - The LaTeX rendering of the resource.'
 #  #
 sub display_latex {  sub display_latex {
     my ($whichfoils, $direction, $vbegin, $vend) = @_;      my ($whichfoils, $direction, $venv) = @_;
     my $result;      my $result;
   
     # how we render depends on the direction.      # how we render depends on the direction.
Line 1199  sub display_latex { Line 1214  sub display_latex {
  $result .= &Apache::caparesponse::make_horizontal_latex_bubbles(   $result .= &Apache::caparesponse::make_horizontal_latex_bubbles(
     $whichfoils, \@foil_texts, '');      $whichfoils, \@foil_texts, '');
     } else {      } else {
  $result .= $vbegin;   $result .= "\\begin{$venv}";
  foreach my $name (@{$whichfoils}) {   foreach my $name (@{$whichfoils}) {
     $result .=  '\vspace*{-2 mm}\item '      $result .=  '\vspace*{-2 mm}\item '
  . $Apache::response::foilgroup{ $name . '.text' };   . $Apache::response::foilgroup{ $name . '.text' };
  }   }
   
  $result .= $vend;   $result .= "\\end{$venv}";
     }      }
     return $result;      return $result;
 }  }
Line 1220  sub display_latex { Line 1235  sub display_latex {
 #                     they should be displayed.  #                     they should be displayed.
 # @param $direction  - Rendering direction.  'horiztonal' means inputs are laid out  # @param $direction  - Rendering direction.  'horiztonal' means inputs are laid out
 #                      horizontally otherwise they are stacked vertically.  #                      horizontally otherwise they are stacked vertically.
   # @param $venv       - Vertical environment in which to wrap the foils.
 #  #
 # @return string  # @return string
 # @retval String containing the rendering of the resource.  # @retval String containing the rendering of the resource.
 #  #
   # TODO: Take into account direction!!!
   #
 sub display_pdf_form {  sub display_pdf_form {
     my ($whichfoils) = @_;      my ($whichfoils, $direction, $venv) = @_;
     my $temp = 0;      my $temp = 0;
     my $result;      my $result;
   
       $result .= "\\begin{$venv}";
     foreach my $name ( @{$whichfoils} ) {      foreach my $name ( @{$whichfoils} ) {
   
  my $fieldname =   my $fieldname =
Line 1247  sub display_pdf_form { Line 1266  sub display_pdf_form {
   
  $temp++;   $temp++;
     }      }
       $result .= "\\end{$venv}";
   
     return $result;      return $result;
 }  }
Line 1290  sub displayfoils { Line 1310  sub displayfoils {
        # LaTeX rendering:         # LaTeX rendering:
     } else {      } else {
   
         my $i             = 0;  
         my $bubble_number = 0;  
         my $line          = 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 $numlines;   my $numlines;
   
  # Decide how to bracket the list of foils:   # Decide how to bracket the list of foils:
   
  my $begin_environment;   my $vertical_env = &latex_vertical_environment();
  my $end_environment;  
   
         if (   $env{'form.pdfFormFields'} eq 'yes'  
             && $Apache::inputtags::status[-1] eq 'CAN_ANSWER' )  
         {  
             $begin_environment = '\begin{itemize}';  
     $end_environment   = '\end{itemize}';  
         }  
         else {  
             $begin_environment = '\begin{enumerate}';  
     $end_environment   = '\end{enumerate}';  
         }  
   
  # Rendering for latex exams.   # Rendering for latex exams.
   
  if ( ( $Apache::lonhomework::type eq 'exam' ) )   if ( ( $Apache::lonhomework::type eq 'exam' ) )
  {   {
     $result .= &display_latex_exam(      $result .= &display_latex_exam(
  $whichfoils, $bubbles_per_line, $direction, $begin_environment,    $whichfoils, $bubbles_per_line, $direction, $vertical_env);
  $end_environment);  
   
     $result .= '\vskip 0mm ';      $result .= '\vskip 0mm ';
           
Line 1336  sub displayfoils { Line 1337  sub displayfoils {
     if ( ($env{'form.pdfFormFields'} eq 'yes')      if ( ($env{'form.pdfFormFields'} eq 'yes')
     && ($Apache::inputtags::status[-1] eq 'CAN_ANSWER'))      && ($Apache::inputtags::status[-1] eq 'CAN_ANSWER'))
     {      {
  $result .= $begin_environment;   $result .= &display_pdf_form($whichfoils, $direction, $vertical_env);
  $result .= &display_pdf_form($whichfoils, $direction);  
  $result .= $end_environment;  
     } else {      } else {
  $result .= &display_latex(   $result .= &display_latex($whichfoils,  $direction, $vertical_env );
      $whichfoils,  $direction, $begin_environment, $end_environment  
     );  
     }      }
     $result .= '\vskip 0 mm ';       $result .= '\vskip 0 mm '; 
                 

Removed from v.1.153.6.8  
changed lines
  Added in v.1.153.6.9


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