--- loncom/interface/lonprintout.pm 2012/06/07 10:27:26 1.618 +++ loncom/interface/lonprintout.pm 2012/10/12 13:48:08 1.620 @@ -1,7 +1,7 @@ # The LearningOnline Network # Printout # -# $Id: lonprintout.pm,v 1.618 2012/06/07 10:27:26 foxr Exp $ +# $Id: lonprintout.pm,v 1.620 2012/10/12 13:48:08 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -582,14 +582,17 @@ sub printable { sub get_print_dates { my $res = shift; my $partsref = $res->parts(); - my @parts = @$partsref; + my @parts; + if (ref($partsref) eq 'ARRAY') { + @parts = @{$partsref}; + } my $open_date; my $close_date; my @open_dates; my @close_dates; - if (defined(@parts) && (scalar(@parts) > 0)) { + if (@parts) { foreach my $part (@parts) { my $partopen = $res->parmval('printstartdate', $part); my $partclose = $res->parmval('printenddate', $part); @@ -632,7 +635,7 @@ sub course_print_dates { # Don't bother looping over undefined or empty parts arraY; - if (defined(@parts) && (scalar(@parts) > 0)) { + if (@parts) { foreach my $part (@parts) { my ($partopen, $partclose) = $navmap->course_printdates($res, $part); push(@open_dates, $partopen); @@ -658,7 +661,7 @@ sub map_print_dates { # Don't bother looping over undefined or empty parts arraY; - if (defined(@parts) && (scalar(@parts) > 0)) { + if (@parts) { foreach my $part (@parts) { my ($partopen, $partclose) = $navmap->map_printdates($res, $part); push(@open_dates, $partopen); @@ -3018,7 +3021,6 @@ ENDPART $assignment, $courseidinfo, $name); - if ($numberofcolumns eq '1') { $result .='\newpage \noindent\parbox{\minipagewidth}{\noindent\\lhead{'.$header_text.'}} \vskip 5 mm '; } else { @@ -3530,6 +3532,8 @@ sub print_resources { my $fullname = &get_name($username,$userdomain); my $namepostfix = "\\\\"; # Both anon and not anon should get the same vspace. + + # # Figure out if we need to filter the output by # the incomplete problems for that person @@ -3568,6 +3572,10 @@ sub print_resources { # my $syllabus_first = 0; + my $current_assignment = ""; + my $assignment; + my $courseidinfo = &get_course(); + foreach my $curresline (@{$master_seq}) { if (defined $page_breaks{$curresline}) { if($i != 0) { @@ -3576,9 +3584,12 @@ sub print_resources { } $current_output .= &get_extra_vspaces($helper, $curresline); $i++; + my ($map,$id,$res_url) = &Apache::lonnet::decode_symb($curresline); + + # See if we need to emit a new header: + if ( !($type eq 'problems' && ($curresline!~ m/$LONCAPA::assess_page_re/)) ) { - my ($map,$id,$res_url) = &Apache::lonnet::decode_symb($curresline); if ($print_incomplete && !&incomplete($username, $userdomain, $res_url)) { next; } @@ -3682,6 +3693,19 @@ sub print_resources { } $remove_latex_header = 'YES'; } + $assignment = &Apache::lonxml::latex_special_symbols( + &Apache::lonnet::gettitle($map), 'header'); + if (($assignment ne $current_assignment) && ($assignment ne "")) { + my $header_line = &format_page_header($LaTeXwidth, $parmhash{'print_header_format'}, + $assignment, $courseidinfo, + $fullname, $usersection); + my $header_start = ($columns_in_format == 1) ? '\lhead' + : '\fancyhead[LO]'; + $header_line = $header_start.'{'.$header_line.'}'; + $current_output = $current_output . $header_line; + $current_assignment = $assignment; + } + if (&Apache::loncommon::connection_aborted($r)) { last; } } # If we are printing incomplete it's possible we don't have @@ -3702,24 +3726,32 @@ sub print_resources { if ($syllabus_first) { $current_output =~ s/\\\\ Last updated:/Last updated:/ } - my $courseidinfo = &get_course(); - my $currentassignment=&Apache::lonxml::latex_special_symbols($helper->{VARS}->{'assignment'},'header'); - my $header_line = - &format_page_header($LaTeXwidth, $parmhash{'print_header_format'}, - $currentassignment, $courseidinfo, $fullname, $usersection); - my $header_start = ($columns_in_format == 1) ? '\lhead' - : '\fancyhead[LO]'; - $header_line = $header_start.'{'.$header_line.'}'; + if (0) { + my $currentassignment=&Apache::lonxml::latex_special_symbols($helper->{VARS}->{'assignment'},'header'); + my $header_line = + &format_page_header($LaTeXwidth, $parmhash{'print_header_format'}, + $currentassignment, $courseidinfo, $fullname, $usersection); + my $header_start = ($columns_in_format == 1) ? '\lhead' + : '\fancyhead[LO]'; + $header_line = $header_start.'{'.$header_line.'}'; + } if ($current_output=~/\\documentclass/) { - $current_output =~ s/\\begin{document}/\\setlength{\\topmargin}{1cm} \\begin{document}\\noindent\\parbox{\\minipagewidth}{\\noindent$header_line$namepostfix}\\vskip 5 mm /; +# $current_output =~ s/\\begin{document}/\\setlength{\\topmargin}{1cm} \\begin{document}\\noindent\\parbox{\\minipagewidth}{\\noindent$header_line$namepostfix}\\vskip 5 mm /; + $current_output =~ s/\\begin{document}/\\setlength{\\topmargin}{1cm} \\begin{document}\\noindent\\parbox{\\minipagewidth}{\\noindent$namepostfix}\\vskip 5 mm /; + } else { my $blankpages = '\clearpage\strut\clearpage'x$helper->{'VARS'}->{'EMPTY_PAGES'}; - + +# $current_output = '\strut\vspace*{-6 mm}\\newline'. +# ©right_line().' \newpage '.$blankpages.$end_of_student. +# '\setcounter{page}{1}\noindent\parbox{\minipagewidth}{\noindent'. +# $header_line.$namepostfix. '} \vskip 5 mm '.$current_output; $current_output = '\strut\vspace*{-6 mm}\\newline'. ©right_line().' \newpage '.$blankpages.$end_of_student. - '\setcounter{page}{1}\noindent\parbox{\minipagewidth}{\noindent'. - $header_line.$namepostfix.'} \vskip 5 mm '.$current_output; + '\setcounter{page}{1}\noindent\parbox{\minipagewidth}{\noindent' + .$namepostfix. '} \vskip 5 mm '.$current_output; + } # # Close the student bracketing.