Diff for /loncom/interface/lonprintout.pm between versions 1.132 and 1.142

version 1.132, 2003/04/30 16:29:07 version 1.142, 2003/05/02 14:17:57
Line 1106  sub character_chart { Line 1106  sub character_chart {
 #    } elsif($papersize=~/A6/) {  #    } elsif($papersize=~/A6/) {
  }   }
  return $textwidth,$textheight,$oddoffset,$evenoffset;   return $textwidth,$textheight,$oddoffset,$evenoffset;
   }
   
   
   sub page_format_new {
   #
   #Correspondence between $papersize variable and real paper format:
   # 0 - "Letter [8 1/2x11 in]"
   # 1 - "Legal [8 1/2x14 in]"
   # 2 - "Ledger/Tabloid [11x17 in]"
   # 3 - "Executive [7 1/2x10 in]"
   # 4 - "A2 [420x594 mm]"
   # 5 - "A3 [297x420 mm]"
   # 6 - "A4 [210x297 mm]"
   # 7 - "A5 [148x210 mm]"
   # 8 - "A6 [105x148 mm]"
   # 
       my ($papersize,$layout,$numberofcolumns) = @_; 
       my ($textwidth,$textheight,$oddoffset,$evenoffset) = (0,0,0,0);
       if ($papersize eq '0') {
    if ($layout eq 'book') {
       if ($numberofcolumns == 1) {
    $textwidth = '18 cm';
    $textheight = '25.9 cm';
    $oddoffset = '-0.57 in';
    $evenoffset = '-0.57 in';
       } elsif ($numberofcolumns == 2) {
    $textwidth = '93 mm';
    $textheight = '25.9 cm';
    $oddoffset = '-0.57 in';
    $evenoffset = '-0.57 in';
       }
    } elsif ($layout eq 'album') {
       if ($numberofcolumns eq '1') {
    $textwidth = '8.8 in';
    $textheight = '6.8 in';
    $oddoffset = '-40 pt';
    $evenoffset = '-60 pt';
       } elsif ($numberofcolumns == 2) {
    $textwidth = '4.2 in';
    $textheight = '6.8 in';
    $oddoffset = '-40 pt';
    $evenoffset = '-60 pt';
       }
    }
   #    } elsif($papersize eq '1') {
   #    } elsif($papersize eq '2') {
   #    } elsif($papersize eq '3'/) {
       } elsif($papersize eq '6') {
    if ($layout eq 'book') {
       if ($numberofcolumns == 1) {
    $textwidth = '18 cm';
    $textheight = '28 cm';
    $oddoffset = '-0.57 in';
    $evenoffset = '-0.57 in';
       } elsif ($numberofcolumns == 2) {
    $textwidth = '96 mm';
    $textheight = '2 cm';
    $oddoffset = '-0.57 in';
    $evenoffset = '-0.57 in';
       }
    } elsif ($layout eq 'album') {
       if ($numberofcolumns eq '1') {
    $textwidth = '8.5 in';
    $textheight = '7.7 in';
    $oddoffset = '-40 pt';
    $evenoffset = '-60 pt';
       } elsif ($numberofcolumns == 2) {
    $textwidth = '3.9 in';
    $textheight = '7.7 in';
    $oddoffset = '-40 pt';
    $evenoffset = '-60 pt';
       }
    }
   #    } elsif($papersize eq '5') {
   #    } elsif($papersize eq '4') {
   #    } elsif($papersize eq '7') {
   #    } elsif($papersize eq '8') {
     }      }
       return $textwidth,$textheight,$oddoffset,$evenoffset;
   }
   
   
 sub get_name {  sub get_name {
Line 1148  sub page_format_transformation { Line 1227  sub page_format_transformation {
 }  }
   
   
   sub page_format_transformation_new {
       my ($papersize,$layout,$numberofcolumns,$choice,$text,$assignment) = @_; 
       my ($textwidth,$textheight,$oddoffset,$evenoffset);
    $assignment=~s/_/ /g;
           if ($numberofcolumns != 1) {
             ($textwidth,$textheight,$oddoffset,$evenoffset) = &page_format_new($papersize,$layout,$numberofcolumns);
    } else {
     ($textwidth,$textheight,$oddoffset,$evenoffset) = ($ENV{'form.width'},$ENV{'form.height'},$ENV{'form.leftmargin'},$ENV{'form.leftmargin'});
    }
       my $name = &get_name();
       if ($name =~ /^\s*$/) {
    $name=&Apache::lonxml::latex_special_symbols($ENV{'user.name'},undef,
        undef,'header');
       }
       my $courseidinfo = &Apache::lonxml::latex_special_symbols(&Apache::lonnet::unescape($ENV{'course.'.$ENV{'request.course.id'}.'.description'}),'','','header');
       if ($layout eq 'album') {
       $text =~ s/\\begin{document}/\\setlength{\\oddsidemargin}{$oddoffset}\\setlength{\\evensidemargin}{$evenoffset}\\setlength{\\topmargin}{200pt}\\setlength{\\textwidth}{$textwidth}\\setlength{\\textheight}{$textheight}\\setlength{\\parindent}{20pt}\\setlength{\\marginparwidth}{90pt}\\setlength{\\textfloatsep}{8pt plus 2\.0pt minus 4\.0pt}\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm} \\begin{document}\\setcounter{page}{1}\\noindent\\parbox{\\minipagewidth}{\\noindent\\fbox{\\textbf{$name}} \\hfill  $courseidinfo} \\vskip 5 mm /;
       } elsif ($layout eq 'book') {
    if ($choice ne 'All class print') { 
    $text =~ s/\\begin{document}/\\textheight $textheight\\oddsidemargin = $evenoffset\\evensidemargin = $evenoffset\\textwidth= $textwidth\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm}\\renewcommand{\\ref}{\\keephidden\}\\usepackage{fancyhdr}\\pagestyle{fancy}\\rhead{}\\chead{}\\lhead{\\textbf{$name} - $courseidinfo \\hfill \\thepage \\\\ \\textit{$assignment}}\\begin{document}\\voffset=-0\.8 cm\\setcounter{page}{1}/;
    } else {
       $text =~ s/\\pagestyle{fancy}\\rhead{}\\chead{}\s*\\begin{document}/\\textheight $textheight\\oddsidemargin = $evenoffset\\evensidemargin = $evenoffset\\textwidth= $textwidth\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm}\\renewcommand{\\ref}{\\keephidden\}\\pagestyle{fancy}\\rhead{}\\chead{}\\begin{document}\\voffset=-0\.8cm\\setcounter{page}{1}  \\vskip 5 mm /;
   
    }
       }
       return $text;
   }
   
   
   
 sub page_cleanup {  sub page_cleanup {
     my $result = shift;      my $result = shift;
     
Line 1218  sub latex_corrections { Line 1327  sub latex_corrections {
 }  }
   
   
   sub output_data_new {
       my ($r,$helper) = @_;
       $r->print(<<ENDPART);
   <html>
   <head>
   <title>LON-CAPA output for printing</title>
   </head>
   <body bgcolor="FFFFFF">
   <hr>
   ENDPART
   
       my $format_from_helper = $helper->{'VARS'}->{'FORMAT'};
       my ($result,$selectionmade) = ('','');
       my $number_of_columns = 1; #used only for pages to determine the width of the cell
       my @temporary_array=split /\|/,$format_from_helper;
       my ($laystyle,$numberofcolumns,$papersize)=@temporary_array;
       if ($laystyle eq 'L') {
    $laystyle='album';
       } else {
    $laystyle='book';
       }
       my ($textwidth,$textheight,$oddoffset,$evenoffset) = &page_format_new($papersize,$laystyle,$numberofcolumns);
   
   
   
      
   #    my $choice = $ENV{'form.choice'};
   #    my $layout = $ENV{'form.layout'};
   #    my $numberofcolumns = $ENV{'form.numberofcolumns'};  
   #    my $papersize = $ENV{'form.papersize'};          
   #    my $laystyle = 'book';
       my $assignment =  $ENV{'form.assignment'};
   #    if ($choice eq 'Subdirectory print') {
   # if ($ENV{'form.layout'} eq '') {$layout = 'CAPA';}
   # if ($ENV{'form.papersize'} eq '') {$papersize = 'Letter [8 1/2x11 in]';}
   # if ($ENV{'form.numberofcolumns'} eq '') {$numberofcolumns = 2;}
   #    }
   #    if (($choice eq 'Standard LaTeX output for current document') &&
   # ($ENV{'form.url'}=~m|^/~|)) {
   # if ($ENV{'form.layout'} eq '') {$layout = 'CAPA';}
   # if ($ENV{'form.papersize'} eq '') {$papersize = 'Letter [8 1/2x11 in]';}
   # if ($ENV{'form.numberofcolumns'} eq '') {$numberofcolumns = 2;}
   #    }
   
       
   #    my ($textwidth,$textheight,$oddoffset,$evenoffset) = &page_format($papersize,$layout,$numberofcolumns);
   #    if ($numberofcolumns == 1) {
   # $textwidth=$ENV{'form.width'};
   # $textheight=$ENV{'form.height'};
   #    }
       my $LaTeXwidth; 
       if ($textwidth=~/(\d+)\s*cm/) {
    $LaTeXwidth = $1*10;
       } elsif ($textwidth=~/(\d+)\s*mm/) {
    $LaTeXwidth = $1;
       } elsif ($textwidth=~/(\d+)\s*in/) {
    $LaTeXwidth = $1*25.4;
       }
       $LaTeXwidth.=' mm';
   
   
       if ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'current_document') {
         #-- single document - problem, page, html, xml, ...  
    $selectionmade = 1;
    if ($helper->{'VARS'}->{'url'}=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {
           my %moreenv;
           $moreenv{'form.grade_target'}='tex';
           if (&Apache::lonnet::allowed('bre',$helper->{'VARS'}->{'url'})) {
     $helper->{'VARS'}->{'url'}=~s/http:\/\/[^\/]+//;
           }
           $moreenv{'request.filename'}=$helper->{'VARS'}->{'url'};
           $moreenv{'form.textwidth'}=$LaTeXwidth;
           &Apache::lonnet::appenv(%moreenv);
           my $texversion=&Apache::lonnet::ssi($helper->{'VARS'}->{'url'});
           &Apache::lonnet::delenv('form.grade_target','form.textwidth','form.counter');
           $result .= $texversion;
           if ($helper->{'VARS'}->{'url'}=~m/\.page\s*$/) {
     ($result,$number_of_columns) = &page_cleanup($result);
           }
         } else {
   #  $result='\documentclass[letterpaper]{article}\usepackage{calc}\begin{document}Printout of this type of document is currently not supported: ';
   #  if ($ENV{'form.url'}=~/\/(aboutme|syllabus|bulletinboard|smppg)$/) {
   #      $result.=$1;
   #  } else {
   #      $result.=$ENV{'form.url'};
   #  }
   #  $result.=' \end{document}'
         }
   
   
       } elsif (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems') or
                ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems_pages') or
                ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_problems')) { 
           #-- produce an output string
    my $flag_latex_header_remove = 'NO';
    my $flag_page_in_sequence = 'NO';
    my @master_seq=split /\|\|\|/, $helper->{'VARS'}->{'RESOURCES'};
   
   # foreach  my $key (@master_seq) {
   #    $r->print(' '.$key.'<br />');
   # }
   # return OK;
   
    for (my $i=0;$i<=$#master_seq;$i++) {
       $master_seq[$i]=~/___\d+___(.*)$/;
       my $urlp='/res/'.$1;
       if ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems') {
    $selectionmade = 2;
       } elsif ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems_pages') {
    $selectionmade = 3;
       } elsif ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_problems') {
    $selectionmade = 4;
       }
       my %moreenv;
       $moreenv{'form.grade_target'}='tex';
       $moreenv{'form.textwidth'}=$LaTeXwidth;
       &Apache::lonnet::appenv(%moreenv);
       #&Apache::lonnet::logthis("Trying to get $urlp with symb $master_seq[$i]");
       my $texversion=&Apache::lonnet::ssi($urlp,('symb'=>$master_seq[$i]));
       &Apache::lonnet::delenv('form.grade_target','form.textwidth');
       if ($urlp=~/\.page$/) {
    ($texversion,my $number_of_columns_page) = &page_cleanup($texversion);
    if ($number_of_columns_page > $number_of_columns) {$number_of_columns=$number_of_columns_page;} 
    $texversion =~ s/\\end{document}\d*/\\end{document}/;
    $flag_page_in_sequence = 'YES';
       } 
       if ($flag_latex_header_remove ne 'NO') {
    $texversion = &latex_header_footer_remove($texversion);
       } else {
    $texversion =~ s/\\end{document}//;
       }
       $result .= $texversion;         
       $flag_latex_header_remove = 'YES';   
    }
    &Apache::lonnet::delenv('form.counter');
    if ($flag_page_in_sequence eq 'YES') {$result =~ s/\\usepackage{calc}/\\usepackage{calc}\\usepackage{longtable}/;}
    $result .= '\end{document}';
   #    }  elsif ($choice eq 'Standard LaTeX output for the top level sequence') {
   #        # where is the main sequence of the course?
   # $selectionmade = 4;
   # my $main_seq=&Apache::lonnet::clutter($ENV{'request.course.uri'});
   # my @file_seq = &coming_from_hash($main_seq);
   # for (my $i=0;$i<=$#file_seq;$i++) {
   #    my ($path,$title,$symb) = split /&&/,$file_seq[$i];
   #    $file_seq[$i] = $path.'&&'.$symb;
   # }
   # my $flag_latex_header_remove = 'NO';
   #        #-- produce an output string
   # for (my $i=0;$i<=$#file_seq;$i++) {
   #   if (not $file_seq[$i]=~/^&&/) {
   #     my ($urlp,$symb) = split /&&/, $file_seq[$i];
   #     $urlp=~s/\/home\/httpd\/html//;    
   #     if ($urlp=~m/\.(problem|exam|quiz|assess|survey|form|library)/) {
   # my %moreenv;
   # $moreenv{'form.grade_target'}='tex';
   # $moreenv{'form.textwidth'}=$LaTeXwidth;
   # &Apache::lonnet::appenv(%moreenv);
   # my $texversion=&Apache::lonnet::ssi($urlp,('symb'=>$symb));
   # &Apache::lonnet::delenv('form.grade_target','form.textwidth');    
   # if ($flag_latex_header_remove ne 'NO') {
   #    $texversion = &latex_header_footer_remove($texversion);
   # } else {
   #    $texversion =~ s/\\end{document}//;
   # }
   # $result .= $texversion;  
   # $flag_latex_header_remove = 'YES';
   #     }
   #   }
   # }    
   # $result .= '\end{document}';
   #    } elsif ($choice eq 'All class print') { 
   #    #-- prints assignments for whole class or for selected students  
   # $selectionmade = 5;
   #        my @students = ();
   # for (my $i=0; $i<$ENV{'form.numberofstudents'};$i++) {
   #    if ($ENV{'form.whomtoprint'.$i}=~/:/) {
   # push @students,$ENV{'form.whomtoprint'.$i};
   #    }
   # }
   # #where is the primary sequence containing current resource (the same for all students)?
   # my $symbolic = &Apache::lonnet::symbread($ENV{'form.url'});
   # my @sequence = split('___',$symbolic);
   # my $primary_sequence;
   #
   # $primary_sequence=&Apache::lonnet::clutter($sequence[0]);
   # my @master_seq = &coming_from_hash($primary_sequence); 
   # for (my $i=0;$i<=$#master_seq;$i++) {
   #    my ($path,$title,$symb) = split /&&/,$master_seq[$i];
   #    $master_seq[$i] = $path.'&&'.$symb;
   # }
   #        #loop over students
   # my $flag_latex_header_remove = 'NO'; 
   # my %moreenv;
   # $moreenv{'form.textwidth'}=$LaTeXwidth;
   # &Apache::lonnet::appenv(%moreenv);
   # my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r,'Print Status','Class Print Status',$#students+1);
   # foreach my $person (@students) {
   #    my $current_output = ''; 
   #    my ($usersection,$username,$userdomain) = split /:/,$person;
   #    my $fullname = &get_name($username,$userdomain);
   #            #goes through all resources, checks if they are available for current student, and produces output   
   #    foreach my $curresline (@master_seq)  {
   # my ($curres,$symb) = split /&&/, $curresline;
   #                if ($curres=~ m/\.(problem|exam|quiz|assess|survey|form|library)/) {
   #    my ($map,$id,$res_url) = split(/___/,$symb);
   #    if (&Apache::lonnet::allowed('bre',$res_url)) {
   # my $rendered = &Apache::loncommon::get_student_view($symb,$username,$userdomain,
   #                                                                        $ENV{'request.course.id'},'tex');
   # if ($flag_latex_header_remove eq 'YES') {
   #    $rendered = &latex_header_footer_remove($rendered);
   # } else {
   #    $rendered =~ s/\\end{document}//;
   # }
   # $current_output .= $rendered;
   #    }
   #    $flag_latex_header_remove = 'YES';
   # }
   #    }
   #    my $courseidinfo = $ENV{'course.'.$ENV{'request.course.id'}.'.description'};
   #    if ($current_output=~/\\documentclass/) {
   # $current_output =~ s/\\begin{document}/\\setlength{\\topmargin}{1cm}\\usepackage{fancyhdr}\\pagestyle{fancy}\\rhead{}\\chead{} \\begin{document}\\noindent\\lhead{\\textit{\\textbf{$fullname}} - $courseidinfo \\hfill \\thepage \\\\ \\textit{$assignment}}\\vskip 3 mm /;
   #    } else {
   # my $blanspages = '';
   # for (my $j=0;$j<$ENV{'form.addedpages'};$j++) {$blanspages.='\clearpage\strut\clearpage';}
   # $current_output = '\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 }\\newpage \\vskip 3mm'.$blanspages.'\setcounter{page}{1}\noindent\parbox{\minipagewidth}{\noindent\\lhead{\\textit{\\textbf{'.$fullname.'}} - '.$courseidinfo.' \\hfill \\thepage \\\\ \\textit{'.$assignment.'}}\hskip 1.4in } \vskip 5 mm '.$current_output;
   #    }
   #    $result .= $current_output;
   #    &Apache::lonnet::delenv('form.counter');    
   #    &Apache::lonxml::init_counter(); 
   #    &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,
   #    'last student '.$fullname);
   # }
   # &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
   # $result .= '\end{document}';
   # &Apache::lonnet::delenv('form.textwidth');
   #    } elsif ($choice eq 'Subdirectory print') {      
   #    #prints selected problems from the subdirectory 
   # $selectionmade = 6;
   #        my @list_of_files = ();
   # for (my $i=0; $i<$ENV{'form.numberofproblems'};$i++) {
   #    if ($ENV{'form.whattoprint'.$i}=~/^\//) {
   # push @list_of_files,$ENV{'form.whattoprint'.$i};
   #    }
   # }
   # my $flag_latex_header_remove = 'NO';  
   # for (my $i=0;$i<=$#list_of_files;$i++) {
   #    my $urlp = $list_of_files[$i];
   #    if ($urlp=~/\//) {
   # my %moreenv;
   # $moreenv{'form.grade_target'}='tex';
   # $moreenv{'form.textwidth'}=$LaTeXwidth;
   # &Apache::lonnet::appenv(%moreenv);
   # if ($urlp =~ m|/home/([^/]+)/public_html|) {
   #    $urlp =~ s|/home/([^/]*)/public_html|/~$1|;
   # } else {
   #    $urlp =~ s|^/home/httpd/html||;
   # }
   # my $texversion=&Apache::lonnet::ssi($urlp);
   # &Apache::lonnet::delenv('form.grade_target','form.textwidth');
   #                #this chunck is responsible for printing the path to problem
   # my $newurlp = '';
   # 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--;
   #    }
   # }
   #    }
   # }
   # $texversion =~ s/(\\begin{minipage}{\\textwidth})/$1 {\\small\\noindent\\verb|$newurlp\|\\vskip 0 mm}/;
   # if ($flag_latex_header_remove ne 'NO') {
   #    $texversion = &latex_header_footer_remove($texversion);
   # } else {
   #    $texversion =~ s/\\end{document}//;
   # }
   # $result .= $texversion;
   #    }
   #    $flag_latex_header_remove = 'YES';  
   # }
   # $result .= '\end{document}';      
       }
   #-------------------------------------------------------- corrections for the different page formats
       $result = &page_format_transformation_new($papersize,$laystyle,$numberofcolumns,$helper->{'VARS'}->{'PRINT_TYPE'},$result,$helper->{VARS}->{'assignment'});
   #    if ($layout eq 'CBI') {
   #        $laystyle = 'album';
   #    }
       $result = &latex_corrections($number_of_columns,$result);
   #    #changes page's parameters for the one column output 
   #    if ($ENV{'form.numberofcolumns'} == 1) {
   # $result =~ s/\\textwidth= 9cm/\\textwidth= $ENV{'form.width'}/;
   # $result =~ s/\\textheight 25\.9cm/\\textheight $ENV{'form.height'}/;
   # $result =~ s/\\evensidemargin = -0\.57in/\\evensidemargin= $ENV{'form.leftmargin'}/;
   # $result =~ s/\\oddsidemargin = -0\.57in/\\oddsidemargin= $ENV{'form.leftmargin'}/;
   #    }
   #-- writing .tex file in prtspool 
       my $temp_file;
       my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout_".time."_".rand(10000000).".tex";
       unless ($temp_file = Apache::File->new('>'.$filename)) {
    $r->log_error("Couldn't open $filename for output $!");
    return SERVER_ERROR; 
       } 
       print $temp_file $result;
   
   
   $r->print(<<FINALEND);
   <meta http-equiv="Refresh" content="0; url=/cgi-bin/printout.pl?$filename&$laystyle&$numberofcolumns&$selectionmade">
   </body>
   </html>
   FINALEND
   }
   
   
   
 sub handler {  sub handler {
   
     my $r = shift;      my $r = shift;
Line 1230  sub handler { Line 1661  sub handler {
             return $result;              return $result;
         }          }
         $helper = $result;          $helper = $result;
     }      
   
   #    my $key; 
   #    foreach $key (keys %{$helper->{'VARS'}}) {
   # $r->print(' '.$key.'->'.$helper->{'VARS'}->{$key}.'<br />');
   #    }
   # return OK;
   
   
    &output_data_new($r,$helper);
   
   
   
   
   
   
       return OK;
       }
     my $loaderror=&Apache::lonnet::overloaderror($r);      my $loaderror=&Apache::lonnet::overloaderror($r);
     if ($loaderror) { return $loaderror; }      if ($loaderror) { return $loaderror; }
     $loaderror=      $loaderror=
