[LON-CAPA-cvs] cvs: loncom(version_2_11_X) /interface lonprintout.pm
raeburn
raeburn at source.lon-capa.org
Mon Nov 11 11:05:56 EST 2024
raeburn Mon Nov 11 16:05:56 2024 EDT
Modified files: (Branch: version_2_11_X)
/loncom/interface lonprintout.pm
Log:
- For 2.11
Backport 1.688 (part), 1.689 (part), 1.696, 1.697, 1.698, 1.699,
1.700 (part), 1.701, 1.702, 1.703, 1.704.
-------------- next part --------------
Index: loncom/interface/lonprintout.pm
diff -u loncom/interface/lonprintout.pm:1.627.2.37 loncom/interface/lonprintout.pm:1.627.2.38
--- loncom/interface/lonprintout.pm:1.627.2.37 Wed Oct 16 18:47:18 2024
+++ loncom/interface/lonprintout.pm Mon Nov 11 16:05:56 2024
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Printout
#
-# $Id: lonprintout.pm,v 1.627.2.37 2024/10/16 18:47:18 raeburn Exp $
+# $Id: lonprintout.pm,v 1.627.2.38 2024/11/11 16:05:56 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -75,7 +75,7 @@
#---------------------------- Helper helpers. -------------------------
-##
+##
# Filter function to determine if a resource is a printable sequence.
#
# @param $res -Resource to check.
@@ -143,7 +143,7 @@
# Parameters:
# helper - the helper which already contains info about the current folder we can
# purloin.
-# url - Top url of the sequence
+# map - the map for which incomplete problems are to be printed
# Return:
# XML that can be parsed by the helper to drive the state machine.
#
@@ -163,7 +163,7 @@
$map,
$selFilter,
'',
- $symbFilter,
+ $symbFilter,
'');
my $student_chooser = &generate_student_chooser('CHOOSE_STUDENTS_INCOMPLETE',
@@ -176,7 +176,7 @@
'CHOOSE_STUDENTS_INCOMPLETE_FORMAT'); # end state.
return $resource_chooser . $student_chooser . $format_chooser;
-}
+}
# BZ 5209
@@ -196,14 +196,14 @@
# helper - Helper we are creating states for.
# Returns:
# Text that can be parsed by the helper.
-#
+#
sub create_incomplete_course_helper {
my $helper = shift;
my $filter = '$res->is_problem() || $res->contains_problem() || $res->is_sequence() || $res->is_practice())';
my $symbfilter = '$res->shown_symb()';
-
+
my $resource_chooser = &generate_resource_chooser('INCOMPLETE_PROBLEMS_COURSE_RESOURCES',
'Select problem(s) to print',
'multichoice = "1" suppressEmptySequences="0" addstatus="1" closeallpagtes="1" modallink="1"',
@@ -229,7 +229,7 @@
}
-# BZ5209
+# BZ5209
# Creates the states needed to run the print helper for a student
# that wants to print his incomplete problems from the current folder.
# Parameters:
@@ -256,7 +256,7 @@
'RESOURCES',
'PAGESIZE',
$map,
- $filter, '',
+ $filter, '',
$symfilter,
'');
@@ -274,9 +274,9 @@
sub generate_student_chooser {
- my ($this_state,
- $sort_choice,
- $variable,
+ my ($this_state,
+ $sort_choice,
+ $variable,
$next_state) = @_;
my $result = <<CHOOSE_STUDENTS;
<state name="$this_state" title="Select Students and Resources">
@@ -288,7 +288,7 @@
</choices>
<message><br /><hr /><br /> </message>
- <student multichoice='1'
+ <student multichoice='1'
variable="$variable"
nextstate="$next_state"
coursepersonnel="1" />
@@ -318,7 +318,7 @@
# filter - How to filter the resources.
# value_func - <valuefunc> function.
# choice_func - If not empty generates a <choicefunc> with this function.
-# start_new_option
+# start_new_option
# - Fragment appended after valuefunc.
#
#
@@ -444,13 +444,13 @@
return $result;
}
-# Returns the XML for choosing how assignments are to be formatted
+# Returns the XML for choosing how assignments are to be formatted
# that text must still be parsed by the helper xml parser.
# Parameters: 3 (required)
# helper - The helper; $helper->{'VARS'}->{'PRINT_TYPE'} used
# to check if splitting PDFs by section can be offered.
-# title - Title for the current state.
+# title - Title for the current state.
# this_state - State name of the chooser.
sub generate_format_selector {
@@ -491,10 +491,10 @@
# @param \@opens - reference to an array of open dates.
# @param \@closes - reference to an array of close dates.
#
-# @return ($open, $close)
+# @return ($open, $close)
#
# @note If open/close dates are not defined they will be returned as undef
-# @note It is possible for there to be no overlap in which case -1,-1
+# @note It is possible for there to be no overlap in which case -1,-1
# will be returned.
# @note The algorithm used is to take the latest open date and the earliest end date.
#
@@ -528,9 +528,9 @@
$latest_open = -1;
$earliest_close = -1;
}
-
+
return ($latest_open, $earliest_close);
-
+
}
##
@@ -557,7 +557,7 @@
if ($close_date && ($close_date < $now)) {
return 0;
}
-
+
return 1;
}
@@ -566,20 +566,19 @@
# Returns the innermost print start/print end dates for a resource.
# This is done by looking at the start/end dates for its parts and choosing
# the intersection of those dates.
-#
+#
# @param res - lonnvamaps::resource object that represents the resource.
#
# @return (opendate, closedate)
#
# @note If open/close dates are not defined they will be returned as undef
-# @note It is possible for there to be no overlap in which case -1,-1
+# @note It is possible for there to be no overlap in which case -1,-1
# will be returned.
# @note The algorithm used is to take the latest open date and the earliest end date.
# For consistency with &printable() in lonnavmaps.pm determination of start
# date for printing checks printstartdate param first, then, if not set,
# opendate param, then, if not set, contentopen param.
-
sub get_print_dates {
my $res = shift;
my $partsref = $res->parts();
@@ -624,7 +623,7 @@
# get_print_dates but namvaps::course_print_dates are gotten...and not converted
# to times either.
#
-# @param $res - Reference to a resource has from lonnvampas::resource.
+# @param $res - Reference to a resource hash from lonnavmaps::resource.
#
# @return (opendate, closedate)
#
@@ -638,7 +637,7 @@
my @close_dates;
my $navmap = $res->{NAV_MAP}; # Slightly OO dirty.
- # Don't bother looping over undefined or empty parts arraY;
+ # Don't bother looping over undefined or empty parts array;
if (@parts) {
foreach my $part (@parts) {
@@ -664,7 +663,7 @@
my $navmap = $res->{NAV_MAP}; # slightly OO dirty.
- # Don't bother looping over undefined or empty parts arraY;
+ # Don't bother looping over undefined or empty parts array;
if (@parts) {
foreach my $part (@parts) {
@@ -691,7 +690,7 @@
my $navmap = Apache::lonnavmaps::navmap->new($username, $domain);
-
+
if (defined($navmap)) {
my $res = $navmap->getResourceByUrl($map);
@@ -727,7 +726,7 @@
# Returns:
# reference to an array of resources that can be passed to
# print_resources.
-#
+#
sub master_seq_to_person_seq {
my ($map, $seq, $who, $code, $nohidemap) = @_;
@@ -745,9 +744,9 @@
if ($nohidemap) {
$unhidden = &Apache::lonnet::clutter($map);
}
-
+
my $navmap = Apache::lonnavmaps::navmap->new($username, $userdomain,
- $code,$unhidden);
+ $code, $unhidden);
my ($start,$finish);
if ($map) {
@@ -765,15 +764,15 @@
my $iterator = $navmap->getIterator($start,$finish,{},1);
# Iterate on the resource..select the items that are randomly selected
- # and that are in the seq_has. Presumably the iterator will take care
- # of the random ordering part of the deal.
+ # and that are in the seq_hash. Presumably the iterator will take care
+ # of the random ordering part of the deal.
+ #
my $curres;
while ($curres = $iterator->next()) {
#
# Only process resources..that are not removed by randomout...
# and are selected for printint as well.
#
-
if (ref($curres) && ! $curres->randomout()) {
my $currsymb = $curres->symb();
if (exists($seq_hash{$currsymb})) {
@@ -783,7 +782,7 @@
}
return \@output_seq; # for now.
-
+
}
@@ -806,10 +805,10 @@
}
return $contents;
-
+
}
-# Fetch the annotations associated with a URL and
+# Fetch the annotations associated with a URL and
# put a centered 'annotations:' title.
# This is all suppressed if the annotations are empty.
#
@@ -842,7 +841,7 @@
my ($text) = @_;
# There appear to be cases where the font directive is empty.. in which
- # case the first substituion would insert a spurious \ oh happy day.
+ # case the first substitution would insert a spurious \ oh happy day.
# as this has been the cause of much mystery and hair pulling _sigh_
if ($font_size ne '') {
@@ -855,16 +854,16 @@
}
-# include_pdf - PDF files are included into the
+# include_pdf - PDF files are included into the
# output as follows:
# - The PDF, if necessary, is replicated.
# - The PDF is added to the list of files to convert to postscript (along with the images).
# - The LaTeX is added to include the final converted postscript in the file as an included
-# job. The assumption is that the includedpsheader.ps header will be included.
+# job. The assumption is that the includepsheader.ps header will be included.
#
# Parameters:
# pdf_uri - URI of the PDF file to include.
-#
+#
# Returns:
# The LaTeX to include.
#
@@ -884,9 +883,9 @@
$file = &Apache::lonnet::filelocation('',$pdf_uri);
}
- # The file isn ow replicated locally.. or it did not exist in the first place
+ # The file is now replicated locally ... or it did not exist in the first place
# (unlikely). If it did exist, add the pdf to the set of files/images that
- # need tob e converted for this print job:
+ # need to be converted for this print job:
my $londocroot = $Apache::lonnet::perlvar{'lonDocRoot'};
$file =~ s{(.*)/res/}{$londocroot/res/};
@@ -944,7 +943,7 @@
# the number of times requested by the caller.
# If we still have a proble, no text is appended to the
# output and we set some global variables.
-# to indicate to the caller an SSI error occurred.
+# to indicate to the caller an SSI error occurred.
# All of this is supposed to deal with the issues described
# in LonCAPA BZ 5631 see:
# http://bugs.lon-capa.org/show_bug.cgi?id=5631
@@ -954,7 +953,7 @@
# resource - The resource to include. This is passed directly, without
# interpretation to lonnet::ssi.
# form - The form hash parameters that guide the interpretation of the resource
-#
+#
# retries - Number of retries allowed before giving up completely.
# Returns:
# On success, returns the rendered resource identified by the resource parameter.
@@ -1005,12 +1004,12 @@
#
# printf_style_subst item format_string repl
-#
+#
# Does printf style substitution for a format string that
# can have %[n]item in it.. wherever, %[n]item occurs,
# rep is substituted in format_string. Note that
# [n] is an optional integer length. If provided,
-# repl is truncated to at most [n] characters prior to
+# repl is truncated to at most [n] characters prior to
# substitution.
#
sub printf_style_subst {
@@ -1022,15 +1021,15 @@
my $subst = $repl;
if ($size ne "") {
$subst = substr($subst, 0, $size);
-
- # Here's a nice edge case.. supose the end of the
- # substring is a \. In that case may have just
+
+ # Here's a nice edge case ... suppose the end of the
+ # substring is a \. In that case may have just
# chopped off a TeX escape... in that case, we append
- # " " for the trailing character, and let the field
+ # " " for the trailing character, and let the field
# spill over a bit (sigh).
# We don't just chop off the last character in order to deal
# with one last pathology, and that would be if substr had
- # trimmed us to e.g. \\\
+ # trimmed us to e.g. \\\
if ($subst =~ /\\$/) {
@@ -1050,8 +1049,8 @@
}
-# Format a header according to a format.
-#
+# Format a header according to a format.
+#
# Substitutions:
# %a - Assignment name.
@@ -1075,7 +1074,7 @@
# we assume that each character is about 2mm in width.
# (correct for the header text size??). We ignore
# any formatting (e.g. boldfacing in this).
- #
+ #
# - Allow the student/course to be one line.
# but only truncate the course.
# - Allow the assignment to be 2 lines (wrapped).
@@ -1111,9 +1110,6 @@
}
- return $format;
-
-
# If the user has role author, $course and $assignment are empty so
# there is '\\ \\ ' in the page header. That's cause a error in LaTeX
if($format =~ /\\\\\s\\\\\s/) {
@@ -1121,6 +1117,9 @@
my $testPrintout = '\\\\'.&mt('Authoring Space').' \\\\'.&mt('Test-Printout ');
$format =~ s/\\\\\s\\\\\s/$testPrintout/;
}
+
+ return $format;
+
#
# We're going to trust LaTeX to break lines appropriately, but
# we'll truncate anything that's more than 3 lines worth of
@@ -1136,7 +1135,7 @@
return $format;
-
+
}
#
@@ -1184,7 +1183,7 @@
# Remove leading/trailing whitespace;
$value =~ s/^\s*//g;
$value =~ s/\s*$//g;
-
+
# All digits?
if ($value !~ /^[0-9]+$/) {
return "Numeric code $value has invalid characters - must only be digits";
@@ -1205,7 +1204,7 @@
#
sub is_valid_alpha_code {
my ($value, $num_letters) = @_;
-
+
# strip leading and trailing spaces.
$value =~ s/^\s*//g;
@@ -1223,7 +1222,7 @@
# Determine if a code entered by the user in a helper is valid.
# valid depends on the code type and the type of code selected.
-# The type of code selected can either be numeric or
+# The type of code selected can either be numeric or
# Alphabetic. If alphabetic, the code, in fact is a simple
# substitution cipher for the actual numeric code: 0->A, 1->B ...
# We'll be nice and be case insensitive for alpha codes.
@@ -1260,7 +1259,7 @@
#
# Compare two students by section (Used to sort by section).
#
-# Implicit inputs,
+# Implicit inputs,
# $a - The first one
# $b - The second one.
#
@@ -1312,11 +1311,11 @@
}
# Break the tie on the first name, but there are leading (possibly trailing
- # whitespaces to get rid of first
+ # whitespaces to get rid of first)
#
$f1 =~ s/^\s+//; # Remove leading...
$f1 =~ s/\s+$//; # Trailing spaces from first 1...
-
+
$f2 =~ s/^\s+//;
$f2 =~ s/\s+$//; # And the same for first 2...
@@ -1326,7 +1325,7 @@
if($f1 gt $f2) {
return 1;
}
-
+
# Must be the same name.
return 0;
@@ -1339,7 +1338,7 @@
return $text;
}
#
-# If necessary, encapsulate text inside
+# If necessary, encapsulate text inside
# a minipage env.
# necessity is determined by the problem_split param.
#
@@ -1363,7 +1362,7 @@
my $helper = shift;
my $split_pdf = $helper->{'VARS'}->{'SPLIT_PDFS'};
-
+
if ($split_pdf eq 'all') {
$helper->{'VARS'}->{'NUMBER_TO_PRINT'} = 'all';
} elsif ($split_pdf eq 'oneper') {
@@ -1395,8 +1394,8 @@
$result =~ s/&(\#0?34|quot);/\"/g;
$result =~ s/&\#0?35;/\\\#/g;
$result =~ s/&\#0?36;/\\\$/g;
- $result =~ s/&\#0?37;/\\%/g;
- $result =~ s/&(\#0?38|amp);/\\&/g;
+ $result =~ s/&\#0?37;/\\%/g;
+ $result =~ s/&(\#0?38|amp);/\\&/g;
$result =~ s/&\#(0?39|146);/\'/g;
$result =~ s/&\#0?40;/(/g;
$result =~ s/&\#0?41;/)/g;
@@ -1503,7 +1502,7 @@
$result =~ s/&(\#160|nbsp);/~/g;
$result =~ s/&(\#161|iexcl);/!\`/g;
$result =~ s/&(\#162|cent);/\\textcent /g;
- $result =~ s/&(\#163|pound);/\\pounds /g;
+ $result =~ s/&(\#163|pound);/\\pounds /g;
$result =~ s/&(\#164|curren);/\\textcurrency /g;
$result =~ s/&(\#165|yen);/\\textyen /g;
$result =~ s/&(\#166|brvbar);/\\textbrokenbar /g;
@@ -1529,32 +1528,32 @@
$result =~ s/&(\#188|frac14);/\\textonequarter /g;
$result =~ s/&(\#189|frac12);/\\textonehalf /g;
$result =~ s/&(\#190|frac34);/\\textthreequarters /g;
- $result =~ s/&(\#191|iquest);/?\`/g;
- $result =~ s/&(\#192|Agrave);/\\\`{A}/g;
- $result =~ s/&(\#193|Aacute);/\\\'{A}/g;
+ $result =~ s/&(\#191|iquest);/?\`/g;
+ $result =~ s/&(\#192|Agrave);/\\\`{A}/g;
+ $result =~ s/&(\#193|Aacute);/\\\'{A}/g;
$result =~ s/&(\#194|Acirc);/\\^{A}/g;
$result =~ s/&(\#195|Atilde);/\\~{A}/g;
- $result =~ s/&(\#196|Auml);/\\\"{A}/g;
+ $result =~ s/&(\#196|Auml);/\\\"{A}/g;
$result =~ s/&(\#197|Aring);/{\\AA}/g;
$result =~ s/&(\#198|AElig);/{\\AE}/g;
$result =~ s/&(\#199|Ccedil);/\\c{c}/g;
- $result =~ s/&(\#200|Egrave);/\\\`{E}/g;
- $result =~ s/&(\#201|Eacute);/\\\'{E}/g;
+ $result =~ s/&(\#200|Egrave);/\\\`{E}/g;
+ $result =~ s/&(\#201|Eacute);/\\\'{E}/g;
$result =~ s/&(\#202|Ecirc);/\\^{E}/g;
$result =~ s/&(\#203|Euml);/\\\"{E}/g;
$result =~ s/&(\#204|Igrave);/\\\`{I}/g;
- $result =~ s/&(\#205|Iacute);/\\\'{I}/g;
+ $result =~ s/&(\#205|Iacute);/\\\'{I}/g;
$result =~ s/&(\#206|Icirc);/\\^{I}/g;
- $result =~ s/&(\#207|Iuml);/\\\"{I}/g;
+ $result =~ s/&(\#207|Iuml);/\\\"{I}/g;
$result =~ s/&(\#209|Ntilde);/\\~{N}/g;
$result =~ s/&(\#210|Ograve);/\\\`{O}/g;
$result =~ s/&(\#211|Oacute);/\\\'{O}/g;
$result =~ s/&(\#212|Ocirc);/\\^{O}/g;
$result =~ s/&(\#213|Otilde);/\\~{O}/g;
- $result =~ s/&(\#214|Ouml);/\\\"{O}/g;
+ $result =~ s/&(\#214|Ouml);/\\\"{O}/g;
$result =~ s/&(\#215|times);/\\ensuremath\{\\times\}/g;
$result =~ s/&(\#216|Oslash);/{\\O}/g;
- $result =~ s/&(\#217|Ugrave);/\\\`{U}/g;
+ $result =~ s/&(\#217|Ugrave);/\\\`{U}/g;
$result =~ s/&(\#218|Uacute);/\\\'{U}/g;
$result =~ s/&(\#219|Ucirc);/\\^{U}/g;
$result =~ s/&(\#220|Uuml);/\\\"{U}/g;
@@ -1585,7 +1584,7 @@
$result =~ s/&(\#246|ouml);/\\\"{o}/g;
$result =~ s/&(\#247|divide);/\\ensuremath\{\\div\}/g;
$result =~ s/&(\#248|oslash);/{\\o}/g;
- $result =~ s/&(\#249|ugrave);/\\\`{u}/g;
+ $result =~ s/&(\#249|ugrave);/\\\`{u}/g;
$result =~ s/&(\#250|uacute);/\\\'{u}/g;
$result =~ s/&(\#251|ucirc);/\\^{u}/g;
$result =~ s/&(\#252|uuml);/\\\"{u}/g;
@@ -1732,12 +1731,12 @@
my %page_formats=
('letter' => {
'book' => {
- '1' => [ '7.1 in','9.8 in', '-0.57 in','-0.57 in','0.275 in'],
- '2' => ['3.66 in','9.8 in', '-0.57 in','-0.57 in','-0.4 in']
+ '1' => [ '7.1 in','9.7 in', '-0.57 in','-0.57 in','-0.5 in'],
+ '2' => ['3.66 in','9.8 in', '-0.57 in','-0.57 in','-0.5 in']
},
'album' => {
- '1' => [ '8.8 in', '6.8 in','-0.55 in', '-0.55 in','0.394 in'],
- '2' => [ '4.8 in', '6.8 in','-0.5 in', '-1.0 in','3.25 in']
+ '1' => [ '8.8 in', '6.8 in','-0.55 in', '-0.55 in','-0.5 in'],
+ '2' => [ '4.8 in', '6.7 in','-0.5 in', '-1.0 in','3.0 in']
},
},
'legal' => {
@@ -1747,7 +1746,7 @@
},
'album' => {
'1' => ['12 in','7.1 in',,'-0.57 in','-0.57 in','-0.5 in'],
- '2' => ['6.0 in','7.1 in','-1 in','-1 in','5 in']
+ '2' => ['5.7 in','7.1 in','-1 in','-1 in','5 in']
},
},
'tabloid' => {
@@ -1796,8 +1795,8 @@
'2' => [ '9.1 cm','27.2 cm','-1.397 cm','-2.11 cm','-1.27 cm']
},
'album' => {
- '1' => ['21.59 cm','19.558 cm','-1.397cm','-2.11 cm','0 cm'],
- '2' => ['9.91 cm','19.558 cm','-1.397 cm','-2.11 cm','0 cm']
+ '1' => ['24.0 cm','18.0 cm','-1.0 cm','-1.0 cm','-1.25 cm'],
+ '2' => ['11.5 cm','18.0 cm','-0.7 cm','-1.7 cm','-1.25 cm']
},
},
'a5' => {
@@ -1829,8 +1828,8 @@
# "A2 [420x594 mm]", "A3 [297x420 mm]",
# "A4 [210x297 mm]", "A5 [148x210 mm]",
# "A6 [105x148 mm]"
-#
- my ($papersize,$layout,$numberofcolumns) = @_;
+#
+ my ($papersize,$layout,$numberofcolumns) = @_;
return @{$page_formats{$papersize}->{$layout}->{$numberofcolumns}};
}
@@ -1849,12 +1848,14 @@
my $courseidinfo;
if (defined($env{'request.course.id'})) {
$courseidinfo = &Apache::lonxml::latex_special_symbols(&unescape($env{'course.'.$env{'request.course.id'}.'.description'}),'header');
+
}
return $courseidinfo;
}
sub page_format_transformation {
- my ($papersize,$layout,$numberofcolumns,$choice,$text,$assignment,$tableofcontents,$indexlist,$selectionmade) = @_;
+ my ($papersize,$layout,$numberofcolumns,$choice,$text,$assignment,$tableofcontents,
+ $indexlist,$selectionmade,$mostrecent) = @_;
my ($textwidth,$textheight,$oddoffset,$evenoffset,$topmargin);
if ($selectionmade eq '4') {
@@ -1868,8 +1869,12 @@
}
($textwidth,$textheight,$oddoffset,$evenoffset,$topmargin) = &page_format($papersize,$layout,$numberofcolumns,$topmargin);
-
- my $name = &get_name();
+ my $name;
+ if ($mostrecent ne '') {
+ $name = $mostrecent;
+ } else {
+ $name = &get_name();
+ }
my $courseidinfo = &get_course();
if (defined($courseidinfo)) { $courseidinfo=' - '.$courseidinfo }
my $header_text = $parmhash{'print_header_format'};
@@ -1880,26 +1885,53 @@
my $fancypagestatement='';
if ($numberofcolumns eq '2') {
$fancypagestatement="\\fancyhead{}\\fancyhead[LO]{$header_text}";
+ if ($parmhash{'print_header_format'} eq '') {
+ $fancypagestatement .= "\\fancyhead[RE]{\\thepage \\\\[\\baselineskip]}";
+ }
} else {
$fancypagestatement="\\rhead{}\\chead{}\\lhead{$header_text}";
}
+ $fancypagestatement .= "\\fancyfoot{}";
+ my ($paperwidth,$paperheight);
if ($layout eq 'album') {
$text =~ s/\\begin\{document}/\\setlength{\\oddsidemargin}{$oddoffset}\\setlength{\\evensidemargin}{$evenoffset}$topmargintoinsert\n\\setlength{\\textwidth}{$textwidth}\\setlength{\\textheight}{$textheight}\\setlength{\\textfloatsep}{8pt plus 2\.0pt minus 4\.0pt}\n\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm}\\usepackage{fancyhdr}\\addtolength{\\headheight}{\\baselineskip}\n\\pagestyle{fancy}$fancypagestatement\\usepackage{booktabs}\\begin{document}\\voffset=-0\.8 cm\\setcounter{page}{1}\n /;
+ if ($papersize eq 'a4') {
+ $paperwidth = '29.7cm';
+ $paperheight = '21.0cm';
+ } elsif ($numberofcolumns eq '1') {
+ if ($papersize eq 'letter') {
+ $paperwidth = '11.0in';
+ $paperheight = '8.5in';
+ } elsif ($papersize eq 'legal') {
+ $paperwidth = '14.0in';
+ $paperheight = '8.5in';
+ }
+ }
} elsif ($layout eq 'book') {
- if ($choice ne 'All class print') {
+ if ($choice ne 'All class print') {
$text =~ s/\\begin\{document}/\\textheight $textheight\\oddsidemargin = $evenoffset\\evensidemargin = $evenoffset $topmargintoinsert\n\\textwidth= $textwidth\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm}\n\\renewcommand{\\ref}{\\keephidden\}\\usepackage{fancyhdr}\\addtolength{\\headheight}{\\baselineskip}\\pagestyle{fancy}$fancypagestatement\\usepackage{booktabs}\\begin{document}\n\\voffset=-0\.8 cm\\setcounter{page}{1}\n/;
} else {
$text =~ s/\\pagestyle\{fancy}\\rhead\{}\\chead\{}\s*\\begin\{document}/\\textheight = $textheight\\oddsidemargin = $evenoffset\n\\evensidemargin = $evenoffset $topmargintoinsert\\textwidth= $textwidth\\newlength{\\minipagewidth}\n\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm}\\renewcommand{\\ref}{\\keephidden\}\\pagestyle{fancy}\\rhead{}\\chead{}\\usepackage{booktabs}\\begin{document}\\voffset=-0\.8cm\n\\setcounter{page}{1} \\vskip 5 mm\n /;
}
- if ($papersize eq 'a4') {
- my $papersize_text;
- if ($perm{'pav'}) {
- $papersize_text = '\\special{papersize=210mm,297mm}';
- } else {
- $papersize_text = '\special{papersize=210mm,297mm}';
- }
- $text =~ s/(\\begin\{document})/$1$papersize_text/;
- }
+ if ($papersize eq 'a4') {
+ $paperwidth = '21.0cm';
+ $paperheight = '29.7cm';
+ } elsif ($papersize eq 'letter') {
+ $paperwidth = '8.5in';
+ $paperheight = '11.0in';
+ } elsif ($papersize eq 'legal') {
+ $paperwidth = '8.5in';
+ $paperheight = '14.0in';
+ }
+ }
+ if ($paperwidth ne '' && $paperheight ne '') {
+ my $papersize_text;
+ if ($perm{'pav'}) {
+ $papersize_text = '\\special{papersize='.$paperwidth.','.$paperheight.'}';
+ } else {
+ $papersize_text = '\special{papersize='.$paperwidth.','.$paperheight.'}';
+ }
+ $text =~ s/(\\begin\{document})/$1$papersize_text/;
}
if ($tableofcontents eq 'yes') {$text=~s/(\\setcounter\{page\}\{1\})/$1 \\tableofcontents\\newpage /;}
if ($indexlist eq 'yes') {
@@ -1912,7 +1944,7 @@
sub page_cleanup {
my $result = shift;
-
+
$result =~ m/\\end\{document}(\d*)$/;
my $number_of_columns = $1;
my $insert = '{';
@@ -1964,7 +1996,7 @@
$result =~ s/\$number_of_columns/$number_of_columns/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;
-#-- LaTeX corrections
+#-- LaTeX corrections
my $first_comment = index($result,'<!--',0);
while ($first_comment != -1) {
my $end_comment = index($result,'-->',$first_comment);
@@ -2083,8 +2115,8 @@
}
if ($mode ne '') {$mode='\\'.$mode}
my $result = &print_latex_header($mode);
- if ($cleanURL=~m|^(/adm/wrapper/)?ext/|) {
- $cleanURL=~s|^(/adm/wrapper/)?ext/|http://|;
+ if ($cleanURL=~m|^(/adm/wrapper)?/ext/|) {
+ $cleanURL=~s|^(/adm/wrapper)?/ext/|http://|;
$cleanURL=~s|^http://https://|https://|;
if ($shown eq $currentURL) {
$shown = &Apache::lonxml::latex_special_symbols($cleanURL);
@@ -2096,7 +2128,7 @@
if ($shown eq $currentURL) {
$result.=&Apache::lonxml::latex_special_symbols($currentURL);
} else {
- $result.=$shown;
+ $result.=$shown;
}
}
$result.= '\vskip 0.5mm\noindent\makebox[\textwidth/$number_of_columns][b]{\hrulefill} \end{document}';
@@ -2133,7 +2165,7 @@
$laystyle = &map_laystyle($laystyle);
my ($textwidth,$textheight,$oddoffset,$evenoffset) = &page_format($papersize,$laystyle,
$numberofcolumns);
- my $LaTeXwidth=&recalcto_mm($textwidth);
+ my $LaTeXwidth=&recalcto_mm($textwidth);
if ($mode ne '') {$mode='\\'.$mode}
my $result = &print_latex_header($mode);
@@ -2149,9 +2181,9 @@
&Apache::lonnet::delenv('construct.style');
}
- # First is the overall page description. This is then followed by the
+ # First is the overall page description. This is then followed by the
# components of the page. Each of which must be printed independently.
- my $the_page = shift(@page_resources);
+ my $the_page = shift(@page_resources);
foreach my $resource (@page_resources) {
@@ -2163,12 +2195,12 @@
if ($resource_src =~ /.page$/i) {
my $navmap = Apache::lonnavmaps::navmap->new();
my @page_resources = $navmap->retrieveResources($resource_src);
- $result .= &print_page_in_course($helper, $rparmhash,
+ $result .= &print_page_in_course($helper, $rparmhash,
$resource_src, \@page_resources);
} elsif ($resource->ext()) {
$result.=&latex_header_footer_remove(&unsupported($current_url,$mode,$resource->symb));
} elsif ($resource_src =~ /\.(problem|exam|quiz|assess|survey|form|library|xml|html|htm|xhtml|xhtm)$/) {
- # these resources go through the XML transformer:
+ # these resources go through the XML transformer:
$result .= &Apache::lonxml::latex_special_symbols($resource->title()) . '\\\\';
my $urlp = &Apache::lonnet::clutter($resource_src);
@@ -2182,9 +2214,9 @@
$form{'grade_target'} = 'tex';
$form{'textwidth'} = &get_textwidth($helper, $LaTeXwidth);
- $form{'pdfFormFields'} = 'no'; #
- $form{'showallfoils'} = $helper->{'VARS'}->{'showallfoils'};
-
+ $form{'pdfFormFields'} = 'no'; #
+ $form{'showallfoils'} = $helper->{'VARS'}->{'showallfoils'};
+
$form{'problem_split'}=$parmhash{'problem_stream_switch'};
$form{'suppress_tries'}=$parmhash{'suppress_tries'};
$form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};
@@ -2200,7 +2232,7 @@
}
$form{'rndseed'}=$rndseed;
&Apache::lonnet::appenv(\%moreenv);
-
+
&Apache::lonxml::clear_problem_counter();
my $texversion = &ssi_with_retries($urlp, $ssi_retry_count, %form);
@@ -2240,11 +2272,6 @@
}
$texversion.='\vskip 1 mm '.$answer.'\end{document}';
}
-
-
-
-
-
}
# Print annotations.
@@ -2253,7 +2280,7 @@
my $annotation .= &annotate($currentURL);
$texversion =~ s/(\\keephidden\{ENDOFPROBLEM})/$annotation$1/;
}
-
+
if ($helper->{'VARS'}->{'TABLE_INDEX'} eq 'yes') {
$texversion=&IndexCreation($texversion,$currentURL);
}
@@ -2291,7 +2318,7 @@
my $pdf_result;
opendir(DIR,$prtspool);
- my @files =
+ my @files =
grep(/^$env{'user.name'}_$env{'user.domain'}_printout_(\d+)_.*\.(pdf|zip)$/,readdir(DIR));
closedir(DIR);
@@ -2371,7 +2398,7 @@
}
return %page_breaks;
}
-#
+#
# Returns text to insert for any extra vskip prior to the resource.
# Parameters:
# helper - Reference to the helper object driving the printout.
@@ -2382,7 +2409,7 @@
# EXTRASPACE has the list of extra space values.
# EXTRASPACE_UNITS is the set of resources for which the units are
# mm. All others are 'in'.
-#
+#
# The resource is found in the POSSIBLE_RESOURCES to get the index
# of the EXTRASPACE value.
#
@@ -2403,7 +2430,7 @@
my ($helper) = @_;
- # If this is the first time, unrap the resources and extra spaces:
+ # If this is the first time, unwrap the resources and extra spaces:
if (!$skips_loaded) {
@extraspace = (split(/\|\|\|/, $helper->{'VARS'}->{'EXTRASPACE'}));
@@ -2451,7 +2478,7 @@
# The resource chooser part of the helper needs more than just
# the value of the extraspaces var to recover the value into a text
# field option. This sub produces the required format for the saved var:
-# specifically
+# specifically
# ||| separated fields of the form resourcename=value
#
# Parameters:
@@ -2485,7 +2512,7 @@
$env{'form.extraspace'} = $result;
$env{'form.extraspace_units'} = $helper->{'VARS'}->{'EXTRASPACE_UNITS'};
return $result;
-
+
}
# Output a sequence (recursively if neeed)
@@ -2511,11 +2538,11 @@
}
my $errtext=&LONCAPA::map::mapread(&Apache::lonnet::filelocation('',$currentURL));
- #
+ #
# These make this all support recursing for subsequences.
#
my @order = @LONCAPA::map::order;
- my @resources = @LONCAPA::map::resources;
+ my @resources = @LONCAPA::map::resources;
for (my $member=0;$member<=$#order;$member++) {
$resources[$order[$member]]=~/^([^:]*):([^:]*):/;
@@ -2531,7 +2558,7 @@
$texversion=&ssi_with_retries($urlp, $ssi_retry_count, %form);
}
if((($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||
- ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) &&
+ ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) &&
($urlp=~/$LONCAPA::assess_page_re/)) {
# Don't permanently modify %$form...
my %answerform = %form;
@@ -2546,7 +2573,7 @@
$texversion=~s/(\\keephidden\{ENDOFPROBLEM})/$answer$1/;
} else {
# If necessary, encapsulate answer in minipage:
-
+
$texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
my $title = &Apache::lonnet::gettitle($helper->{'VARS'}->{'symb'});
$title = &Apache::lonxml::latex_special_symbols($title);
@@ -2568,16 +2595,16 @@
$result.=$texversion;
} elsif ($urlp=~/\.(sequence|page)$/) {
-
+
# header:
$result.='\strut\newline\noindent Sequence/page '.$urlp.'\strut\newline\noindent\makebox[\textwidth/$number_of_columns][b]{\hrulefill}\newline\noindent ';
# IF sequence, recurse:
-
+
if ($urlp =~ /\.sequence$/) {
- $result .= &print_construction_sequence($urlp,
- $helper, %form,
+ $result .= &print_construction_sequence($urlp,
+ $helper, %form,
$LaTeXwidth);
}
}
@@ -2592,7 +2619,7 @@
if ($member != $#order) {
$texversion .= '\\ \cleardoublepage';
}
-
+
$result .= $texversion;
}
}
@@ -2616,6 +2643,7 @@
# 6 Print selected problems from a folder.
# 7 Print print selected resources from some scope.
# 8 Print resources for selected students.
+# 9 Print for anonymous CODEs
#
#BZ 5209
# 2 map_incomplete_problems_seq Print incomplete problems from the current
@@ -2653,7 +2681,7 @@
url += 'form=' + formname + '&';
if (only != null) {
url += 'only=' + only + '&';
- }
+ }
if (omit != null) {
url += 'omit=' + omit + '&';
}
@@ -2688,7 +2716,7 @@
$env{'form.pagebreaks'} = $helper->{'VARS'}->{'FINISHPAGE'};
&set_form_extraspace($helper);
- $env{'form.lastprinttype'} = $print_type;
+ $env{'form.lastprinttype'} = $print_type;
&Apache::loncommon::store_course_settings('print',
{'pagebreaks' => 'scalar',
'extraspace' => 'scalar',
@@ -2705,13 +2733,13 @@
$laystyle = &map_laystyle($laystyle);
my ($textwidth,$textheight,$oddoffset,$evenoffset) = &page_format($papersize,$laystyle,$numberofcolumns);
my $assignment = $env{'form.assignment'};
- my $LaTeXwidth=&recalcto_mm($textwidth);
+ my $LaTeXwidth=&recalcto_mm($textwidth);
my @print_array=();
my @student_names=();
+ my $lastprinted;
-
- # Common settings for the %form has:
- # In some cases these settings get overriddent by specific cases, but the
+ # Common settings for the %form hash:
+ # In some cases these settings get overridden by specific cases, but the
# settings are common enough to make it worthwhile factoring them out
# here.
#
@@ -2721,16 +2749,16 @@
$form{'pdfFormFields'} = 'no';
# If form.showallfoils is set, then request all foils be shown:
- # privilege will be enforced both by not allowing the
+ # privilege will be enforced both by not allowing the
# check box selecting this option to be presnt unless it's ok,
# and by lonresponse's priv. check.
# The if is here because lonresponse.pm only cares that
# showallfoils is defined, not what the value is.
- if ($helper->{'VARS'}->{'showallfoils'} eq "1") {
+ if ($helper->{'VARS'}->{'showallfoils'} eq "1") {
$form{'showallfoils'} = $helper->{'VARS'}->{'showallfoils'};
}
-
+
if ($helper->{'VARS'}->{'style_file'}=~/\w/) {
&Apache::lonnet::appenv({'construct.style' =>
$helper->{'VARS'}->{'style_file'}});
@@ -2783,7 +2811,7 @@
$texversion.=&ssi_with_retries($currentURL,$ssi_retry_count, %form);
# Add annotations if required:
-
+
&Apache::lonxml::clear_problem_counter();
&Apache::lonnet::delenv('request.filename');
@@ -2826,7 +2854,7 @@
-
+
}
# Print annotations.
@@ -2852,12 +2880,12 @@
&& $currentURL=~/\.(sequence|page)$/ && $helper->{'VARS'}->{'construction'} eq '1') {
$result .= &print_construction_sequence($currentURL, $helper, %form,
$LaTeXwidth);
- $result .= '\end{document}';
+ $result .= '\end{document}';
if (!($result =~ /\\begin\{document\}/)) {
$result = &print_latex_header() . $result;
}
# End construction space sequence.
- } elsif ($cleanURL=~/\/(smppg|syllabus|aboutme|bulletinboard)$/) {
+ } elsif ($cleanURL=~/\/(smppg|syllabus|aboutme|bulletinboard)$/) {
$form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};
if ($currentURL=~/\/syllabus$/) {$currentURL=~s/\/res//;}
$resources_printed .= $currentURL.':';
@@ -2892,7 +2920,7 @@
$result .= &print_page_in_course($helper, $rparmhash,
$cleanURL, \@page_resources);
-
+
} else {
$result.=&unsupported($currentURL,$helper->{'VARS'}->{'LATEX_TYPE'},
$helper->{'VARS'}->{'symb'});
@@ -2906,7 +2934,7 @@
($print_type eq 'select_sequences') or
($print_type eq 'map_incomplete_problems_seq')
) {
-
+
#-- produce an output string
if (($print_type eq 'map_problems') or
($print_type eq 'map_incomplete_problems_seq') or
@@ -2916,7 +2944,7 @@
($print_type eq 'map_resources_in_page'))
{
$selectionmade = 3;
- } elsif (($print_type eq 'all_problems')
+ } elsif (($print_type eq 'all_problems')
) {
$selectionmade = 4;
} elsif ($print_type eq 'all_resources') { #BUGBUG
@@ -2981,7 +3009,7 @@
$texversion.=&ssi_with_retries($urlp, $ssi_retry_count, %form);
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;}
+ 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';
}
@@ -3045,8 +3073,8 @@
$prevassignment=$assignment;
my $header_text = $parmhash{'print_header_format'};
$header_text = &format_page_header($textwidth, $header_text,
- $assignment,
- $courseidinfo,
+ $assignment,
+ $courseidinfo,
$name);
if ($numberofcolumns eq '1') {
$result .='\newpage \noindent\parbox{\minipagewidth}{\noindent\\lhead{'.$header_text.'}} \vskip 5 mm ';
@@ -3055,8 +3083,8 @@
}
}
$result .= $texversion;
- $flag_latex_header_remove = 'YES';
- } elsif ($urlp=~/\/(smppg|syllabus|aboutme|bulletinboard)$/) {
+ $flag_latex_header_remove = 'YES';
+ } elsif ($urlp=~/\/(smppg|syllabus|aboutme|bulletinboard)$/) {
$form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};
if ($urlp=~/\/syllabus$/) {$urlp=~s/\/res//;}
$resources_printed .= $urlp.':';
@@ -3072,7 +3100,7 @@
$texversion =~ s/\\end\{document}/\\vskip 0\.5mm\\noindent\\makebox\[\\textwidth\/\$number_of_columns\]\[b\]\{\\hrulefill\}/;
}
$result .= $texversion;
- $flag_latex_header_remove = 'YES';
+ $flag_latex_header_remove = 'YES';
} elsif ($urlp=~ /\.pdf$/i) {
if ($i > 0) {
$result .= '\cleardoublepage';
@@ -3103,10 +3131,10 @@
$texversion =~ s/\\end\{document}//;
}
$result .= $texversion;
- $flag_latex_header_remove = 'YES';
+ $flag_latex_header_remove = 'YES';
}
- if (&Apache::loncommon::connection_aborted($r)) {
- last;
+ if (&Apache::loncommon::connection_aborted($r)) {
+ last;
}
}
&Apache::lonxml::clear_problem_counter();
@@ -3122,7 +3150,7 @@
($print_type eq 'map_incomplete_problems_people_seq')){
- #-- prints assignments for whole class or for selected students
+ #-- prints assignments for whole class or for selected students
my $type;
if (($print_type eq 'problems_for_students') ||
($print_type eq 'problems_for_students_from_page') ||
@@ -3141,15 +3169,15 @@
# to override this and output the students by name.
# Each element of the students array is of the form:
# username:domain:section:last, first:status
- #
- # Note that student sort is not compatible with printing
+ #
+ # Note that student sort is not compatible with printing
# 1 section per pdf...so that setting overrides.
- #
- if (($helper->{'VARS'}->{'student_sort'} eq 1) &&
+ #
+ if (($helper->{'VARS'}->{'student_sort'} eq 1) &&
($helper->{'VARS'}->{'SPLIT_PDFS'} ne "sections")) {
@students = sort compare_names @students;
} else {
- @students = sort compare_sections @students;
+ @students = sort compare_sections @students;
}
&adjust_number_to_print($helper);
@@ -3157,8 +3185,8 @@
$helper->{'VARS'}->{'NUMBER_TO_PRINT'} eq 'all' ) {
$helper->{'VARS'}->{'NUMBER_TO_PRINT'}=$#students+1;
}
- # If we are splitting on section boundaries, we need
- # to remember that in split_on_sections and
+ # If we are splitting on section boundaries, we need
+ # to remember that in split_on_sections and
# print all of the students in the list.
#
my $split_on_sections = 0;
@@ -3229,6 +3257,9 @@
# &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,&mt('last student').' '.$fullname);
&Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,'last student');
$flag_latex_header_remove = 'YES';
+ if ($printed) {
+ $lastprinted = $fullname;
+ }
if (&Apache::loncommon::connection_aborted($r)) { last; }
}
&Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
@@ -3236,6 +3267,7 @@
} elsif (($print_type eq 'problems_for_anon') ||
($print_type eq 'problems_for_anon_page') ||
($print_type eq 'resources_for_anon') ) {
+ $selectionmade = 9;
my $cdom =$env{'course.'.$env{'request.course.id'}.'.domain'};
my $cnum =$env{'course.'.$env{'request.course.id'}.'.num'};
my $num_todo=$helper->{'VARS'}->{'NUMBER_TO_PRINT_TOTAL'};
@@ -3248,14 +3280,14 @@
my ($code_type,$code_length,$bubbles_per_row)=('letter',6,10);
foreach my $line (@lines) {
next if (($line =~ /^\#/) || ($line eq ''));
- my ($name,$type,$length,$bubbles_per_item) =
+ my ($name,$type,$length,$bubbles_per_item) =
(split(/:/,$line))[0,2,4,17];
if ($name eq $code_option) {
$code_length=$length;
if ($type eq 'number') { $code_type = 'number'; }
- chomp($bubbles_per_item);
+ chomp($bubbles_per_item);
if (($bubbles_per_item ne '') && ($bubbles_per_item > 0)) {
- $bubbles_per_row = $bubbles_per_item;
+ $bubbles_per_row = $bubbles_per_item;
}
}
}
@@ -3266,6 +3298,7 @@
}
my %moreenv = ('textwidth' => &get_textwidth($helper,$LaTeXwidth));
$moreenv{'problem_split'} = $parmhash{'problem_stream_switch'};
+ $moreenv{'suppress_tries'} = $parmhash{'suppress_tries'};
$moreenv{'instructor_comments'}='hide';
$moreenv{'bubbles_per_row'} = $bubbles_per_row;
my $seed=time+($$<<16)+($$);
@@ -3317,16 +3350,16 @@
|| $number_per_page eq 'section') {
$number_per_page=$num_todo > 0 ? $num_todo : 1;
}
- my $flag_latex_header_remove = 'NO';
+ my $flag_latex_header_remove = 'NO';
my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r,$num_todo);
my $count=0;
my $nohidemap;
if ($perm{'pav'} && $perm{'vgr'}) {
- $nohidemap = 1;
+ $nohidemap = 1;
}
foreach my $code (sort(@allcodes)) {
my $file_num=int($count/$number_per_page);
- if ($code_type eq 'number') {
+ if ($code_type eq 'number') {
$moreenv{'CODE'}=$code;
} else {
$moreenv{'CODE'}=&num_to_letters($code);
@@ -3346,16 +3379,19 @@
&mt('last assignment').' '.$fullname);
$flag_latex_header_remove = 'YES';
$count++;
+ if ($printed) {
+ $lastprinted = $fullname;
+ }
if (&Apache::loncommon::connection_aborted($r)) { last; }
}
&Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
$result .= $print_array[0].' \end{document}';
} elsif ($print_type eq 'problems_from_directory') {
- #prints selected problems from the subdirectory
+ #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';
+ my $flag_latex_header_remove = 'NO';
my $rndseed=time;
if ($helper->{'VARS'}->{'curseed'}) {
$rndseed=$helper->{'VARS'}->{'curseed'};
@@ -3411,11 +3447,11 @@
}
if ($helper->{'VARS'}->{'CONSTR_RESOURSE_URL'} eq 'yes') {
$texversion=~s/(\\addcontentsline\{toc\}\{subsection\}\{[^\}]*\})/$1 URL: \\verb|$urlp| \\strut\\\\\\strut /;
-
+
}
$result .= $texversion;
}
- $flag_latex_header_remove = 'YES';
+ $flag_latex_header_remove = 'YES';
}
if ($helper->{VARS}->{'construction'} eq '1') {$result=~s/(\\typeout)/ RANDOM SEED IS $rndseed $1/;}
$result .= '\end{document}';
@@ -3425,13 +3461,18 @@
# Only post process if that has not been turned off e.g. by a raw latex resource.
if ($do_postprocessing) {
+ my $mostrecent;
+ if ((($selectionmade == 5) || ($selectionmade == 8) || ($selectionmade == 9)) &&
+ (($numberofcolumns == 1) || ($laystyle eq 'album' && $papersize eq 'a4'))) {
+ $mostrecent = $lastprinted;
+ }
$result = &page_format_transformation($papersize,
$laystyle,$numberofcolumns,
$print_type,$result,
$helper->{VARS}->{'assignment'},
$helper->{'VARS'}->{'TABLE_CONTENTS'},
$helper->{'VARS'}->{'TABLE_INDEX'},
- $selectionmade);
+ $selectionmade,$mostrecent);
$result = &latex_corrections($number_of_columns,$result,$selectionmade,
$helper->{'VARS'}->{'ANSWER_TYPE'});
#if ($numberofcolumns == 1) {
@@ -3496,18 +3537,18 @@
$result = &collect_languages($result);
-#-- writing .tex file in prtspool
+#-- writing .tex file in prtspool
my $temp_file;
my $identifier = &Apache::loncommon::get_cgi_id();
my $filename = "/home/httpd/prtspool/$env{'user.name'}_$env{'user.domain'}_printout_$identifier.tex";
- if (!($#print_array>0)) {
+ if (!($#print_array>0)) {
unless ($temp_file = Apache::File->new('>'.$filename)) {
$r->log_error("Couldn't open $filename for output $!");
- return SERVER_ERROR;
+ return SERVER_ERROR;
}
print $temp_file $result;
my $begin=index($result,'\begin{document}',0);
- my $inc=substr($result,0,$begin+16);
+ my $inc=substr($result,0,$begin+16);
} else {
my $begin=index($result,'\begin{document}',0);
my $inc=substr($result,0,$begin+16);
@@ -3516,11 +3557,11 @@
$print_array[$i]=$result;
} else {
$print_array[$i].='\end{document}';
- $print_array[$i] =
+ $print_array[$i] =
&latex_corrections($number_of_columns,$print_array[$i],
- $selectionmade,
+ $selectionmade,
$helper->{'VARS'}->{'ANSWER_TYPE'});
-
+
my $anobegin=index($print_array[$i],'\setcounter{page}',0);
substr($print_array[$i],0,$anobegin)='';
$print_array[$i]=$inc.$print_array[$i];
@@ -3528,11 +3569,11 @@
my $temp_file;
my $newfilename=$filename;
my $num=$i+1;
- $newfilename =~s/\.tex$//;
+ $newfilename =~s/\.tex$//;
$newfilename=sprintf("%s_%03d.tex",$newfilename, $num);
unless ($temp_file = Apache::File->new('>'.$newfilename)) {
$r->log_error("Couldn't open $newfilename for output $!");
- return SERVER_ERROR;
+ return SERVER_ERROR;
}
print $temp_file $print_array[$i];
}
@@ -3570,8 +3611,8 @@
'cgi.'.$identifier.'.backref' => &escape($URLback),});
&Apache::lonnet::appenv({"cgi.$identifier.user" => $env{'user.name'},
"cgi.$identifier.domain" => $env{'user.domain'},
- "cgi.$identifier.courseid" => $cnum,
- "cgi.$identifier.coursedom" => $cdom,
+ "cgi.$identifier.courseid" => $cnum,
+ "cgi.$identifier.coursedom" => $cdom,
"cgi.$identifier.resources" => $resources_printed});
my $end_page = &Apache::loncommon::end_page();
@@ -3618,7 +3659,7 @@
sub print_resources {
my ($r,$helper,$person,$type,$moreenv,$master_seq,$remove_latex_header,
$LaTeXwidth)=@_;
- my $current_output = '';
+ my $current_output = '';
my $printed = '';
my ($username,$userdomain,$usersection) = split /:/,$person;
my $fullname = &get_name($username,$userdomain);
@@ -3645,20 +3686,20 @@
my $i = 0;
my $actually_printed = 0; # Count of resources printed.
- #goes through all resources, checks if they are available for
- #current student, and produces output
+ #goes through all resources, checks if they are available for
+ #current student, and produces output
&Apache::lonxml::clear_problem_counter();
my %page_breaks = &get_page_breaks($helper);
my $columns_in_format = (split(/\|/,$helper->{'VARS'}->{'FORMAT'}))[1];
#
- # end each student with a
+ # end each student with a
# Special that allows the post processor to even out the page
# counts later. Nasty problem this... it would be really
# nice to put the special in as a postscript comment
# e.g. \special{ps:\ENDOFSTUDENTSTAMP} unfortunately,
# The special gets passed the \ and dvips puts it in the output file
- # so we will just rely on prntout.pl to strip ENDOFSTUDENTSTAMP from the
+ # so we will just rely on printout.pl to strip ENDOFSTUDENTSTAMP from the
# postscript. Each ENDOFSTUDENTSTAMP will go on a line by itself.
#
@@ -3682,7 +3723,7 @@
# See if we need to emit a new header:
- if ( !($type eq 'problems' &&
+ if ( !($type eq 'problems' &&
($curresline!~ m/$LONCAPA::assess_page_re/)) ) {
if ($print_incomplete && !&incomplete($username, $userdomain, $res_url)) {
next;
@@ -3693,7 +3734,7 @@
if ($res_url!~m|^ext/|
&& $res_url=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {
$printed .= $curresline.':';
- &Apache::lonxml::remember_problem_counter();
+ &Apache::lonxml::remember_problem_counter();
my $rendered = &get_student_view_with_retries($curresline,$ssi_retry_count,$username,$userdomain,$env{'request.course.id'},'tex',$moreenv);
if ($res_url =~ /\.page$/) {
@@ -3725,8 +3766,6 @@
if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {
$rendered=~s/(\\keephidden\{ENDOFPROBLEM})/$ansrendered$1/;
} else {
-
-
my $header =&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
unless ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only') {
$header =~ s/\\begin\{document}//; #<<<<<
@@ -3751,7 +3790,7 @@
} else {
$rendered =~ s/\\end\{document}//;
}
- $current_output .= $rendered;
+ $current_output .= $rendered;
} elsif ($res_url=~/\/(smppg|syllabus|aboutme|bulletinboard)$/) {
if ($i == 1) {
$syllabus_first = 1;
@@ -3792,7 +3831,7 @@
&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,
+ $assignment, $courseidinfo,
$fullname);
my $header_start = ($columns_in_format == 1) ? '\lhead'
: '\fancyhead[LO]';
@@ -3844,17 +3883,18 @@
$currentassignment, $courseidinfo, $fullname);
my $header_start = ($columns_in_format == 1) ? '\lhead' : '\fancyhead[LO]';
my $newheader = $header_start.'{'.$header_line.'}';
-
if ($current_output=~/\\documentclass/) {
$current_output =~ s/\\begin\{document}/\\setlength{\\topmargin}{1cm} \\begin{document}\\noindent\\parbox{\\minipagewidth}{\\noindent$newheader$namepostfix}\\vskip 5 mm /;
+
} else {
- my $blankpages =
+ 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'.
$newheader.$namepostfix. '} \vskip 5 mm '.$current_output;
+
}
#
# Close the student bracketing.
@@ -3888,32 +3928,29 @@
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
my $clientip = &Apache::lonnet::get_requestor_ip($r);
- my ($blocked,$blocktext) =
+ my ($blocked,$blocktext) =
&Apache::loncommon::blocking_status('printout',$clientip,$cnum,$cdom);
if ($blocked) {
my $checkrole = "cm./$cdom/$cnum";
if ($env{'request.course.sec'} ne '') {
$checkrole .= "/$env{'request.course.sec'}";
}
- unless ((&Apache::lonnet::allowed('evb',undef,undef,$checkrole)) &&
+ unless ((&Apache::lonnet::allowed('evb',undef,undef,$checkrole)) &&
($env{'request.role'} !~ m{^st\./$cdom/$cnum})) {
&printing_blocked($r,$blocktext);
return OK;
}
}
}
-
+
&init_perm();
my $helper = printHelper($r);
if (!ref($helper)) {
return $helper;
}
-
-
- %parmhash=&Apache::lonnet::coursedescription($env{'request.course.id'});
-
+ %parmhash=&Apache::lonnet::coursedescription($env{'request.course.id'});
# If a figure conversion queue file exists for this user.domain
# we delete it since it can only be bad (if it were good, printout.pl
@@ -3923,7 +3960,6 @@
if(-e $conversion_queuefile) {
unlink $conversion_queuefile;
}
-
&output_data($r,$helper,\%parmhash);
return OK;
@@ -3969,13 +4005,13 @@
if (defined($navmap)) {
my $res = $navmap->getResourceByUrl($map);
if ($res) {
- my $func =
+ my $func =
sub { return ($_[0]->is_map() && $_[0]->randomorder); };
my @matches = $navmap->retrieveResources($res, $func,1,1,1);
}
} else {
- $message = "Retrieval of information about ordering of resources failed.";
+ $message = "Retrieval of information about ordering of resources failed.";
return '<message type="warning">'.$message.'</message>';
}
return;
@@ -4008,12 +4044,12 @@
# write it by hand
Apache::loncommon::get_unprocessed_cgi($ENV{QUERY_STRING});
-
+
my $helper = Apache::lonhelper::helper->new("Printing Helper");
$helper->declareVar('symb');
- $helper->declareVar('postdata');
- $helper->declareVar('curseed');
- $helper->declareVar('probstatus');
+ $helper->declareVar('postdata');
+ $helper->declareVar('curseed');
+ $helper->declareVar('probstatus');
$helper->declareVar('filename');
$helper->declareVar('construction');
$helper->declareVar('assignment');
@@ -4025,7 +4061,7 @@
$helper->declareVar("STUDENTS");
$helper->declareVar("EXTRASPACE");
-
+
# The page breaks and extra spaces
@@ -4033,19 +4069,19 @@
# But we only do this in the initial state so that they are allowed to change.
#
-
+
&Apache::loncommon::restore_course_settings('print',
{'pagebreaks' => 'scalar',
'extraspace' => 'scalar',
'extraspace_units' => 'scalar',
'lastprinttype' => 'scalar'});
-
+
# This will persistently load in the data we want from the
# very first screen.
-
+
if($helper->{VARS}->{PRINT_TYPE} eq $env{'form.lastprinttype'}) {
if (!defined ($env{"form.CURRENT_STATE"})) {
-
+
$helper->{VARS}->{FINISHPAGE} = $env{'form.pagebreaks'};
$helper->{VARS}->{EXTRASPACE} = $env{'form.extraspace'};
$helper->{VARS}->{EXTRASPACE_UNITS} = $env{'form.extraspace_units'};
@@ -4058,7 +4094,6 @@
}
}
-
}
# Detect whether we're coming from construction space
@@ -4078,7 +4113,6 @@
if ($env{'form.url'}) {
$helper->{VARS}->{'symb'} = &Apache::lonnet::symbread($helper->{VARS}->{'postdata'});
}
-
}
if ($env{'form.symb'}) {
@@ -4095,13 +4129,12 @@
my ($resourceTitle,$sequenceTitle,$mapTitle) = &details_for_menu($helper);
if ($sequenceTitle ne '') {$helper->{VARS}->{'assignment'}=$sequenceTitle;}
-
# Extract map
my $symb = $helper->{VARS}->{'symb'};
my ($map, $id, $url);
my $subdir;
my $is_published=0; # True when printing from resource space.
- my $res_printable = 1; # By default the current resource is printable.
+ my $res_printable = 1; # By default the current resource is printable.
my $res_error;
my $userCanPrint = ($perm{'pav'} || $perm{'pfo'});
my $res_printstartdate;
@@ -4113,7 +4146,7 @@
# Get the resource name from construction space
if ($helper->{VARS}->{'construction'}) {
- $resourceTitle = substr($helper->{VARS}->{'filename'},
+ $resourceTitle = substr($helper->{VARS}->{'filename'},
rindex($helper->{VARS}->{'filename'}, '/')+1);
$subdir = substr($helper->{VARS}->{'filename'},
0, rindex($helper->{VARS}->{'filename'}, '/') + 1);
@@ -4122,7 +4155,7 @@
if ($symb ne '') {
($map, $id, $url) = &Apache::lonnet::decode_symb($symb);
- $helper->{VARS}->{'postdata'} =
+ $helper->{VARS}->{'postdata'} =
&Apache::lonenc::check_encrypt(&Apache::lonnet::clutter($url));
if (!$userCanPrint) {
my $navmap = Apache::lonnavmaps::navmap->new();
@@ -4189,7 +4222,7 @@
if ($resourceTitle && $res_printable) {
push @{$printChoices}, ["<b><i>$resourceTitle</i></b> (".&mt('the resource you just saw on the screen').")", 'current_document', 'PAGESIZE'];
- }
+ }
# Useful filter strings
@@ -4214,7 +4247,7 @@
my $start_new_option;
if ($perm{'pav'}) {
- $start_new_option =
+ $start_new_option =
"<option text='".&mt('Start new page[_1]before selected','<br />').
"' variable='FINISHPAGE' />".
"<option text='".&mt('Extra space[_1]before selected','<br />').
@@ -4224,8 +4257,6 @@
"<option text='".&mt('Space units[_1]check for mm','<br />').
"' variable='EXTRASPACE_UNITS' type='checkbox' />"
;
-
-
}
# If not construction space user can print the components of a page:
@@ -4244,13 +4275,13 @@
my $resourcesymb = $page_resources[0]->symb();
my ($pagemap, $pageid, $pageurl) = &Apache::lonnet::decode_symb($symb);
if ($page_ispage) {
- push @{$printChoices},
- [&mt('Selected [_1]Problems[_2] from page [_3]', '<b>', '</b>', '<b><i>'.$page_title.'</i></b>'),
- 'map_problems_in_page',
+ push @{$printChoices},
+ [&mt('Selected [_1]Problems[_2] from page [_3]', '<b>', '</b>', '<b><i>'.$page_title.'</i></b>'),
+ 'map_problems_in_page',
'CHOOSE_PROBLEMS_PAGE'];
- push @{$printChoices},
- [&mt('Selected [_1]Resources[_2] from page [_3]', '<b>', '</b>', '<b><i>'.$page_title.'</i></b>'),
- 'map_resources_in_page',
+ push @{$printChoices},
+ [&mt('Selected [_1]Resources[_2] from page [_3]', '<b>', '</b>', '<b><i>'.$page_title.'</i></b>'),
+ 'map_resources_in_page',
'CHOOSE_RESOURCES_PAGE'];
}
my $helperFragment = &generate_resource_chooser('CHOOSE_PROBLEMS_PAGE',
@@ -4272,7 +4303,7 @@
$isNotMap, '', $symbFilter,
$start_new_option);
-
+
@@ -4299,7 +4330,7 @@
$nextState = 'CHOOSE_INCOMPLETE_PEOPLE_SEQ';
$textSuffix = ' for selected students';
my $helperStates =
- &create_incomplete_folder_selstud_helper($helper, $map);
+ &create_incomplete_folder_selstud_helper($helper, $map);
&Apache::lonxml::xmlparse($r, 'helper', $helperStates);
} else {
if (&printable($map_open, $map_close)) {
@@ -4320,13 +4351,13 @@
}
# Allow problems from sequence
if ($userCanPrint || &printable($map_open, $map_close)) {
- push @{$printChoices},
- [&mt('Selected [_1]Problems[_2] from folder [_3]','<b>','</b>','<b><i>'.$sequenceTitle.'</i></b>'),
- 'map_problems',
+ push @{$printChoices},
+ [&mt('Selected [_1]Problems[_2] from folder [_3]','<b>','</b>','<b><i>'.$sequenceTitle.'</i></b>'),
+ 'map_problems',
'CHOOSE_PROBLEMS'];
# Allow all resources from sequence
- push @{$printChoices}, [&mt('Selected [_1]Resources[_2] from folder [_3]','<b>','</b>','<b><i>'.$sequenceTitle.'</i></b>'),
- 'map_problems_pages',
+ push @{$printChoices}, [&mt('Selected [_1]Resources[_2] from folder [_3]','<b>','</b>','<b><i>'.$sequenceTitle.'</i></b>'),
+ 'map_problems_pages',
'CHOOSE_PROBLEMS_HTML'];
my $helperFragment = &generate_resource_chooser('CHOOSE_PROBLEMS',
'Select Problem(s) to print',
@@ -4346,18 +4377,18 @@
$isNotMap, '',
$symbFilter,
$start_new_option);
-
+
&Apache::lonxml::xmlparse($r, 'helper', $helperFragment);
} else {
# TODO: Figure out how to tell them the folder is not printable.
}
}
- # If the user has pfo (print for others) allow them to print all
+ # If the user has pfo (print for others) allow them to print all
# problems and resources in the entire course, optionally for selected students
my $post_data = $helper->{VARS}->{'postdata'};
-
+
if ($perm{'pfo'} && !$is_published &&
- ($post_data=~/\/res\// || $post_data =~/\/(syllabus|smppg|aboutme|bulletinboard)$/)) {
+ ($post_data=~/\/res\// || $post_data =~/\/(syllabus|smppg|aboutme|bulletinboard)$/)) {
# BZ 5209 - incomplete problems from entire course:
@@ -4384,7 +4415,7 @@
<student multichoice='1' variable="STUDENTS" nextstate="PRINT_FORMATTING" coursepersonnel="1"/>
</state>
ALL_PROBLEMS
- &Apache::lonxml::xmlparse($r, 'helper',
+ &Apache::lonxml::xmlparse($r, 'helper',
&generate_resource_chooser('ALL_PROBLEMS',
'Select Problem(s) to print',
'multichoice="1" suppressEmptySequences="0" addstatus="1" closeallpages="1" modallink="1"',
@@ -4427,14 +4458,14 @@
'problems_for_anon_page', 'CHOOSE_ANON1_PAGE'];
}
push @{$printChoices}, [&mt('Selected [_1]Problems[_2] from folder [_3] for [_4]selected people[_5]',
- '<b>','</b>','<b><i>'.$sequenceTitle.'</i></b>','<b>','</b>'),
+ '<b>','</b>','<b><i>'.$sequenceTitle.'</i></b>','<b>','</b>'),
'problems_for_students', 'CHOOSE_STUDENTS'];
push @{$printChoices}, [&mt('Selected [_1]Problems[_2] from folder [_3] for [_4]CODEd assignments[_5]',
- '<b>','</b>','<b><i>'.$sequenceTitle.'</i></b>','<b>','</b>'),
+ '<b>','</b>','<b><i>'.$sequenceTitle.'</i></b>','<b>','</b>'),
'problems_for_anon', 'CHOOSE_ANON1'];
}
- my $randomly_ordered_warning =
+ my $randomly_ordered_warning =
&get_randomly_ordered_warning($helper, $map);
# resource_selector will hold a few states that:
@@ -4449,7 +4480,7 @@
my $resource_selector= &generate_resource_chooser('SELECT_PROBLEMS',
'Select resources to print',
'multichoice="1" addstatus="1" closeallpages="1" modallink="1" suppressNavmap="1"',
- 'RESOURCES',
+ 'RESOURCES',
'PRINT_FORMATTING',
$map,
$isProblem, '', $symbFilter,
@@ -4476,7 +4507,7 @@
'student_sort',
'STUDENTS',
'CHOOSE_STUDENTS_PAGE'));
- &Apache::lonxml::xmlparse($r, 'helper',
+ &Apache::lonxml::xmlparse($r, 'helper',
&generate_student_chooser('CHOOSE_STUDENTS',
'student_sort',
'STUDENTS',
@@ -4512,7 +4543,7 @@
push(@{$helper->{DATA}{ALL_CODE_CHOICES}},[$code,$choice]);
}
if (%codes_to_print) {
- $code_selection .='
+ $code_selection .='
<message><b>Choose single CODE from list:</b></message>
<message></td><td></message>
<dropdown variable="CODE_SELECTED_FROM_LIST" multichoice="0" allowempty="0">
@@ -4532,7 +4563,7 @@
next if (($line =~ /^\#/) || ($line eq ''));
my ($name,$description,$code_type,$code_length)=
(split(/:/,$line))[0,1,2,4];
- if ($code_length > 0 &&
+ if ($code_length > 0 &&
$code_type =~/^(letter|number|-1)/) {
$codechoice.='<choice computer="'.$name.'">'.$description.'</choice>';
}
@@ -4540,14 +4571,14 @@
if ($codechoice eq '') {
$codechoice='<choice computer="default">Default</choice>';
}
- my $anon1 = &generate_code_selector($helper,
+ my $anon1 = &generate_code_selector($helper,
'CHOOSE_ANON1',
'SELECT_PROBLEMS',
$codechoice,
$code_selection,
$namechoice) . $resource_selector;
-
-
+
+
&Apache::lonxml::xmlparse($r, 'helper',$anon1);
my $anon_page = &generate_code_selector($helper,
@@ -4574,14 +4605,14 @@
push @{$printChoices}, [&mt('Selected [_1]Resources[_2] from folder [_3] for [_4]selected people[_5]','<b>','</b>','<b><i>'.$sequenceTitle.'</i></b>','<b>','</b>'), 'resources_for_students', 'CHOOSE_STUDENTS1'];
push @{$printChoices}, [&mt('Selected [_1]Resources[_2] from folder [_3] for [_4]CODEd assignments[_5]','<b>','</b>','<b><i>'.$sequenceTitle.'</i></b>','<b>','</b>'), 'resources_for_anon', 'CHOOSE_ANON2'];
}
-
+
$resource_selector=<<RESOURCE_SELECTOR;
<state name="SELECT_RESOURCES" title="Select Resources">
$randomly_ordered_warning
<nextstate>PRINT_FORMATTING</nextstate>
<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" modallink="1">
<filterfunc>return $isNotMap;</filterfunc>
<mapurl>$map</mapurl>
@@ -4691,7 +4722,7 @@
<nextstate>PAGESIZE</nextstate>
<filechoice>return '$subdir';</filechoice>
CHOOSE_FROM_SUBDIR
-
+
# this is broken up because I really want interpolation above,
# and I really DON'T want it below
$xmlfrag .= <<'CHOOSE_FROM_SUBDIR';
@@ -4812,8 +4843,8 @@
)
);
$paramHash = Apache::lonhelper::getParamHash();
- $paramHash->{'variable'} = 'ANSWER_TYPE';
- $helper->declareVar('ANSWER_TYPE');
+ $paramHash->{'variable'} = 'ANSWER_TYPE';
+ $helper->declareVar('ANSWER_TYPE');
$paramHash->{CHOICES} = [
['Without Answers', 'yes'],
['With Answers', 'no'],
@@ -4831,7 +4862,7 @@
&addMessage(&Apache::lonhtmlcommon::row_title(&mt('Font Size')));
my $xmlfrag = << "FONT_SELECTION";
-
+
<dropdown variable='fontsize' multichoice='0' allowempty='0'>
<defaultvalue>
return 'normalsize';
@@ -4868,11 +4899,11 @@
);
}
$paramHash = Apache::lonhelper::getParamHash();
- $paramHash->{'variable'} = 'LATEX_TYPE';
- $helper->declareVar('LATEX_TYPE');
- if ($helper->{VARS}->{'construction'} eq '1') {
+ $paramHash->{'variable'} = 'LATEX_TYPE';
+ $helper->declareVar('LATEX_TYPE');
+ if ($helper->{VARS}->{'construction'} eq '1') {
$paramHash->{CHOICES} = [
- ['standard LaTeX mode', 'standard'],
+ ['standard LaTeX mode', 'standard'],
['LaTeX batchmode', 'batchmode'], ];
} else {
$paramHash->{CHOICES} = [
@@ -4880,7 +4911,7 @@
['standard LaTeX mode', 'standard'] ];
}
Apache::lonhelper::dropdown->new();
-
+
&addMessage(&Apache::lonhtmlcommon::row_closure()
.&Apache::lonhtmlcommon::row_title(
'<label for="TABLE_CONTENTS_forminput">'
@@ -4889,14 +4920,14 @@
)
);
$paramHash = Apache::lonhelper::getParamHash();
- $paramHash->{'variable'} = 'TABLE_CONTENTS';
- $helper->declareVar('TABLE_CONTENTS');
+ $paramHash->{'variable'} = 'TABLE_CONTENTS';
+ $helper->declareVar('TABLE_CONTENTS');
$paramHash->{CHOICES} = [
['No', 'no'],
['Yes', 'yes'] ];
Apache::lonhelper::dropdown->new();
&addMessage(&Apache::lonhtmlcommon::row_closure());
-
+
if (not $helper->{VARS}->{'construction'}) {
&addMessage(&Apache::lonhtmlcommon::row_title(
'<label for="TABLE_INDEX_forminput">'
@@ -4905,8 +4936,8 @@
)
);
$paramHash = Apache::lonhelper::getParamHash();
- $paramHash->{'variable'} = 'TABLE_INDEX';
- $helper->declareVar('TABLE_INDEX');
+ $paramHash->{'variable'} = 'TABLE_INDEX';
+ $helper->declareVar('TABLE_INDEX');
$paramHash->{CHOICES} = [
['No', 'no'],
['Yes', 'yes'] ];
@@ -4919,8 +4950,8 @@
)
);
$paramHash = Apache::lonhelper::getParamHash();
- $paramHash->{'variable'} = 'PRINT_DISCUSSIONS';
- $helper->declareVar('PRINT_DISCUSSIONS');
+ $paramHash->{'variable'} = 'PRINT_DISCUSSIONS';
+ $helper->declareVar('PRINT_DISCUSSIONS');
$paramHash->{CHOICES} = [
['No', 'no'],
['Yes', 'yes'] ];
@@ -4954,7 +4985,7 @@
&addMessage(&Apache::lonhtmlcommon::row_closure(1));
}
- if ($helper->{'VARS'}->{'construction'}) {
+ if ($helper->{'VARS'}->{'construction'}) {
my $stylevalue='$Apache::lonnet::env{"construct.style"}';
my $randseedtext=&mt("Use random seed");
my $stylefiletext=&mt("Use style file");
@@ -5045,11 +5076,11 @@
# If we're in the "final" state, bailout and return to handler
if ($helper->{STATE} eq 'FINAL') {
return $helper;
- }
+ }
my $footer;
if ($helper->{STATE} eq 'START') {
- my $prtspool=$r->dir_config('lonPrtDir');
+ my $prtspool=$r->dir_config('lonPrtDir');
$footer = &recently_generated($prtspool);
}
$r->print($helper->display($footer));
@@ -5069,10 +5100,10 @@
See lonhelper.pm documentation for discussion of the helper framework.
-Apache::lonprintout::page_format_state is an element that gives the
-user an opportunity to select the page layout they wish to print
-with: Number of columns, portrait/landscape, and paper size. If you
-want to change the paper size choices, change the @paperSize array
+Apache::lonprintout::page_format_state is an element that gives the
+user an opportunity to select the page layout they wish to print
+with: Number of columns, portrait/landscape, and paper size. If you
+want to change the paper size choices, change the @paperSize array
contents in this package.
page_format_state is always directly invoked in lonprintout.pm, so there
@@ -5096,17 +5127,17 @@
my $maxColumns = 2;
# it'd be nice if these all worked
-#my @paperSize = ("letter [8 1/2x11 in]", "legal [8 1/2x14 in]",
+#my @paperSize = ("letter [8 1/2x11 in]", "legal [8 1/2x14 in]",
# "tabloid (ledger) [11x17 in]", "executive [7 1/2x10 in]",
-# "a2 [420x594 mm]", "a3 [297x420 mm]", "a4 [210x297 mm]",
+# "a2 [420x594 mm]", "a3 [297x420 mm]", "a4 [210x297 mm]",
# "a5 [148x210 mm]", "a6 [105x148 mm]" );
-my @paperSize = ("letter [8 1/2x11 in]", "legal [8 1/2x14 in]",
+my @paperSize = ("letter [8 1/2x11 in]", "legal [8 1/2x14 in]",
"a4 [210x297 mm]");
# Tentative format: Orientation (L = Landscape, P = portrait) | Colnum |
# Paper type
-sub new {
+sub new {
my $self = Apache::lonhelper::element->new();
shift;
@@ -5128,7 +5159,7 @@
my $PaperType=&mt('Paper type');
my $landscape=&mt('Landscape');
my $portrait=&mt('Portrait');
-
+
$result.='<h3>'.&mt('Layout Options').'</h3>'
.&Apache::loncommon::start_data_table()
@@ -5188,7 +5219,7 @@
my $var = $self->{'variable'};
my $helper = Apache::lonhelper->getHelper();
- $helper->{VARS}->{$var} =
+ $helper->{VARS}->{$var} =
$env{"form.$var.layout"} . '|' . $env{"form.$var.cols"} . '|' .
$env{"form.$var.paper"} . '|' . $env{"form.$var.pdfFormFields"};
return 1;
@@ -5204,7 +5235,7 @@
See lonhelper.pm documentation for discussion of the helper framework.
-Apache::lonprintout::page_size_state is an element that gives the
+Apache::lonprintout::page_size_state is an element that gives the
user the opportunity to further refine the page settings if they
select a single-column page.
@@ -5227,7 +5258,7 @@
-sub new {
+sub new {
my $self = Apache::lonhelper::element->new();
shift; # disturbs me (probably prevents subclassing) but works (drops
@@ -5237,7 +5268,7 @@
my $helper = Apache::lonhelper::getHelper();
$helper->declareVar($self->{'variable'});
- # The variable name of the format element, so we can look into
+ # The variable name of the format element, so we can look into
# $helper->{VARS} to figure out whether the columns are one or two
$self->{'formatvar'} = shift;
@@ -5277,7 +5308,7 @@
$size{'height_and_units'},
$size{'margin_and_units'})=
&Apache::lonprintout::page_format($papersize, $laystyle, $cols);
-
+
foreach my $dimension ('width','height','margin') {
($size{$dimension},$size{$dimension.'_unit'}) =
split(/ +/, $size{$dimension.'_and_units'},2);
@@ -5362,10 +5393,10 @@
foreach my $dim ('width', 'height', 'lmargin') {
my ($value, $units) = split(/ /, $size{$dim});
-
+
$helper->{VARS}->{"$var.".$dim} = $value;
$helper->{VARS}->{"$var.".$dim.'unit'} = $units;
-
+
}
@@ -5373,7 +5404,7 @@
$helper->changeState($self->{NEXTSTATE});
}
-
+
return 1;
}
@@ -5382,16 +5413,16 @@
my $var = $self->{'variable'};
my $helper = Apache::lonhelper->getHelper();
- my $width = $helper->{VARS}->{$var .'.width'} = $env{"form.${var}.width"};
- my $height = $helper->{VARS}->{$var .'.height'} = $env{"form.${var}.height"};
- my $lmargin = $helper->{VARS}->{$var .'.lmargin'} = $env{"form.${var}.lmargin"};
- $helper->{VARS}->{$var .'.widthunit'} = $env{"form.${var}.widthunit"};
- $helper->{VARS}->{$var .'.heightunit'} = $env{"form.${var}.heightunit"};
- $helper->{VARS}->{$var .'.lmarginunit'} = $env{"form.${var}.lmarginunit"};
+ my $width = $helper->{VARS}->{$var .'.width'} = $env{"form.${var}.width"};
+ my $height = $helper->{VARS}->{$var .'.height'} = $env{"form.${var}.height"};
+ my $lmargin = $helper->{VARS}->{$var .'.lmargin'} = $env{"form.${var}.lmargin"};
+ $helper->{VARS}->{$var .'.widthunit'} = $env{"form.${var}.widthunit"};
+ $helper->{VARS}->{$var .'.heightunit'} = $env{"form.${var}.heightunit"};
+ $helper->{VARS}->{$var .'.lmarginunit'} = $env{"form.${var}.lmarginunit"};
my $error = '';
- # /^-?[0-9]+(\.[0-9]*)?$/ -> optional minus, at least on digit, followed
+ # /^-?[0-9]+(\.[0-9]*)?$/ -> optional minus, at least on digit, followed
# by an optional period, followed by digits, ending the string
if ($width !~ /^-?[0-9]*(\.[0-9]*)?$/) {
More information about the LON-CAPA-cvs
mailing list