Diff for /loncom/interface/lonprintout.pm between versions 1.237 and 1.243

version 1.237, 2003/09/22 20:00:08 version 1.243, 2003/09/30 14:43:26
Line 611  sub IndexCreation { Line 611  sub IndexCreation {
     return $texversion;      return $texversion;
 }  }
   
   sub print_latex_header {
       my $mode=shift;
       my $output='\documentclass[letterpaper]{article}';
       if ($mode eq 'batchmode') {
    $output.='\batchmode';
       }
       $output.='\newcommand{\keephidden}[1]{}\renewcommand{\deg}{$^{\circ}$}'.
        '\usepackage{longtable}\usepackage{textcomp}\usepackage{makeidx}'.
        '\usepackage[dvips]{graphicx}\usepackage{epsfig}\usepackage{calc}'.
        '\newenvironment{choicelist}{\begin{list}{}{\setlength{\rightmargin}{0in}'.
        '\setlength{\leftmargin}{0.13in}\setlength{\topsep}{0.05in}'.
        '\setlength{\itemsep}{0.022in}\setlength{\parsep}{0in}'.
        '\setlength{\belowdisplayskip}{0.04in}\setlength{\abovedisplayskip}{0.05in}'.
        '\setlength{\abovedisplayshortskip}{-0.04in}'.
        '\setlength{\belowdisplayshortskip}{0.04in}}}{\end{list}}'.
        '\renewenvironment{theindex}{\begin{list}{}{{\vskip 1mm \noindent \large'.
        '\textbf{Index}} \newline \setlength{\rightmargin}{0in}'.
        '\setlength{\leftmargin}{0.13in}\setlength{\topsep}{0.01in}'.
        '\setlength{\itemsep}{0.1in}\setlength{\parsep}{-0.02in}'.
        '\setlength{\belowdisplayskip}{0.01in}\setlength{\abovedisplayskip}{0.01in}'.
        '\setlength{\abovedisplayshortskip}{-0.04in}'.
        '\setlength{\belowdisplayshortskip}{0.01in}}}{\end{list}}\begin{document}';
       return $output;     
   }
   
   sub path_to_problem {
       my ($urlp,$LaTeXwidth)=@_;
       my $newurlp = '';
       $LaTeXwidth=~s/\s*mm\s*$//;
       my $HowMany = length($urlp)*2;
       if ($HowMany > $LaTeXwidth) {
    my @temporrary = split '/',$urlp;
    my $HowManyNew = 0;
    for (my $ii=0;$ii<=$#temporrary;$ii++) {
       if ($temporrary[$ii] ne '') {
    $HowManyNew += length($temporrary[$ii])*2;
    if ($HowManyNew < $LaTeXwidth ) {
       $newurlp .=  '/'.$temporrary[$ii];
    } else {
       $HowManyNew = 0;
       $newurlp .=  '|\vskip -1 mm \noindent \verb|';
       $ii--;
    }
       }
    }
       }
       return '{\small\noindent\verb|'.$newurlp.'|\vskip 0 mm}';
   }
   
 sub output_data {  sub output_data {
     my ($r,$helper,$rparmhash) = @_;      my ($r,$helper,$rparmhash) = @_;
Line 655  ENDPART Line 703  ENDPART
     $currentURL=$helper->{'VARS'}->{'postdata'};      $currentURL=$helper->{'VARS'}->{'postdata'};
  } else {   } else {
             #prints resource from the construction space              #prints resource from the construction space
     $currentURL=$helper->{'VARS'}->{'filename'};      $currentURL='/'.$helper->{'VARS'}->{'filename'};
     $currentURL=~s/\/home\//\/~/;  
     $currentURL=~s/public_html\///;  
     if ($currentURL=~/([^?]+)/) {$currentURL=$1;}      if ($currentURL=~/([^?]+)/) {$currentURL=$1;}
  }   }
  $selectionmade = 1;   $selectionmade = 1;
  if ($currentURL=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {   if ($currentURL=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {
     my %moreenv;  
     $moreenv{'request.filename'}=$currentURL;  
     my %form;  
     $form{'grade_target'}='tex';  
     $form{'textwidth'}=$LaTeXwidth;  
     $form{'problem_split'}=$parmhash{'problem_stream_switch'};  
     $form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};  
     my $rndseed=time;      my $rndseed=time;
     if ($helper->{'VARS'}->{'curseed'}) {      my $texversion='';
  $rndseed=$helper->{'VARS'}->{'curseed'};      if ($helper->{'VARS'}->{'ANSWER_TYPE'} ne 'only') {
    my %moreenv;
    $moreenv{'request.filename'}=$currentURL;
    my %form;
    $form{'grade_target'}='tex';
    $form{'textwidth'}=$LaTeXwidth;
    $form{'problem_split'}=$parmhash{'problem_stream_switch'};
    $form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};
    if ($helper->{'VARS'}->{'curseed'}) {
       $rndseed=$helper->{'VARS'}->{'curseed'};
    }
    $form{'rndseed'}=$rndseed;
    &Apache::lonnet::appenv(%moreenv);
    &Apache::lonnet::delenv('form.counter');
    &Apache::lonxml::init_counter();
    $texversion=&Apache::lonnet::ssi($currentURL,%form);
    &Apache::lonnet::delenv('form.counter');
    &Apache::lonnet::delenv('request.filename');
     }      }
     $form{'rndseed'}=$rndseed;      if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||
     &Apache::lonnet::appenv(%moreenv);         ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) {
     &Apache::lonnet::delenv('form.counter');  
     &Apache::lonxml::init_counter();  
     my $texversion=&Apache::lonnet::ssi($currentURL,%form);  
     &Apache::lonnet::delenv('form.counter');  
     &Apache::lonnet::delenv('request.filename');  
     if($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {  
  my %form;   my %form;
  $form{'grade_target'}='answer';   $form{'grade_target'}='answer';
  $form{'answer_output_mode'}='tex';   $form{'answer_output_mode'}='tex';
  $form{'rndseed'}=$rndseed;   $form{'rndseed'}=$rndseed;
  my $answer=&Apache::lonnet::ssi($currentURL,%form);   my $answer=&Apache::lonnet::ssi($currentURL,%form);
  $texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/;   if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {
       $texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/;
    } else {
       $texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
       $texversion.='\vskip 0 mm \noindent\textbf{'.&Apache::lonnet::gettitle($helper->{'VARS'}->{'symb'}).'}\vskip 0 mm ';
       $texversion.=&path_to_problem ($currentURL,$LaTeXwidth);
       $texversion.='\vskip 1 mm '.$answer.'\end{document}';
    }
     }      }
     if ($helper->{'VARS'}->{'TABLE_INDEX'} eq 'yes') {      if ($helper->{'VARS'}->{'TABLE_INDEX'} eq 'yes') {
  $texversion=&IndexCreation($texversion,$currentURL);   $texversion=&IndexCreation($texversion,$currentURL);
Line 725  ENDPART Line 782  ENDPART
  $form{'answer_output_mode'}='tex';   $form{'answer_output_mode'}='tex';
  $form{'rndseed'}=$rndseed;   $form{'rndseed'}=$rndseed;
                         if ($urlp=~/\/res\//) {$ENV{'request.state'}='published';}                          if ($urlp=~/\/res\//) {$ENV{'request.state'}='published';}
  ####my $answer=' SSSSSS '.$ENV{'request.state'}.' FFFFFFF ';  
  my $answer=&Apache::lonnet::ssi($urlp,%form);   my $answer=&Apache::lonnet::ssi($urlp,%form);
  $texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/;   $texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/;
     }      }
Line 919  ENDPART Line 975  ENDPART
     $texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/;      $texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/;
  }   }
                 #this chunck is responsible for printing the path to problem                  #this chunck is responsible for printing the path to problem
  my $newurlp = '';   my $newurlp=&path_to_problem($urlp,$LaTeXwidth);
  my $HowMany = length($urlp)*2;   $texversion =~ s/(\\begin{minipage}{\\textwidth})/$1 $newurlp/;
  if ($HowMany > $LaTeXwidth) {  
     my @temporrary = split '/',$urlp;  
     my $HowManyNew = 0;  
     for (my $ii=0;$ii<=$#temporrary;$ii++) {  
  if ($temporrary[$ii] ne '') {  
     $HowManyNew += length($temporrary[$ii])*2;  
     if ($HowManyNew < $LaTeXwidth ) {  
  $newurlp .=  '/'.$temporrary[$ii];  
     } else {  
  $HowManyNew = 0;  
  $newurlp .=  '|\vskip -1 mm \noindent \verb|';  
  $ii--;  
     }  
  }  
     }  
  }  
  $texversion =~ s/(\\begin{minipage}{\\textwidth})/$1 {\\small\\noindent\\verb|$newurlp\|\\vskip 0 mm}/;  
  if ($flag_latex_header_remove ne 'NO') {   if ($flag_latex_header_remove ne 'NO') {
     $texversion = &latex_header_footer_remove($texversion);      $texversion = &latex_header_footer_remove($texversion);
  } else {   } else {
Line 1035  sub addMessage { Line 1074  sub addMessage {
     Apache::lonhelper::message->new();      Apache::lonhelper::message->new();
 }  }
   
   use Data::Dumper;
   
 sub printHelper {  sub printHelper {
     my $r = shift;      my $r = shift;
   
Line 1045  sub printHelper { Line 1086  sub printHelper {
   
     if ($r->header_only) {      if ($r->header_only) {
         if ($ENV{'browser.mathml'}) {          if ($ENV{'browser.mathml'}) {
             $r->content_type('text/xml');              &Apache::loncommon::content_type($r,'text/xml');
         } else {          } else {
             $r->content_type('text/html');              &Apache::loncommon::content_type($r,'text/html');
         }          }
         $r->send_http_header;          $r->send_http_header;
         return OK;          return OK;
Line 1055  sub printHelper { Line 1096  sub printHelper {
   
     # Send header, nocache      # Send header, nocache
     if ($ENV{'browser.mathml'}) {      if ($ENV{'browser.mathml'}) {
         $r->content_type('text/xml');          &Apache::loncommon::content_type($r,'text/xml');
     } else {      } else {
         $r->content_type('text/html');          &Apache::loncommon::content_type($r,'text/html');
     }      }
     &Apache::loncommon::no_cache($r);      &Apache::loncommon::no_cache($r);
     $r->send_http_header;      $r->send_http_header;
Line 1122  sub printHelper { Line 1163  sub printHelper {
         $helper->{VARS}->{'postdata'} = Apache::lonnet::clutter($url);          $helper->{VARS}->{'postdata'} = Apache::lonnet::clutter($url);
   
         if (!$resourceTitle) { # if the resource doesn't have a title, use the filename          if (!$resourceTitle) { # if the resource doesn't have a title, use the filename
             my $url = $helper->{VARS}->{'postdata'};              my $postdata = $helper->{VARS}->{'postdata'};
             $resourceTitle = substr($url, rindex($url, '/') + 1);              $resourceTitle = substr($postdata, rindex($postdata, '/') + 1);
         }          }
         $subdir = &Apache::lonnet::filelocation("", $url);          $subdir = &Apache::lonnet::filelocation("", $url);
     }      }
Line 1160  sub printHelper { Line 1201  sub printHelper {
     my $printChoices = [];      my $printChoices = [];
     my $paramHash;      my $paramHash;
   
     if ($resourceTitle && $helper->{VARS}->{'postdata'}) {      if ($resourceTitle) {
         push @{$printChoices}, ["<b>$resourceTitle</b> (what you just saw on the screen)", 'current_document', 'PAGESIZE'];          push @{$printChoices}, ["<b>$resourceTitle</b> (what you just saw on the screen)", 'current_document', 'PAGESIZE'];
     }      }
   
 #    $r->print($helper->{VARS}->{'postdata'});  #    $r->print($helper->{VARS}->{'postdata'});
   
       # Useful filter strings
       my $isProblem = '$res->is_problem()';
       $isProblem .= ' && !$res->randomout()' if !$userCanSeeHidden;
       my $isProblemOrMap = '$res->is_problem() || $res->is_map()';
       my $isNotMap = '!$res->is_map()';
       $isNotMap .= ' && !$res->randomout()' if !$userCanSeeHidden;
       my $isMap = '$res->is_map()';
       my $symbFilter = '$res->symb()';
       my $urlValue = '$res->src()';
   
       $helper->declareVar('SEQUENCE');
   
       # Useful for debugging: Dump the help vars
       #$r->print(Dumper($helper->{VARS}));
       #$r->print($map);
   
     # If we're in a sequence...      # If we're in a sequence...
     if (($helper->{'VARS'}->{'construction'} ne '1') &&      if (($helper->{'VARS'}->{'construction'} ne '1') &&
  $helper->{VARS}->{'postdata'}) {   $helper->{VARS}->{'postdata'} &&
    $helper->{VARS}->{'assignment'}) {
         # Allow problems from sequence          # Allow problems from sequence
         push @{$printChoices}, ["<b>Selected problems</b> in $sequenceTitle", 'map_problems', 'CHOOSE_PROBLEMS'];          push @{$printChoices}, ["<b>Problems</b> in $sequenceTitle", 'map_problems', 'CHOOSE_PROBLEMS'];
         # Allow all resources from sequence          # Allow all resources from sequence
         push @{$printChoices}, ["<b>Selected resources</b> in $sequenceTitle", 'map_problems_pages', 'CHOOSE_PROBLEMS_HTML'];          push @{$printChoices}, ["<b>Resources</b> in $sequenceTitle", 'map_problems_pages', 'CHOOSE_PROBLEMS_HTML'];
   
         my $isProblem = '$res->is_problem()';  
  $isProblem .= ' && !$res->randomout()' if !$userCanSeeHidden;  
         my $isProblemOrMap = '$res->is_problem() || $res->is_map()';  
         my $isNotMap = '!$res->is_map()';  
  $isNotMap .= ' && !$res->randomout()' if !$userCanSeeHidden;  
         my $symb = '$res->symb()';  
         my $helperFragment = <<HELPERFRAGMENT;          my $helperFragment = <<HELPERFRAGMENT;
   <state name="CHOOSE_PROBLEMS" title="Select Problem(s) to print">    <state name="CHOOSE_PROBLEMS" title="Select Problem(s) to print">
     <message>(mark them then click "next" button) <br /></message>      <message>(mark them then click "next" button) <br /></message>
Line 1187  sub printHelper { Line 1239  sub printHelper {
       <nextstate>PAGESIZE</nextstate>        <nextstate>PAGESIZE</nextstate>
       <filterfunc>return $isProblem;</filterfunc>        <filterfunc>return $isProblem;</filterfunc>
       <mapurl>$map</mapurl>        <mapurl>$map</mapurl>
       <valuefunc>return $symb;</valuefunc>        <valuefunc>return $symbFilter;</valuefunc>
       </resource>        </resource>
     </state>      </state>
   
Line 1197  sub printHelper { Line 1249  sub printHelper {
       <nextstate>PAGESIZE</nextstate>        <nextstate>PAGESIZE</nextstate>
       <filterfunc>return $isNotMap;</filterfunc>        <filterfunc>return $isNotMap;</filterfunc>
       <mapurl>$map</mapurl>        <mapurl>$map</mapurl>
       <valuefunc>return $symb;</valuefunc>        <valuefunc>return $symbFilter;</valuefunc>
       </resource>        </resource>
     </state>      </state>
 HELPERFRAGMENT  HELPERFRAGMENT
Line 1208  HELPERFRAGMENT Line 1260  HELPERFRAGMENT
     # If the user is priviledged, allow them to print all       # If the user is priviledged, allow them to print all 
     # problems in the course, optionally for selected students      # problems in the course, optionally for selected students
     if ($userPriviledged && ($helper->{VARS}->{'postdata'}=~/\/res\//)) {       if ($userPriviledged && ($helper->{VARS}->{'postdata'}=~/\/res\//)) { 
         push @{$printChoices}, ['Selected problems from <b>entire course</b>', 'all_problems', 'ALL_PROBLEMS'];          push @{$printChoices}, ['Problems from <b>entire course</b>', 'all_problems', 'ALL_PROBLEMS'];
         push @{$printChoices}, ["Selected problems from $sequenceTitle for <b>selected students</b>", 'problems_for_students', 'CHOOSE_STUDENTS'];   if ($helper->{VARS}->{'assignment'}) {
       push @{$printChoices}, ["Problems from $sequenceTitle for <b>selected students</b>", 'problems_for_students', 'CHOOSE_STUDENTS'];
    }
   
         my $isProblem = '$res->is_problem()';  
  $isProblem .= ' && !$res->randomout()' if !$userCanSeeHidden;  
         my $isProblemOrMap = '($res->is_problem() || $res->is_map())';  
  $isProblemOrMap .= ' && !$res->randomout()' if !$userCanSeeHidden;  
         my $symb = '$res->symb()';  
         &Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_STUDENTS);          &Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_STUDENTS);
   <state name="ALL_PROBLEMS" title="Select Problem(s) to print">    <state name="ALL_PROBLEMS" title="Select Problem(s) to print">
     <message>(mark them then click "next" button) <br /></message>      <message>(mark them then click "next" button) <br /></message>
Line 1224  HELPERFRAGMENT Line 1273  HELPERFRAGMENT
       <nextstate>PAGESIZE</nextstate>        <nextstate>PAGESIZE</nextstate>
       <filterfunc>return $isProblemOrMap;</filterfunc>        <filterfunc>return $isProblemOrMap;</filterfunc>
       <choicefunc>return $isProblem;</choicefunc>        <choicefunc>return $isProblem;</choicefunc>
       <valuefunc>return $symb;</valuefunc>        <valuefunc>return $symbFilter;</valuefunc>
       </resource>        </resource>
     </state>      </state>
   
Line 1234  HELPERFRAGMENT Line 1283  HELPERFRAGMENT
     <resource variable="RESOURCES" multichoice="1" addstatus="1">      <resource variable="RESOURCES" multichoice="1" addstatus="1">
       <filterfunc>return $isProblem</filterfunc>        <filterfunc>return $isProblem</filterfunc>
       <mapurl>$map</mapurl>        <mapurl>$map</mapurl>
       <valuefunc>return $symb</valuefunc>        <valuefunc>return $symbFilter</valuefunc>
       </resource>        </resource>
     <message><br /><big><i><b>How should the results be printed?</b></i></big><br /></message>      <message><br /><big><i><b>How should the results be printed?</b></i></big><br /></message>
     <choices variable="EMPTY_PAGES">      <choices variable="EMPTY_PAGES">
Line 1248  CHOOSE_STUDENTS Line 1297  CHOOSE_STUDENTS
     }      }
   
     # FIXME: That RE should come from a library somewhere.      # FIXME: That RE should come from a library somewhere.
     if ((((&Apache::lonnet::allowed('bre',$subdir) eq 'F') and ($helper->{VARS}->{'postdata'}=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)/)) or defined $helper->{'VARS'}->{'construction'}) and $ENV{'request.role.adv'}) {          if ((((&Apache::lonnet::allowed('bre',$subdir) eq 'F') and ($helper->{VARS}->{'postdata'}=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)/)) or defined $helper->{'VARS'}->{'construction'}) and $ENV{'request.role.adv'} and $subdir ne '/home/httpd/html/res/') {    
         push @{$printChoices}, ["Problems from current subdirectory <b>$subdir</b>", 'problems_from_directory', 'CHOOSE_FROM_SUBDIR'];          push @{$printChoices}, ["Problems from current subdirectory <b>$subdir</b>", 'problems_from_directory', 'CHOOSE_FROM_SUBDIR'];
           
         my $f = '$filename';          my $f = '$filename';
         my $xmlfrag = <<CHOOSE_FROM_SUBDIR;          my $xmlfrag = <<CHOOSE_FROM_SUBDIR;
   <state name="CHOOSE_FROM_SUBDIR" title="Select File(s) from <b><small>$subdir</small></b> to print">    <state name="CHOOSE_FROM_SUBDIR" title="Select File(s) from <b><small>$subdir</small></b> to print">
Line 1260  CHOOSE_STUDENTS Line 1309  CHOOSE_STUDENTS
       <filechoice>return '$subdir';</filechoice>        <filechoice>return '$subdir';</filechoice>
 CHOOSE_FROM_SUBDIR  CHOOSE_FROM_SUBDIR
                   
           # this is broken up because I really want interpolation above,
           # and I really DON'T want it below
         $xmlfrag .= <<'CHOOSE_FROM_SUBDIR';          $xmlfrag .= <<'CHOOSE_FROM_SUBDIR';
       <filefilter>return Apache::lonhelper::files::not_old_version($filename) &&        <filefilter>return Apache::lonhelper::files::not_old_version($filename) &&
   $filename =~ m/\.(problem|exam|quiz|assess|survey|form|library)$/;    $filename =~ m/\.(problem|exam|quiz|assess|survey|form|library)$/;
Line 1270  CHOOSE_FROM_SUBDIR Line 1321  CHOOSE_FROM_SUBDIR
         &Apache::lonxml::xmlparse($r, 'helper', $xmlfrag);          &Apache::lonxml::xmlparse($r, 'helper', $xmlfrag);
     }      }
   
       # Allow the user to select any sequence in the course, feed it to
       # another resource selector for that sequence
       if (!$helper->{VARS}->{'construction'}) {
    push @$printChoices, ["Resources from <b>selected sequence</b> in course",
         'map_problems_pages', 'CHOOSE_SEQUENCE'];
    &Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_FROM_ANY_SEQUENCE);
     <state name="CHOOSE_SEQUENCE" title="Select Sequence To Print From">
       <message>Select the sequence to print resources from:</message>
       <resource variable="SEQUENCE">
         <nextstate>CHOOSE_FROM_ANY_SEQUENCE</nextstate>
         <filterfunc>return \$res->is_sequence;</filterfunc>
         <valuefunc>return $urlValue;</valuefunc>
         </resource>
       </state>
     <state name="CHOOSE_FROM_ANY_SEQUENCE" title="Select Resources To Print">
       <message>(mark desired resources then click "next" button) <br /></message>
       <resource variable="RESOURCES" multichoice="1" toponly='1' addstatus="1">
         <nextstate>PAGESIZE</nextstate>
         <filterfunc>return $isProblem</filterfunc>
         <mapurl evaluate='1'>return $helper->{VARS}->{'SEQUENCE'};</mapurl>
         <valuefunc>return $symbFilter;</valuefunc>
         </resource>
       </state>
   CHOOSE_FROM_ANY_SEQUENCE
   }
   
     # Generate the first state, to select which resources get printed.      # Generate the first state, to select which resources get printed.
     Apache::lonhelper::state->new("START", "Select Printing Options:");      Apache::lonhelper::state->new("START", "Select Printing Options:");
     $paramHash = Apache::lonhelper::getParamHash();      $paramHash = Apache::lonhelper::getParamHash();
Line 1286  CHOOSE_FROM_SUBDIR Line 1363  CHOOSE_FROM_SUBDIR
   
     if (($ENV{'request.role.adv'} and &Apache::lonnet::allowed('vgr',$ENV{'request.course.id'})) or       if (($ENV{'request.role.adv'} and &Apache::lonnet::allowed('vgr',$ENV{'request.course.id'})) or 
  ($helper->{VARS}->{'construction'} eq '1')) {   ($helper->{VARS}->{'construction'} eq '1')) {
  addMessage("<hr width='33%' /><table><tr><td align='right'>Print With Answers:</td><td>");   addMessage("<hr width='33%' /><table><tr><td align='right'>Print: </td><td>");
         $paramHash = Apache::lonhelper::getParamHash();          $paramHash = Apache::lonhelper::getParamHash();
  $paramHash->{'variable'} = 'ANSWER_TYPE';      $paramHash->{'variable'} = 'ANSWER_TYPE';   
  $helper->declareVar('ANSWER_TYPE');            $helper->declareVar('ANSWER_TYPE');         
         $paramHash->{CHOICES} = [          $paramHash->{CHOICES} = [
                                    ['No', 'yes'],                                     ['Without Answers', 'yes'],
                                    ['Yes', 'no'] ];                                     ['With Answers', 'no'],
                                      ['Only Answers', 'only'] ];
         Apache::lonhelper::dropdown->new();          Apache::lonhelper::dropdown->new();
  addMessage("</td></tr>");   addMessage("</td></tr>");
  $startedTable = 1;   $startedTable = 1;

Removed from v.1.237  
changed lines
  Added in v.1.243


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