Line 1324  sub printHelper { Line 1771  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.
     if (defined($ENV{'form.symb'})) {  
         $helper->{VARS}->{'symb'} = $ENV{'form.symb'};  
     }  
     if (defined($ENV{'form.postdata'})) {      if (defined($ENV{'form.postdata'})) {
         $helper->{VARS}->{'postdata'} = $ENV{'form.postdata'};          $helper->{VARS}->{'postdata'} = $ENV{'form.postdata'};
     }      }
       if (defined($ENV{'form.symb'})) {
           $helper->{VARS}->{'symb'} = &Apache::lonnet::symbread($helper->{VARS}->{'postdata'});
       }
     if (defined($ENV{'form.url'})) {      if (defined($ENV{'form.url'})) {
         $helper->{VARS}->{'url'} = $ENV{'form.url'};          $helper->{VARS}->{'url'} = $helper->{VARS}->{'postdata'};
     }      }
   
     my ($resourceTitle,$sequenceTitle,$mapTitle) = &details_for_menu;      my ($resourceTitle,$sequenceTitle,$mapTitle) = &details_for_menu;
       $helper->{VARS}->{'assignment'} = $sequenceTitle;
   
     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 $url = $helper->{VARS}->{'postdata'};
         $resourceTitle = substr($url, rindex($url, '/') + 1);          $resourceTitle = substr($url, rindex($url, '/') + 1);
Line 1415  HELPERFRAGMENT Line 1864  HELPERFRAGMENT
         my $isProblemOrMap = '$res->is_problem() || $res->is_map()';          my $isProblemOrMap = '$res->is_problem() || $res->is_map()';
         my $symb = '$res->symb();';          my $symb = '$res->symb();';
         &Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_STUDENTS);          &Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_STUDENTS);
   <state name="All_PROBLEMS" title="Select Problems">    <state name="ALL_PROBLEMS" title="Select Problems">
     <message>Select problems to print:</message>      <message>Select problems to print:</message>
     <resource variable="RESOURCES" multichoice="1">      <resource variable="RESOURCES" multichoice="1">
       <nextstate>FINAL</nextstate>        <nextstate>FINAL</nextstate>
