Number of blank pages added to each student assignments to print these assignments on physically different sheets (requires manual addjustment): |
'.$answer.''); return OK; + $texversion=~s/(\\end{document})/$answer$1/; + } + $result .= $texversion; + if ($currentURL=~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'}; + 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 ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'problems_for_students') { + #-- prints assignments for whole class or for selected students + $selectionmade=5; + my @students=split /\|\|\|/, $helper->{'VARS'}->{'STUDENTS'}; + my @master_seq=split /\|\|\|/, $helper->{'VARS'}->{'RESOURCES'}; + #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 ($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) { + if ($curresline=~ m/\.(problem|exam|quiz|assess|survey|form|library)$/) { + my ($map,$id,$res_url) = split(/___/,$curresline); + if (&Apache::lonnet::allowed('bre',$res_url)) { + my $rendered = &Apache::loncommon::get_student_view($curresline,$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<$helper->{'VARS'}->{'EMPTY_PAGES'};$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 ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'problems_from_directory') { + #prints selected problems from the subdirectory + $selectionmade = 6; + my @list_of_files=split /\|\|\|/, $helper->{'VARS'}->{'FILES'}; + @list_of_files=sort @list_of_files; + 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(<