--- loncom/interface/lonprintout.pm 2005/12/19 23:27:28 1.410 +++ loncom/interface/lonprintout.pm 2006/02/14 20:34:34 1.422 @@ -1,7 +1,7 @@ # The LearningOnline Network # Printout # -# $Id: lonprintout.pm,v 1.410 2005/12/19 23:27:28 foxr Exp $ +# $Id: lonprintout.pm,v 1.422 2006/02/14 20:34:34 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -751,7 +751,6 @@ sub details_for_menu { sub latex_corrections { my ($number_of_columns,$result,$selectionmade,$answer_mode) = @_; - # $result =~ s/\\includegraphics{/\\includegraphics\[width=\\minipagewidth\]{/g; $result =~ s/\$number_of_columns/$number_of_columns/g; if ($selectionmade eq '1' || $answer_mode eq 'only') { @@ -781,7 +780,6 @@ sub latex_corrections { } $result =~ s/(\\end{tabular})\s*\\vskip 0 mm/$1/g; $result =~ s/(\\begin{enumerate})\s*\\noindent/$1/g; - return $result; } @@ -895,11 +893,14 @@ sub get_textwidth { sub unsupported { - my ($currentURL,$mode)=@_; + my ($currentURL,$mode,$symb)=@_; if ($mode ne '') {$mode='\\'.$mode} my $result.= &print_latex_header($mode); - if ($currentURL=~/\/ext\//) { - $result.=' \strut \\\\ THIS IS EXTERNAL RESOURCE WITH URL \strut \\\\ '.$currentURL.' '; + if ($currentURL=~m|^(/adm/wrapper/)?ext/|) { + $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 { $result.=$currentURL; } @@ -960,15 +961,20 @@ sub recently_generated { # 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 { my ($helper) = @_; my %page_breaks; - + foreach my $break (split /\|\|\|/, $helper->{'VARS'}->{'FINISHPAGE'}) { $page_breaks{$break} = 1; } - return %page_breaks; } @@ -1078,7 +1084,8 @@ ENDPART $cleanURL=$currentURL; } $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 $texversion=''; if ($helper->{'VARS'}->{'ANSWER_TYPE'} ne 'only') { @@ -1147,7 +1154,8 @@ ENDPART if ($currentURL=~m/\.page\s*$/) { ($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 my $flag_latex_header_remove = 'NO'; my $rndseed=time; @@ -1216,7 +1224,8 @@ ENDPART my $texversion=&Apache::lonnet::ssi($currentURL,%form); $result .= $texversion; } 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 ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems_pages') or @@ -1247,6 +1256,7 @@ ENDPART &Apache::lonnet::delenv('form.counter'); &Apache::lonxml::init_counter(); &Apache::lonxml::store_counter(); + my $pbreakresources = keys %page_breaks; for (my $i=0;$i<=$#master_seq;$i++) { # Note due to document structure, not allowed to put \newpage @@ -1265,7 +1275,8 @@ ENDPART if ($selectionmade==7) {$helper->{VARS}->{'assignment'}=$assignment;} if ($i==0) {$prevassignment=$assignment;} 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.':'; my $pre_counter=$env{'form.counter'}; $texversion.=&Apache::lonnet::ssi($urlp,%form); @@ -1315,7 +1326,11 @@ ENDPART my $courseidinfo = &get_course(); if (defined($courseidinfo)) { $courseidinfo=' - '.$courseidinfo } $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; $flag_latex_header_remove = 'YES'; @@ -1332,7 +1347,8 @@ ENDPART $result .= $texversion; $flag_latex_header_remove = 'YES'; } 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') { $texversion = &latex_header_footer_remove($texversion); } else { @@ -1402,8 +1418,7 @@ ENDPART $person,$type, \%moreenv,\@master_seq, $flag_latex_header_remove, - $LaTeXwidth, - $number_of_columns); + $LaTeXwidth); $resources_printed .= ":"; $print_array[$i].=$output; $student_names[$i].=$person.':'.$fullname.'_END_'; @@ -1435,6 +1450,7 @@ ENDPART } my %moreenv = ('textwidth' => &get_textwidth($helper,$LaTeXwidth)); $moreenv{'problem_split'} = $parmhash{'problem_stream_switch'}; + $moreenv{'instructor_comments'}='hide'; my $seed=time+($$<<16)+($$); my @allcodes; if ($old_name) { @@ -1708,7 +1724,7 @@ sub get_CODE { sub print_resources { my ($r,$helper,$person,$type,$moreenv,$master_seq,$remove_latex_header, - $LaTeXwidth,$number_of_columns)=@_; + $LaTeXwidth)=@_; my $current_output = ''; my $printed = ''; my ($username,$userdomain,$usersection) = split /:/,$person; @@ -1725,6 +1741,8 @@ sub print_resources { &Apache::lonxml::init_counter(); &Apache::lonxml::store_counter(); 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}) { if (defined $page_breaks{$curresline}) { @@ -1737,7 +1755,8 @@ sub print_resources { ($curresline!~ m/\.(problem|exam|quiz|assess|survey|form|library)$/)) ) { my ($map,$id,$res_url) = &Apache::lonnet::decode_symb($curresline); 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.':'; my $pre_counter=$env{'form.counter'}; my $rendered = &Apache::loncommon::get_student_view($curresline,$username,$userdomain,$env{'request.course.id'},'tex',$moreenv); @@ -1783,9 +1802,10 @@ sub print_resources { } else { $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 { - 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') { $rendered = &latex_header_footer_remove($rendered); } else { @@ -1803,11 +1823,20 @@ sub print_resources { if ($usersection ne '') {$courseidinfo.=' - Sec. '.$usersection} my $currentassignment=&Apache::lonxml::latex_special_symbols($helper->{VARS}->{'assignment'},'header'); 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 { my $blankpages = ''; 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); @@ -1819,34 +1848,17 @@ sub handler { &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); if (!ref($helper)) { return $helper; } -# my $key; -# foreach $key (keys %{$helper->{'VARS'}}) { -# $r->print(' '.$key.'->'.$helper->{'VARS'}->{$key}.'<-
'); -# } -# foreach $key (keys %env) { -# $r->print(' '.$key.'->'.$env{$key}.'<-
'); -# } -# return OK; my %parmhash=&Apache::lonnet::coursedescription($env{'request.course.id'}); -# my $key; -# foreach $key (keys %parmhash) { -# $r->print(' '.$key.'->'.$parmhash{$key}.'<-
'); -# } -# + # If a figure conversion queue file exists for this user.domain @@ -1870,7 +1882,7 @@ sub addMessage { Apache::lonhelper::message->new(); } -use Data::Dumper; + sub init_perm { undef(%perm); @@ -1932,7 +1944,7 @@ sub printHelper { # 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', {'pagebreaks' => 'scalar', @@ -1951,7 +1963,7 @@ sub printHelper { } } - + # This will persistently load in the data we want from the # very first screen. @@ -1969,6 +1981,7 @@ sub printHelper { if ($env{'form.url'}) { $helper->{VARS}->{'symb'} = &Apache::lonnet::symbread($helper->{VARS}->{'postdata'}); } + } if ($env{'form.symb'}) { @@ -2055,9 +2068,7 @@ sub printHelper { $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 (($helper->{'VARS'}->{'construction'} ne '1') && @@ -2176,11 +2187,9 @@ CHOOSE_STUDENTS } - my %all_codes = &Apache::lonnet::get('CODEs', - \@names, $cdom,$cnum); my %code_values; my %codes_to_print; - foreach my $key (keys(%all_codes)) { + foreach my $key (@names) { %code_values = &Apache::grades::get_codes($key, $cdom, $cnum); foreach my $key (keys(%code_values)) { $codes_to_print{$key} = 1; @@ -2211,8 +2220,7 @@ CHOOSE_STUDENTS &Apache::lonxml::xmlparse($r, 'helper', < PAGESIZE -
-
Number of anonymous assignments to print? +
Number of anonymous assignments to print: if (((\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'}+0) < 1) && @@ -2225,8 +2233,19 @@ CHOOSE_STUDENTS
- Value of CODE to print? - + Names to store the CODEs under for later: + + +
+ Bubble sheet type: + + + $codechoice + +

+
+ Enter a CODE to print: + if(!\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'} && !\$helper->{'VARS'}{'REUSE_OLD_CODES'} && @@ -2238,28 +2257,13 @@ CHOOSE_STUDENTS } -
- Choose single code from list - - - $code_selection - -
- Names to store the CODEs under for later: - - -
- Bubble sheet type: - - - $codechoice - -
-
+

Reprint a set of saved CODEs: + $namechoice +

$resource_selector @@ -2307,7 +2311,7 @@ CHOOSE_STUDENTS1 &Apache::lonxml::xmlparse($r, 'helper', < PAGESIZE -
Number of anonymous assignments to print? +
Number of anonymous assignments to print: if (((\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'}+0) < 1) && @@ -2320,8 +2324,19 @@ CHOOSE_STUDENTS1
- Value of CODE to print? - + Names to store the CODEs under for later: + + +
+ Bubble sheet type: + + + $codechoice + +

+
+ Enter a CODE to print: + if(!\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'} && !\$helper->{'VARS'}{'REUSE_OLD_CODES'} && @@ -2333,28 +2348,13 @@ CHOOSE_STUDENTS1 } -
- Choose single code from list - - - $code_selection - -
- Names to store the CODEs under for later: - - -
- Bubble sheet type: - - - $codechoice - -
-
+

Reprint a set of saved CODEs: + $namechoice +

$resource_selector @@ -2520,7 +2520,7 @@ CHOOSE_FROM_ANY_SEQUENCE Use style file: -   Select style file +   Select style file Show all foils? @@ -2549,6 +2549,7 @@ RNDSEED $helper->process(); + # MANUAL BAILOUT CONDITION: # If we're in the "final" state, bailout and return to handler if ($helper->{STATE} eq 'FINAL') {