Line 1437  CHOOSE_STUDENTS Line 1886  CHOOSE_STUDENTS
         push @{$printChoices}, ["Problems from <b>$subdir</b>", 'problems_from_directory', 'CHOOSE_FROM_SUBDIR'];          push @{$printChoices}, ["Problems from <b>$subdir</b>", 'problems_from_directory', 'CHOOSE_FROM_SUBDIR'];
                   
         my $f = '$filename';          my $f = '$filename';
         &Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_FROM_SUBDIR);          my $xmlfrag = <<CHOOSE_FROM_SUBDIR;
   <state name="CHOOSE_FROM_SUBDIR" title="Select Files">    <state name="CHOOSE_FROM_SUBDIR" title="Select Files">
     <message>Select problems you wish to print from <b>$subdir</b></message>      <message>Select problems you wish to print from <b>$subdir</b></message>
     <files variable="FILES">      <files variable="FILES" multichoice='1'>
       <nextstate>FINAL</nextstate>        <nextstate>FINAL</nextstate>
       <filechoice>$subdir</filechoice>        <filechoice>return '$subdir';</filechoice>
       <filefilter>return $f =~   CHOOSE_FROM_SUBDIR
           
           $xmlfrag .= <<'CHOOSE_FROM_SUBDIR';
         <filefilter>return $filename =~ 
            m/^[^\.]+\.(problem|exam|quiz|assess|survey|form|library)$/;             m/^[^\.]+\.(problem|exam|quiz|assess|survey|form|library)$/;
       </filefilter>        </filefilter>
         </files>
     </state>      </state>
 CHOOSE_FROM_SUBDIR  CHOOSE_FROM_SUBDIR
           &Apache::lonxml::xmlparse($r, 'helper', $xmlfrag);
     }      }
   
     # Generate the first state, to select which resources get printed.      # Generate the first state, to select which resources get printed.
