Diff for /loncom/interface/lonprintout.pm between versions 1.406 and 1.427

version 1.406, 2005/12/15 18:36:23 version 1.427, 2006/03/08 22:28:29
Line 226  sub latex_header_footer_remove { Line 226  sub latex_header_footer_remove {
     $text =~ s/\\documentclass([^&]*)\\begin{document}//;      $text =~ s/\\documentclass([^&]*)\\begin{document}//;
     return $text;      return $text;
 }  }
   #
   #  If necessary, encapsulate text inside 
   #  a minipage env.
   #  necessity is determined by the problem_split param.
   #
   sub encapsulate_minipage {
       my ($text) = @_;
       if (!($env{'form.problem.split'} =~ /yes/i)) {
    $text = '\begin{minipage}{\textwidth}'.$text.'\end{minipage}';
       }
       return $text;
   }
   
   
 sub character_chart {  sub character_chart {
Line 750  sub details_for_menu { Line 762  sub details_for_menu {
   
   
 sub latex_corrections {  sub latex_corrections {
       my ($number_of_columns,$result,$selectionmade,$answer_mode) = @_;
     my ($number_of_columns,$result,$selectionmade) = @_;  
   
 #    $result =~ s/\\includegraphics{/\\includegraphics\[width=\\minipagewidth\]{/g;  #    $result =~ s/\\includegraphics{/\\includegraphics\[width=\\minipagewidth\]{/g;
     $result =~ s/\$number_of_columns/$number_of_columns/g;      $result =~ s/\$number_of_columns/$number_of_columns/g;
     if ($selectionmade ne '1') {      if ($selectionmade eq '1' || $answer_mode eq 'only') {
  $result =~ s/(\\end{document})/\\strut\\vspace\*{-4 mm}\\newline\\noindent\\makebox\[\\textwidth\/$number_of_columns\]\[b\]{\\hrulefill}\\newline\\noindent\\tiny Printed from LON-CAPA\\copyright MSU{\\hfill} Licensed under GNU General Public License  $1/;   $result =~ s/(\\end{document})/\\strut\\vskip 0 mm\\noindent\\makebox\[\\textwidth\/$number_of_columns\]\[b\]{\\hrulefill}\\newline\\noindent\\tiny Printed from LON-CAPA\\copyright MSU{\\hfill} Licensed under GNU General Public License  $1/;
     } else {      } else {
  $result =~ s/(\\end{document})/\\strut\\newline\\noindent\\makebox\[\\textwidth\/$number_of_columns\]\[b\]{\\hrulefill}\\newline\\noindent\\tiny Printed from LON-CAPA\\copyright MSU{\\hfill} Licensed under GNU General Public License  $1/;   $result =~ s/(\\end{document})/\\strut\\vspace\*{-4 mm}\\newline\\noindent\\makebox\[\\textwidth\/$number_of_columns\]\[b\]{\\hrulefill}\\newline\\noindent\\tiny Printed from LON-CAPA\\copyright MSU{\\hfill} Licensed under GNU General Public License  $1/;
     }      }
     $result =~ s/(\\end{longtable}\s*)(\\strut\\newline\\noindent\\makebox\[\\textwidth\/$number_of_columns\]\[b\]{\\hrulefill})/$2$1/g;      $result =~ s/(\\end{longtable}\s*)(\\strut\\newline\\noindent\\makebox\[\\textwidth\/$number_of_columns\]\[b\]{\\hrulefill})/$2$1/g;
     $result =~ s/(\\end{longtable}\s*)\\strut\\newline/$1/g;      $result =~ s/(\\end{longtable}\s*)\\strut\\newline/$1/g;
Line 782  sub latex_corrections { Line 792  sub latex_corrections {
     }      }
     $result =~ s/(\\end{tabular})\s*\\vskip 0 mm/$1/g;      $result =~ s/(\\end{tabular})\s*\\vskip 0 mm/$1/g;
     $result =~ s/(\\begin{enumerate})\s*\\noindent/$1/g;      $result =~ s/(\\begin{enumerate})\s*\\noindent/$1/g;
   
     return $result;      return $result;
 }  }
   
Line 817  sub IndexCreation { Line 826  sub IndexCreation {
   
 sub print_latex_header {  sub print_latex_header {
     my $mode=shift;      my $mode=shift;
     my $output='\documentclass[letterpaper]{article}';      my $output='\documentclass[letterpaper,twoside]{article}';
     if (($mode eq 'batchmode') || (!$perm{'pav'})) {      if (($mode eq 'batchmode') || (!$perm{'pav'})) {
  $output.='\batchmode';   $output.='\batchmode';
     }      }
     $output.='\newcommand{\keephidden}[1]{}\renewcommand{\deg}{$^{\circ}$}'."\n".      $output.='\newcommand{\keephidden}[1]{}\renewcommand{\deg}{$^{\circ}$}'."\n".
          '\usepackage{multirow}'."\n".
      '\usepackage{longtable}\usepackage{textcomp}\usepackage{makeidx}'."\n".       '\usepackage{longtable}\usepackage{textcomp}\usepackage{makeidx}'."\n".
      '\usepackage[dvips]{graphicx}\usepackage{epsfig}'."\n".       '\usepackage[dvips]{graphicx}\usepackage{epsfig}'."\n".
      '\usepackage{wrapfig}'.       '\usepackage{wrapfig}'.
Line 895  sub get_textwidth { Line 905  sub get_textwidth {
   
   
 sub unsupported {  sub unsupported {
     my ($currentURL,$mode)=@_;      my ($currentURL,$mode,$symb)=@_;
     if ($mode ne '') {$mode='\\'.$mode}      if ($mode ne '') {$mode='\\'.$mode}
     my $result.= &print_latex_header($mode);      my $result.= &print_latex_header($mode);
     if ($currentURL=~/\/ext\//) {      if ($currentURL=~m|^(/adm/wrapper/)?ext/|) {
  $result.=' \strut \\\\ THIS IS EXTERNAL RESOURCE WITH URL \strut \\\\ '.$currentURL.' ';   $currentURL=~s|^(/adm/wrapper/)?ext/|http://|;
    my $title=&Apache::lonnet::gettitle($symb);
    $title = &Apache::lonxml::latex_special_symbols($title);
    $result.=' \strut \\\\ '.$title.' \strut \\\\ '.$currentURL.' ';
     } else {      } else {
  $result.=$currentURL;   $result.=$currentURL;
     }      }
Line 960  sub recently_generated { Line 973  sub recently_generated {
 #    A reference to a page break hash.  #    A reference to a page break hash.
 #  #
 #  #
   #use Data::Dumper;
   #sub dump_helper_vars {
   #    my ($helper) = @_;
   #    my $helpervars = Dumper($helper->{'VARS'});
   #    &Apache::lonnet::logthis("Dump of helper vars:\n $helpervars");
   #}
   
 sub get_page_breaks  {  sub get_page_breaks  {
     my ($helper) = @_;      my ($helper) = @_;
     my %page_breaks;      my %page_breaks;
       
     foreach my $break (split /\|\|\|/, $helper->{'VARS'}->{'FINISHPAGE'}) {      foreach my $break (split /\|\|\|/, $helper->{'VARS'}->{'FINISHPAGE'}) {
  $page_breaks{$break} = 1;   $page_breaks{$break} = 1;
     }      }
       
     return %page_breaks;      return %page_breaks;
 }  }
   
Line 1078  ENDPART Line 1096  ENDPART
     $cleanURL=$currentURL;      $cleanURL=$currentURL;
  }   }
  $selectionmade = 1;   $selectionmade = 1;
  if ($cleanURL=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {   if ($cleanURL!~m|^/adm/|
       && $cleanURL=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {
     my $rndseed=time;      my $rndseed=time;
     my $texversion='';      my $texversion='';
     if ($helper->{'VARS'}->{'ANSWER_TYPE'} ne 'only') {      if ($helper->{'VARS'}->{'ANSWER_TYPE'} ne 'only') {
Line 1109  ENDPART Line 1128  ENDPART
  &Apache::lonnet::delenv('form.counter');   &Apache::lonnet::delenv('form.counter');
  &Apache::lonnet::delenv('request.filename');   &Apache::lonnet::delenv('request.filename');
     }      }
       # current document with answers.. no need to encap in minipage
       #  since there's only one answer.
   
     if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||      if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||
        ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) {         ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) {
  $form{'problem_split'}=$parmhash{'problem_stream_switch'};   $form{'problem_split'}=$parmhash{'problem_stream_switch'};
Line 1147  ENDPART Line 1169  ENDPART
     if ($currentURL=~m/\.page\s*$/) {      if ($currentURL=~m/\.page\s*$/) {
  ($result,$number_of_columns) = &page_cleanup($result);   ($result,$number_of_columns) = &page_cleanup($result);
     }      }
         } elsif ($currentURL=~/\.sequence$/ && $helper->{'VARS'}->{'construction'} eq '1') {          } elsif ($cleanURL!~m|^/adm/|
    && $currentURL=~/\.sequence$/ && $helper->{'VARS'}->{'construction'} eq '1') {
             #printing content of sequence from the construction space              #printing content of sequence from the construction space
     my $flag_latex_header_remove = 'NO';       my $flag_latex_header_remove = 'NO'; 
     my $rndseed=time;      my $rndseed=time;
Line 1184  ENDPART Line 1207  ENDPART
  if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {   if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {
     $texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/;      $texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/;
  } else {   } else {
       # If necessary, encapsulate answer in minipage:
   
     $texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});      $texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
     $texversion.='\vskip 0 mm \noindent\textbf{'.&Apache::lonnet::gettitle($helper->{'VARS'}->{'symb'}).'}\vskip 0 mm ';      my $body ='\vskip 0 mm \noindent\textbf{'.&Apache::lonnet::gettitle($helper->{'VARS'}->{'symb'}).'}\vskip 0 mm ';
     $texversion.=&path_to_problem($urlp,$LaTeXwidth);      $body.=&path_to_problem($urlp,$LaTeXwidth);
     $texversion.='\vskip 1 mm '.$answer.'\end{document}';      $body.='\vskip 1 mm '.$answer.'\end{document}';
       $body = &encapsulate_minipage($body);
       $texversion.=$body;
  }   }
     }      }
     if ($flag_latex_header_remove ne 'NO') {      if ($flag_latex_header_remove ne 'NO') {
Line 1216  ENDPART Line 1243  ENDPART
  my $texversion=&Apache::lonnet::ssi($currentURL,%form);   my $texversion=&Apache::lonnet::ssi($currentURL,%form);
  $result .= $texversion;   $result .= $texversion;
  } else {   } else {
     $result.=&unsupported($currentURL,$helper->{'VARS'}->{'LATEX_TYPE'});      $result.=&unsupported($currentURL,$helper->{'VARS'}->{'LATEX_TYPE'},
     $helper->{'VARS'}->{'symb'});
  }   }
     } elsif (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems')       or      } elsif (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems')       or
              ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems_pages') or               ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems_pages') or
Line 1247  ENDPART Line 1275  ENDPART
  &Apache::lonnet::delenv('form.counter');   &Apache::lonnet::delenv('form.counter');
  &Apache::lonxml::init_counter();   &Apache::lonxml::init_counter();
  &Apache::lonxml::store_counter();   &Apache::lonxml::store_counter();
    my $pbreakresources = keys %page_breaks;
  for (my $i=0;$i<=$#master_seq;$i++) {   for (my $i=0;$i<=$#master_seq;$i++) {
   
     # Note due to document structure, not allowed to put \newpage      # Note due to document structure, not allowed to put \newpage
Line 1257  ENDPART Line 1286  ENDPART
     $result.="\\newpage\n";      $result.="\\newpage\n";
  }   }
     }      }
     my (undef,undef,$urlp)=&Apache::lonnet::decode_symb($master_seq[$i]);      my ($sequence,undef,$urlp)=&Apache::lonnet::decode_symb($master_seq[$i]);
     $urlp=&Apache::lonnet::clutter($urlp);      $urlp=&Apache::lonnet::clutter($urlp);
     $form{'symb'}=$master_seq[$i];      $form{'symb'}=$master_seq[$i];
     my ($sequence)=&Apache::lonnet::decode_symb($master_seq[$i]);  
     my $assignment=&Apache::lonxml::latex_special_symbols(&Apache::lonnet::gettitle($sequence),'header'); #tittle of the assignment which contains this problem      my $assignment=&Apache::lonxml::latex_special_symbols(&Apache::lonnet::gettitle($sequence),'header'); #title of the assignment which contains this problem
     if ($selectionmade==7) {$helper->{VARS}->{'assignment'}=$assignment;}      if ($selectionmade==7) {$helper->{VARS}->{'assignment'}=$assignment;}
     if ($i==0) {$prevassignment=$assignment;}      if ($i==0) {$prevassignment=$assignment;}
     my $texversion='';      my $texversion='';
     if ($urlp=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {      if ($urlp!~m|^/adm/|
    && $urlp=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {
  $resources_printed .= $urlp.':';   $resources_printed .= $urlp.':';
  my $pre_counter=$env{'form.counter'};   my $pre_counter=$env{'form.counter'};
  $texversion.=&Apache::lonnet::ssi($urlp,%form);   $texversion.=&Apache::lonnet::ssi($urlp,%form);
Line 1294  ENDPART Line 1324  ENDPART
     } else {      } else {
  if ($urlp=~/\.(problem|exam|quiz|assess|survey|form|library)$/) {   if ($urlp=~/\.(problem|exam|quiz|assess|survey|form|library)$/) {
     $texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});      $texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
     $texversion.='\vskip 0 mm \noindent\textbf{'.&Apache::lonnet::gettitle($urlp).'}\vskip 0 mm ';      my $body ='\vskip 0 mm \noindent\textbf{'.&Apache::lonnet::gettitle($master_seq[$i]).'}\vskip 0 mm ';
     $texversion.=&path_to_problem ($urlp,$LaTeXwidth);      $body   .= &path_to_problem ($urlp,$LaTeXwidth);
     $texversion.='\vskip 1 mm '.$answer;      $body   .='\vskip 1 mm '.$answer;
       $body    = &encapsulate_minipage($body);
       $texversion .= $body;
  } else {   } else {
     $texversion='';      $texversion='';
  }   }
Line 1315  ENDPART Line 1347  ENDPART
     my $courseidinfo = &get_course();      my $courseidinfo = &get_course();
     if (defined($courseidinfo)) { $courseidinfo=' - '.$courseidinfo }      if (defined($courseidinfo)) { $courseidinfo=' - '.$courseidinfo }
     $prevassignment=$assignment;      $prevassignment=$assignment;
     $result .='\newpage \noindent\parbox{\minipagewidth}{\noindent\\lhead{\\textit{\\textbf{'.$name.'}}'.$courseidinfo.' \\hfill \\thepage \\\\ \\textit{'.$assignment.'}}} \vskip 5 mm ';      if ($numberofcolumns eq '1') {
    $result .='\newpage \noindent\parbox{\minipagewidth}{\noindent\\lhead{\\textit{\\textbf{'.$name.'}}'.$courseidinfo.' \\hfill \\thepage \\\\ \\textit{'.$assignment.'}}} \vskip 5 mm ';
       } else {
    $result .='\newpage \noindent\parbox{\minipagewidth}{\noindent\\fancyhead[LO]{\\textit{\\textbf{'.$name.'}}'.$courseidinfo.' \\hfill \\thepage \\\\ \\textit{'.$assignment.'}}} \vskip 5 mm ';
       }
  }   }
  $result .= $texversion;   $result .= $texversion;
  $flag_latex_header_remove = 'YES';      $flag_latex_header_remove = 'YES';   
Line 1332  ENDPART Line 1368  ENDPART
  $result .= $texversion;   $result .= $texversion;
  $flag_latex_header_remove = 'YES';    $flag_latex_header_remove = 'YES'; 
     } else {      } else {
  $texversion=&unsupported($urlp,$helper->{'VARS'}->{'LATEX_TYPE'});   $texversion=&unsupported($urlp,$helper->{'VARS'}->{'LATEX_TYPE'},
    $master_seq[$i]);
  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 1434  ENDPART Line 1471  ENDPART
  }   }
  my %moreenv = ('textwidth' => &get_textwidth($helper,$LaTeXwidth));   my %moreenv = ('textwidth' => &get_textwidth($helper,$LaTeXwidth));
  $moreenv{'problem_split'}    = $parmhash{'problem_stream_switch'};   $moreenv{'problem_split'}    = $parmhash{'problem_stream_switch'};
            $moreenv{'instructor_comments'}='hide';
  my $seed=time+($$<<16)+($$);   my $seed=time+($$<<16)+($$);
  my @allcodes;   my @allcodes;
  if ($old_name) {   if ($old_name) {
Line 1578  ENDPART Line 1616  ENDPART
     }      }
 #-------------------------------------------------------- corrections for the different page formats  #-------------------------------------------------------- corrections for the different page formats
     $result = &page_format_transformation($papersize,$laystyle,$numberofcolumns,$helper->{'VARS'}->{'PRINT_TYPE'},$result,$helper->{VARS}->{'assignment'},$helper->{'VARS'}->{'TABLE_CONTENTS'},$helper->{'VARS'}->{'TABLE_INDEX'},$selectionmade);      $result = &page_format_transformation($papersize,$laystyle,$numberofcolumns,$helper->{'VARS'}->{'PRINT_TYPE'},$result,$helper->{VARS}->{'assignment'},$helper->{'VARS'}->{'TABLE_CONTENTS'},$helper->{'VARS'}->{'TABLE_INDEX'},$selectionmade);
     $result = &latex_corrections($number_of_columns,$result,$selectionmade);      $result = &latex_corrections($number_of_columns,$result,$selectionmade,
     for (my $i=1;$i<=$#print_array;$i++) {$print_array[$i] = &latex_corrections($number_of_columns,$print_array[$i],$selectionmade);}   $helper->{'VARS'}->{'ANSWER_TYPE'});
       for (my $i=1;$i<=$#print_array;$i++) {
    $print_array[$i] = 
       &latex_corrections($number_of_columns,$print_array[$i],
          $selectionmade, 
          $helper->{'VARS'}->{'ANSWER_TYPE'});
       }
     #changes page's parameters for the one column output       #changes page's parameters for the one column output 
     if ($numberofcolumns == 1) {      if ($numberofcolumns == 1) {
  $result =~ s/\\textwidth\s*=\s*-?\d*\.?\d*\s*(cm|mm|in)/\\textwidth= $helper->{'VARS'}->{'pagesize.width'} $helper->{'VARS'}->{'pagesize.widthunit'} /;   $result =~ s/\\textwidth\s*=\s*-?\d*\.?\d*\s*(cm|mm|in)/\\textwidth= $helper->{'VARS'}->{'pagesize.width'} $helper->{'VARS'}->{'pagesize.widthunit'} /;
Line 1718  sub print_resources { Line 1762  sub print_resources {
     &Apache::lonxml::init_counter();      &Apache::lonxml::init_counter();
     &Apache::lonxml::store_counter();      &Apache::lonxml::store_counter();
     my %page_breaks  = &get_page_breaks($helper);      my %page_breaks  = &get_page_breaks($helper);
       my @format_array = split(/\|/,$helper->{'VARS'}->{'FORMAT'});
       my $columns_in_format = $format_array[1];
   
     foreach my $curresline (@{$master_seq})  {      foreach my $curresline (@{$master_seq})  {
  if (defined $page_breaks{$curresline}) {   if (defined $page_breaks{$curresline}) {
Line 1730  sub print_resources { Line 1776  sub print_resources {
        ($curresline!~ m/\.(problem|exam|quiz|assess|survey|form|library)$/)) ) {         ($curresline!~ m/\.(problem|exam|quiz|assess|survey|form|library)$/)) ) {
     my ($map,$id,$res_url) = &Apache::lonnet::decode_symb($curresline);      my ($map,$id,$res_url) = &Apache::lonnet::decode_symb($curresline);
     if (&Apache::lonnet::allowed('bre',$res_url)) {      if (&Apache::lonnet::allowed('bre',$res_url)) {
  if ($res_url=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {   if ($res_url!~m|^ext/|
       && $res_url=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {
     $printed .= $curresline.':';      $printed .= $curresline.':';
     my $pre_counter=$env{'form.counter'};      my $pre_counter=$env{'form.counter'};
     my $rendered = &Apache::loncommon::get_student_view($curresline,$username,$userdomain,$env{'request.course.id'},'tex',$moreenv);      my $rendered = &Apache::loncommon::get_student_view($curresline,$username,$userdomain,$env{'request.course.id'},'tex',$moreenv);
Line 1751  sub print_resources { Line 1798  sub print_resources {
  if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {   if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {
     $rendered=~s/(\\keephidden{ENDOFPROBLEM})/$ansrendered$1/;      $rendered=~s/(\\keephidden{ENDOFPROBLEM})/$ansrendered$1/;
  } else {   } else {
     $rendered=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});  
     $rendered.='\vskip 0 mm \noindent\textbf{'.&Apache::lonnet::gettitle($curresline).'}\vskip 0 mm ';      
     $rendered.=&path_to_problem($res_url,$LaTeXwidth);      my $header =&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
     $rendered.='\vskip 1 mm '.$ansrendered;      my $body   ='\vskip 0 mm \noindent\textbf{'.&Apache::lonnet::gettitle($curresline).'}\vskip 0 mm ';
       $body     .=&path_to_problem($res_url,$LaTeXwidth);    
       $body     .='\vskip 1 mm '.$ansrendered;
       $body     = &encapsulate_minipage($body);
       $rendered = $header.$body;
  }   }
     }      }
     if ($remove_latex_header eq 'YES') {      if ($remove_latex_header eq 'YES') {
Line 1767  sub print_resources { Line 1818  sub print_resources {
     $printed .= $curresline.':';      $printed .= $curresline.':';
     my $rendered = &Apache::loncommon::get_student_view($curresline,$username,$userdomain,$env{'request.course.id'},'tex',$moreenv);      my $rendered = &Apache::loncommon::get_student_view($curresline,$username,$userdomain,$env{'request.course.id'},'tex',$moreenv);
     my ($envfile) =       my ($envfile) = 
  ( $env{'user.environment'} = ~m|/([^/]+)\.id$| );   ( $env{'user.environment'} =~ m|/([^/]+)\.id$| );
     &Apache::lonnet::transfer_profile_to_env($r->dir_config('lonIDsDir'),      &Apache::lonnet::transfer_profile_to_env($r->dir_config('lonIDsDir'),
      $envfile);       $envfile);
     my $current_counter=$env{'form.counter'};      my $current_counter=$env{'form.counter'};
Line 1777  sub print_resources { Line 1828  sub print_resources {
  $rendered =~ s/\\end{document}//;   $rendered =~ s/\\end{document}//;
     }      }
     $current_output .= $rendered.'\vskip 0.5mm\noindent\makebox[\textwidth/$number_of_columns][b]{\hrulefill}\strut \vskip 0 mm \strut ';      $current_output .= $rendered.'\vskip 0.5mm\noindent\makebox[\textwidth/$number_of_columns][b]{\hrulefill}\strut \vskip 0 mm \strut ';
   
  } else {   } else {
     my $rendered = &unsupported($res_url,$helper->{'VARS'}->{'LATEX_TYPE'});      my $rendered = &unsupported($res_url,$helper->{'VARS'}->{'LATEX_TYPE'},$curresline);
     if ($remove_latex_header ne 'NO') {      if ($remove_latex_header ne 'NO') {
  $rendered = &latex_header_footer_remove($rendered);   $rendered = &latex_header_footer_remove($rendered);
     } else {      } else {
Line 1796  sub print_resources { Line 1848  sub print_resources {
     if ($usersection ne '') {$courseidinfo.=' - Sec. '.$usersection}      if ($usersection ne '') {$courseidinfo.=' - Sec. '.$usersection}
     my $currentassignment=&Apache::lonxml::latex_special_symbols($helper->{VARS}->{'assignment'},'header');      my $currentassignment=&Apache::lonxml::latex_special_symbols($helper->{VARS}->{'assignment'},'header');
     if ($current_output=~/\\documentclass/) {      if ($current_output=~/\\documentclass/) {
  $current_output =~ s/\\begin{document}/\\setlength{\\topmargin}{1cm} \\begin{document}\\noindent\\parbox{\\minipagewidth}{\\noindent\\lhead{\\textit{\\textbf{$fullname}}$courseidinfo \\hfill \\thepage \\\\ \\textit{$currentassignment}$namepostfix}}\\vskip 5 mm /;   if ($columns_in_format == 1) {
       $current_output =~ s/\\begin{document}/\\setlength{\\topmargin}{1cm} \\begin{document}\\noindent\\parbox{\\minipagewidth}{\\noindent\\lhead{\\textit{\\textbf{$fullname}}$courseidinfo \\hfill \\thepage \\\\ \\textit{$currentassignment}$namepostfix}}\\vskip 5 mm /;
    } else {
           $current_output =~ s/\\begin{document}/\\setlength{\\topmargin}{1cm} \\begin{document}\\noindent\\parbox{\\minipagewidth}{\\noindent\\fancyhead[LO]{\\textit{\\textbf{$fullname}}$courseidinfo \\hfill \\thepage \\\\ \\textit{$currentassignment}$namepostfix}}\\vskip 5 mm /;
   
    }
     } else {      } else {
  my $blankpages = '';   my $blankpages = '';
  for (my $j=0;$j<$helper->{'VARS'}->{'EMPTY_PAGES'};$j++) {$blankpages.='\clearpage\strut\clearpage';}   for (my $j=0;$j<$helper->{'VARS'}->{'EMPTY_PAGES'};$j++) {$blankpages.='\clearpage\strut\clearpage';}
  $current_output = '\strut\vspace*{-6 mm}\\newline\\noindent\\makebox[\\textwidth/$number_of_columns][b]{\\hrulefill}\vspace*{-2 mm}\\newline\\noindent{\\tiny Printed from LON-CAPA\\copyright MSU{\\hfill} Licensed under GNU General Public License }\\newpage '.$blankpages.'\setcounter{page}{1}\noindent\parbox{\minipagewidth}{\noindent\\lhead{\\textit{\\textbf{'.$fullname.'}}'.$courseidinfo.' \\hfill \\thepage \\\\ \\textit{'.$currentassignment.'}'.$namepostfix.'}} \vskip 5 mm '.$current_output;   if ($columns_in_format == 1) {
       $current_output = '\strut\vspace*{-6 mm}\\newline\\noindent\\makebox[\\textwidth/$number_of_columns][b]{\\hrulefill}\vspace*{-2 mm}\\newline\\noindent{\\tiny Printed from LON-CAPA\\copyright MSU{\\hfill} Licensed under GNU General Public License }\\newpage '.$blankpages.'\setcounter{page}{1}\noindent\parbox{\minipagewidth}{\noindent\\lhead{\\textit{\\textbf{'.$fullname.'}}'.$courseidinfo.' \\hfill \\thepage \\\\ \\textit{'.$currentassignment.'}'.$namepostfix.'}} \vskip 5 mm '.$current_output;
    } else {
      $current_output = '\strut\vspace*{-6 mm}\\newline\\noindent\\makebox[\\textwidth/$number_of_columns][b]{\\hrulefill}\vspace*{-2 mm}\\newline\\noindent{\\tiny Printed from LON-CAPA\\copyright MSU{\\hfill} Licensed under GNU General Public License }\\newpage '.$blankpages.'\setcounter{page}{1}\noindent\parbox{\minipagewidth}{\noindent\\fancyhead[LO]{\\textit{\\textbf{'.$fullname.'}}'.$courseidinfo.' \\hfill \\thepage \\\\ \\textit{'.$currentassignment.'}'.$namepostfix.'}} \vskip 5 mm '.$current_output;
    }
     }      }
     return ($current_output,$fullname, $printed);      return ($current_output,$fullname, $printed);
   
Line 1812  sub handler { Line 1873  sub handler {
           
     &init_perm();      &init_perm();
   
 #    my $loaderror=&Apache::lonnet::overloaderror($r);  
 #    if ($loaderror) { return $loaderror; }  
 #    $loaderror=  
 #       &Apache::lonnet::overloaderror($r,  
 #         $env{'course.'.$env{'request.course.id'}.'.home'});  
 #    if ($loaderror) { return $loaderror; }  
   
     my $helper = printHelper($r);      my $helper = printHelper($r);
     if (!ref($helper)) {      if (!ref($helper)) {
  return $helper;   return $helper;
     }      }
         
 # my $key;   
 # foreach $key (keys %{$helper->{'VARS'}}) {  
 #    $r->print(' '.$key.'->'.$helper->{'VARS'}->{$key}.'<-<br />');  
 # }  
 # foreach $key (keys %env) {  
 #    $r->print(' '.$key.'->'.$env{$key}.'<-<br />');  
 # }  
 # return OK;  
   
     my %parmhash=&Apache::lonnet::coursedescription($env{'request.course.id'});      my %parmhash=&Apache::lonnet::coursedescription($env{'request.course.id'});
     
 # my $key;   
 # foreach $key (keys %parmhash) {  
 #    $r->print(' '.$key.'->'.$parmhash{$key}.'<-<br />');  
 # }  
 #  
   
   
     #  If a figure conversion queue file exists for this user.domain      #  If a figure conversion queue file exists for this user.domain
Line 1863  sub addMessage { Line 1907  sub addMessage {
     Apache::lonhelper::message->new();      Apache::lonhelper::message->new();
 }  }
   
 use Data::Dumper;  
   
 sub init_perm {  sub init_perm {
     undef(%perm);      undef(%perm);
Line 1925  sub printHelper { Line 1969  sub printHelper {
     # But we only do this in the initial state so that they are allowed to change.      # But we only do this in the initial state so that they are allowed to change.
     #      #
   
     $helper->{VARS}->{FINISHPAGE} = '';      # $helper->{VARS}->{FINISHPAGE} = '';
           
     &Apache::loncommon::restore_course_settings('print',      &Apache::loncommon::restore_course_settings('print',
  {'pagebreaks'  => 'scalar',   {'pagebreaks'  => 'scalar',
Line 1944  sub printHelper { Line 1988  sub printHelper {
  }   }
   
     }      }
       
           
     # This will persistently load in the data we want from the      # This will persistently load in the data we want from the
     # very first screen.      # very first screen.
Line 1962  sub printHelper { Line 2006  sub printHelper {
         if ($env{'form.url'}) {          if ($env{'form.url'}) {
             $helper->{VARS}->{'symb'} = &Apache::lonnet::symbread($helper->{VARS}->{'postdata'});              $helper->{VARS}->{'symb'} = &Apache::lonnet::symbread($helper->{VARS}->{'postdata'});
         }          }
   
     }      }
   
     if ($env{'form.symb'}) {      if ($env{'form.symb'}) {
Line 2048  sub printHelper { Line 2093  sub printHelper {
   
     $helper->declareVar('SEQUENCE');      $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') &&
Line 2126  ALL_PROBLEMS Line 2169  ALL_PROBLEMS
     push @{$printChoices}, ["<b>".&mt('Problems')."</b> ".&mt('from')." <b><i>$sequenceTitle</i></b> ".&mt('for')." <b>".&mt('selected students')."</b>", 'problems_for_students', 'CHOOSE_STUDENTS'];      push @{$printChoices}, ["<b>".&mt('Problems')."</b> ".&mt('from')." <b><i>$sequenceTitle</i></b> ".&mt('for')." <b>".&mt('selected students')."</b>", 'problems_for_students', 'CHOOSE_STUDENTS'];
     push @{$printChoices}, ["<b>".&mt('Problems')."</b> ".&mt('from')." <b><i>$sequenceTitle</i></b> ".&mt('for')." <b>".&mt('anonymous students')."</b>", 'problems_for_anon', 'CHOOSE_ANON1'];      push @{$printChoices}, ["<b>".&mt('Problems')."</b> ".&mt('from')." <b><i>$sequenceTitle</i></b> ".&mt('for')." <b>".&mt('anonymous students')."</b>", 'problems_for_anon', 'CHOOSE_ANON1'];
  }   }
   
    # resource_selector will hold a few states that:
    #   - Allow resources to be selected for printing.
    #   - Determine pagination between assignments.
    #   - Determine how many assignments should be bundled into a single PDF.
           # TODO:
    #    Probably good to do things like separate this up into several vars, each
    #    with one state, and use REGEXPs at inclusion time to set state names
    #    and next states for better mix and match capability
    #
  my $resource_selector=<<RESOURCE_SELECTOR;   my $resource_selector=<<RESOURCE_SELECTOR;
       <state name="SELECT_PROBLEMS" title="Select resources to print">
      <nextstate>PRINT_FORMATTING</nextstate> 
    <message><br /><big><i><b>Select resources for the assignment</b></i></big><br /></message>     <message><br /><big><i><b>Select resources for the assignment</b></i></big><br /></message>
     <resource variable="RESOURCES" multichoice="1" addstatus="1"       <resource variable="RESOURCES" multichoice="1" addstatus="1" 
               closeallpages="1">                closeallpages="1">
Line 2135  ALL_PROBLEMS Line 2190  ALL_PROBLEMS
       <valuefunc>return $symbFilter;</valuefunc>        <valuefunc>return $symbFilter;</valuefunc>
       <option text='New Page' variable='FINISHPAGE' />        <option text='New Page' variable='FINISHPAGE' />
       </resource>        </resource>
       </state>
       <state name="PRINT_FORMATTING" title="How should results be printed?">
       <nextstate>NUMBER_PER_PDF</nextstate>
     <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">
       <choice computer='0'>Start each student\'s assignment on a new page/column (add a pagefeed after each assignment)</choice>        <choice computer='0'>Start each student\'s assignment on a new page/column (add a pagefeed after each assignment)</choice>
Line 2142  ALL_PROBLEMS Line 2200  ALL_PROBLEMS
       <choice computer='2'>Add two empty pages/column after each student\'s assignment</choice>        <choice computer='2'>Add two empty pages/column after each student\'s assignment</choice>
       <choice computer='3'>Add three empty pages/column after each student\'s assignment</choice>        <choice computer='3'>Add three empty pages/column after each student\'s assignment</choice>
     </choices>      </choices>
       </state>
       <state name="NUMBER_PER_PDF" title="Number printed at once">
       <nextstate>PAGESIZE</nextstate>
     <message><hr width='33%' /><b>Number of assignments printed at the same time: </b></message>      <message><hr width='33%' /><b>Number of assignments printed at the same time: </b></message>
     <string variable="NUMBER_TO_PRINT" maxlength="5" size="5"><defaultvalue>"all"</defaultvalue></string>      <string variable="NUMBER_TO_PRINT" maxlength="5" size="5"><defaultvalue>"all"</defaultvalue></string>
       </state>
 RESOURCE_SELECTOR  RESOURCE_SELECTOR
   
         &Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_STUDENTS);          &Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_STUDENTS);
   <state name="CHOOSE_STUDENTS" title="Select Students and Resources">    <state name="CHOOSE_STUDENTS" title="Select Students and Resources">
       <student multichoice='1' variable="STUDENTS" nextstate="PAGESIZE" coursepersonnel="1"/>  
       <message><b>Select sort order</b> </message>        <message><b>Select sort order</b> </message>
     <choices variable='student_sort'>      <choices variable='student_sort'>
       <choice computer='0'>Sort by section then student</choice>        <choice computer='0'>Sort by section then student</choice>
       <choice computer='1'>Sort by students across sections.</choice>        <choice computer='1'>Sort by students across sections.</choice>
     </choices>      </choices>
     $resource_selector        <student multichoice='1' variable="STUDENTS" nextstate="SELECT_PROBLEMS" coursepersonnel="1"/>
   </state>    </state>
       $resource_selector
 CHOOSE_STUDENTS  CHOOSE_STUDENTS
   
  my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};   my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
Line 2169  CHOOSE_STUDENTS Line 2231  CHOOSE_STUDENTS
  }   }
   
   
         my %all_codes = &Apache::lonnet::get('CODEs',  
      \@names, $cdom,$cnum);  
  my %code_values;   my %code_values;
  my %codes_to_print;   my %codes_to_print;
  foreach my $key (keys(%all_codes)) {   foreach my $key (@names) {
     %code_values = &Apache::grades::get_codes($key, $cdom, $cnum);      %code_values = &Apache::grades::get_codes($key, $cdom, $cnum);
     foreach my $key (keys(%code_values)) {      foreach my $key (keys(%code_values)) {
  $codes_to_print{$key} = 1;   $codes_to_print{$key} = 1;
Line 2203  CHOOSE_STUDENTS Line 2263  CHOOSE_STUDENTS
  }   }
         &Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_ANON1);          &Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_ANON1);
   <state name="CHOOSE_ANON1" title="Select Students and Resources">    <state name="CHOOSE_ANON1" title="Select Students and Resources">
     <nextstate>PAGESIZE</nextstate>      <nextstate>SELECT_PROBLEMS</nextstate>
     <message><hr width='33%' /></message>      <message><table><tr><td><b>Number of anonymous assignments to print:</b></td><td></message>
     <message><table><tr><td><b>Number of anonymous assignments to print?</b></td><td></message>  
     <string variable="NUMBER_TO_PRINT_TOTAL" maxlength="5" size="5">      <string variable="NUMBER_TO_PRINT_TOTAL" maxlength="5" size="5">
        <validator>         <validator>
  if (((\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'}+0) < 1) &&   if (((\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'}+0) < 1) &&
Line 2218  CHOOSE_STUDENTS Line 2277  CHOOSE_STUDENTS
        </validator>         </validator>
     </string>      </string>
     <message></td></tr><tr><td></message>      <message></td></tr><tr><td></message>
     <message><b>Value of CODE to print?</b></td><td></message>      <message><b>Names to store the CODEs under for later:</b></message>
     <string variable="SINGLE_CODE" size="10" defaultvalue="zzzz">      <message></td><td></message>
       <string variable="ANON_CODE_STORAGE_NAME" maxlength="50" size="20" />
       <message></td></tr><tr><td></message>
       <message><b>Bubble sheet type:</b></message>
       <message></td><td></message>
       <dropdown variable="CODE_OPTION" multichoice="0" allowempty="0">
       $codechoice
       </dropdown>
       <message></td></tr><tr><td colspan="2"><hr width='33%' /></td></tr><tr><td></message>
       <message></td></tr><tr><td></message>
       <message><b>Enter a CODE to print:</b></td><td></message>
       <string variable="SINGLE_CODE" size="10">
         <validator>          <validator>
    if(!\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'}           &&     if(!\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'}           &&
       !\$helper->{'VARS'}{'REUSE_OLD_CODES'}                 &&        !\$helper->{'VARS'}{'REUSE_OLD_CODES'}                 &&
Line 2231  CHOOSE_STUDENTS Line 2301  CHOOSE_STUDENTS
    }     }
         </validator>          </validator>
     </string>      </string>
     <message></td></tr><tr><td></message>      <message></td></tr><tr><td colspan="2"><hr width='33%' /></td></tr><tr><td></message>
     <message><b>Choose single code from list</b></message>  
     <message></td><td></message>  
     <dropdown variable="CODE_SELECTED_FROM_LIST" multichoice="0" allowempty="0">  
     $code_selection  
     </dropdown>  
     <message></td></tr><tr><td></message>  
     <message><b>Names to store the CODEs under for later:</b></message>  
     <message></td><td></message>  
     <string variable="ANON_CODE_STORAGE_NAME" maxlength="50" size="20" />  
     <message></td></tr><tr><td></message>  
     <message><b>Bubble sheet type:</b></message>  
     <message></td><td></message>  
     <dropdown variable="CODE_OPTION" multichoice="0" allowempty="0">  
     $codechoice  
     </dropdown>  
     <message></td></tr></table></message>  
     <message><hr width='33%' /></message>  
     <message><b>Reprint a set of saved CODEs:</b></message>      <message><b>Reprint a set of saved CODEs:</b></message>
       <message></td><td></message>
     <dropdown variable="REUSE_OLD_CODES">      <dropdown variable="REUSE_OLD_CODES">
         $namechoice          $namechoice
     </dropdown>      </dropdown>
       <message></td></tr></table></message>
     <message><hr width='33%' /></message>      <message><hr width='33%' /></message>
     $resource_selector  
   </state>    </state>
     $resource_selector
 CHOOSE_ANON1  CHOOSE_ANON1
   
   
Line 2266  CHOOSE_ANON1 Line 2321  CHOOSE_ANON1
           
   
  $resource_selector=<<RESOURCE_SELECTOR;   $resource_selector=<<RESOURCE_SELECTOR;
       <state name="SELECT_RESOURCES" title="Select Resources">
       <nextstate>PRINT_FORMATTING</nextstate>
     <message><br /><big><i><b>Select resources for the assignment</b></i></big><br /></message>      <message><br /><big><i><b>Select resources for the assignment</b></i></big><br /></message>
     <resource variable="RESOURCES" multichoice="1" addstatus="1"       <resource variable="RESOURCES" multichoice="1" addstatus="1" 
               closeallpages="1">                closeallpages="1">
Line 2274  CHOOSE_ANON1 Line 2331  CHOOSE_ANON1
       <valuefunc>return $symbFilter;</valuefunc>        <valuefunc>return $symbFilter;</valuefunc>
       <option text='Newpage' variable='FINISHPAGE' />        <option text='Newpage' variable='FINISHPAGE' />
       </resource>        </resource>
       </state>
       <state name="PRINT_FORMATTING" title="Format of the print job">
       <nextstate>NUMBER_PER_PDF</nextstate>
     <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">
       <choice computer='0'>Start each student\'s assignment on a new page/column (add a pagefeed after each assignment)</choice>        <choice computer='0'>Start each student\'s assignment on a new page/column (add a pagefeed after each assignment)</choice>
Line 2281  CHOOSE_ANON1 Line 2341  CHOOSE_ANON1
       <choice computer='2'>Add two empty pages/column after each student\'s assignment</choice>        <choice computer='2'>Add two empty pages/column after each student\'s assignment</choice>
       <choice computer='3'>Add three empty pages/column after each student\'s assignment</choice>        <choice computer='3'>Add three empty pages/column after each student\'s assignment</choice>
     </choices>      </choices>
       </state>
       <state name="NUMBER_PER_PDF title="Number assingnments per pdf">
       <nextstate>PAGESIZE</nextstate>
     <message><hr width='33%' /><b>Number of assignments printed at the same time: </b></message>      <message><hr width='33%' /><b>Number of assignments printed at the same time: </b></message>
     <string variable="NUMBER_TO_PRINT" maxlength="5" size="5"><defaultvalue>"all"</defaultvalue></string>      <string variable="NUMBER_TO_PRINT" maxlength="5" size="5"><defaultvalue>"all"</defaultvalue></string>
       </state>
 RESOURCE_SELECTOR  RESOURCE_SELECTOR
   
  &Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_STUDENTS1);   &Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_STUDENTS1);
   <state name="CHOOSE_STUDENTS1" title="Select Students and Resources">    <state name="CHOOSE_STUDENTS1" title="Select Students and Resources">
     <student multichoice='1' variable="STUDENTS" nextstate="PAGESIZE" coursepersonnel="1" />  
     <choices variable='student_sort'>      <choices variable='student_sort'>
       <choice computer='0'>Sort by section then student</choice>        <choice computer='0'>Sort by section then student</choice>
       <choice computer='1'>Sort by students across sections.</choice>        <choice computer='1'>Sort by students across sections.</choice>
     </choices>      </choices>
       <student multichoice='1' variable="STUDENTS" nextstate="SELECT_RESOURCES" coursepersonnel="1" />
   
     $resource_selector  
     </state>      </state>
       $resource_selector
 CHOOSE_STUDENTS1  CHOOSE_STUDENTS1
   
  &Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_ANON2);   &Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_ANON2);
   <state name="CHOOSE_ANON2" title="Select Students and Resources">    <state name="CHOOSE_ANON2" title="Select Students and Resources">
     <nextstate>PAGESIZE</nextstate>      <nextstate>SELECT_RESOURCES</nextstate>
     <message><table><tr><td><b>Number of anonymous assignments to print?</b></td><td></message>      <message><table><tr><td><b>Number of anonymous assignments to print:</b></td><td></message>
     <string variable="NUMBER_TO_PRINT_TOTAL" maxlength="5" size="5">      <string variable="NUMBER_TO_PRINT_TOTAL" maxlength="5" size="5">
        <validator>         <validator>
  if (((\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'}+0) < 1) &&   if (((\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'}+0) < 1) &&
Line 2313  CHOOSE_STUDENTS1 Line 2377  CHOOSE_STUDENTS1
        </validator>         </validator>
     </string>      </string>
     <message></td></tr><tr><td></message>      <message></td></tr><tr><td></message>
     <message><b>Value of CODE to print?</b></td><td></message>      <message><b>Names to store the CODEs under for later:</b></message>
     <string variable="SINGLE_CODE" size="10" defaultvalue="zzzz">      <message></td><td></message>
       <string variable="ANON_CODE_STORAGE_NAME" maxlength="50" size="20" />
       <message></td></tr><tr><td></message>
       <message><b>Bubble sheet type:</b></message>
       <message></td><td></message>
       <dropdown variable="CODE_OPTION" multichoice="0" allowempty="0">
       $codechoice
       </dropdown>
       <message></td></tr><tr><td colspan="2"><hr width='33%' /></td></tr><tr><td></message>
       <message></td></tr><tr><td></message>
       <message><b>Enter a CODE to print:</b></td><td></message>
       <string variable="SINGLE_CODE" size="10">
         <validator>          <validator>
    if(!\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'}           &&     if(!\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'}           &&
       !\$helper->{'VARS'}{'REUSE_OLD_CODES'}                 &&        !\$helper->{'VARS'}{'REUSE_OLD_CODES'}                 &&
Line 2326  CHOOSE_STUDENTS1 Line 2401  CHOOSE_STUDENTS1
    }     }
         </validator>          </validator>
     </string>      </string>
     <message></td></tr><tr><td></message>      <message></td></tr><tr><td colspan="2"><hr width='33%' /></td></tr><tr><td></message>
     <message><b>Choose single code from list</b></message>  
     <message></td><td></message>  
     <dropdown variable="CODE_SELECTED_FROM_LIST" multichoice="0" allowempty="0">  
     $code_selection  
     </dropdown>  
     <message></td></tr><tr><td></message>  
     <message><b>Names to store the CODEs under for later:</b></message>  
     <message></td><td></message>  
     <string variable="ANON_CODE_STORAGE_NAME" maxlength="50" size="20" />  
     <message></td></tr><tr><td></message>  
     <message><b>Bubble sheet type:</b></message>  
     <message></td><td></message>  
     <dropdown variable="CODE_OPTION" multichoice="0" allowempty="0">  
     $codechoice  
     </dropdown>  
     <message></td></tr></table></message>  
     <message><hr width='33%' /></message>  
     <message><b>Reprint a set of saved CODEs:</b></message>      <message><b>Reprint a set of saved CODEs:</b></message>
       <message></td><td></message>
     <dropdown variable="REUSE_OLD_CODES">      <dropdown variable="REUSE_OLD_CODES">
         $namechoice          $namechoice
     </dropdown>      </dropdown>
       <message></td></tr></table></message>
     <message><hr width='33%' /></message>      <message><hr width='33%' /></message>
     $resource_selector  
   </state>    </state>
       $resource_selector
 CHOOSE_ANON2  CHOOSE_ANON2
     }      }
   
Line 2513  CHOOSE_FROM_ANY_SEQUENCE Line 2573  CHOOSE_FROM_ANY_SEQUENCE
         </defaultvalue>          </defaultvalue>
     </string>      </string>
      <message></td></tr><tr><td align="right">Use style file:</td><td></message>       <message></td></tr><tr><td align="right">Use style file:</td><td></message>
              <message><input type="text" size="40" name="style_file_value" value="$stylevalue"  />&nbsp; <a href="javascript:openbrowser('helpform','style_file','sty')">Select style file</a> </td><tr><td></message>               <message><input type="text" size="40" name="style_file_value" value="$stylevalue"  />&nbsp; <a href="javascript:openbrowser('helpform','style_file_value','sty')">Select style file</a> </td><tr><td></message>
      <choices allowempty="1" multichoice="true" variable="showallfoils">       <choices allowempty="1" multichoice="true" variable="showallfoils">
                 <choice computer="1">Show all foils?</choice>                  <choice computer="1">Show all foils?</choice>
              </choices>               </choices>
Line 2542  RNDSEED Line 2602  RNDSEED
   
     $helper->process();      $helper->process();
   
   
     # MANUAL BAILOUT CONDITION:      # MANUAL BAILOUT CONDITION:
     # If we're in the "final" state, bailout and return to handler      # If we're in the "final" state, bailout and return to handler
     if ($helper->{STATE} eq 'FINAL') {      if ($helper->{STATE} eq 'FINAL') {

Removed from v.1.406  
changed lines
  Added in v.1.427


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