Line 1457  CHOOSE_FROM_SUBDIR Line 1911  CHOOSE_FROM_SUBDIR
     Apache::lonhelper::message->new();      Apache::lonhelper::message->new();
     $paramHash = Apache::lonhelper::getParamHash();      $paramHash = Apache::lonhelper::getParamHash();
     $paramHash->{'variable'} = 'PRINT_TYPE';      $paramHash->{'variable'} = 'PRINT_TYPE';
       $helper->declareVar('PRINT_TYPE');
     $paramHash->{CHOICES} = $printChoices;      $paramHash->{CHOICES} = $printChoices;
     Apache::lonhelper::choices->new();      Apache::lonhelper::choices->new();
     Apache::lonprintout::page_format_state->new("FORMAT");      Apache::lonprintout::page_format_state->new("FORMAT");
Line 1524  my @paperSize = ("Letter [8 1/2x11 in]", Line 1979  my @paperSize = ("Letter [8 1/2x11 in]",
 sub new {   sub new { 
     my $self = Apache::lonhelper::element->new();      my $self = Apache::lonhelper::element->new();
   
       shift;
   
     $self->{'variable'} = shift;      $self->{'variable'} = shift;
       my $helper = Apache::lonhelper::getHelper();
       $helper->declareVar($self->{'variable'});
     bless($self);      bless($self);
     return $self;      return $self;
 }  }
Line 1582  STATEHTML Line 2041  STATEHTML
     return $result;      return $result;
 }  }
   
   sub postprocess {
       my $self = shift;
   
       my $var = $self->{'variable'};
       my $helper = Apache::lonhelper->getHelper();
       $helper->{VARS}->{$var} = 
           $ENV{"form.$var.layout"} . '|' . $ENV{"form.$var.cols"} . '|' .
           $ENV{"form.$var.paper"};
       return 1;
   }
   
 1;  1;
   
 __END__  __END__

Removed from v.1.132  
changed lines
  Added in v.1.142


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