--- loncom/interface/lonprintout.pm 2003/02/12 20:44:38 1.113
+++ loncom/interface/lonprintout.pm 2003/02/20 22:11:42 1.119
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Printout
#
-# $Id: lonprintout.pm,v 1.113 2003/02/12 20:44:38 sakharuk Exp $
+# $Id: lonprintout.pm,v 1.119 2003/02/20 22:11:42 bowersj2 Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -238,6 +238,7 @@ sub problem_choice_menu {
$subdirtoprint =~ s/\/[^\/]+$//;
my @list_of_files = ();
my @content_directory = ();
+ $r->print("Subdir: " . $subdirtoprint . " ");
if ($subdirtoprint =~ m|/home/([^/]+)/public_html|) {
#localmachine CSTR space
my $user=$1;
@@ -381,11 +382,12 @@ ENDDISHEADER
}
}
$r->print(< Number of blank pages to add: 0
- 1
- 2
- 3
-
+
+
Number of blank pages added to each student assignments to print these assignments on physically different sheets (requires manual addjustment ): 0
+ 1
+ 2
+ 3
+
@@ -611,7 +613,7 @@ ENDPART
foreach my $person (@students) {
my $current_output = '';
my ($usersection,$username,$userdomain) = split /:/,$person;
- my $fullname = &Apache::grades::get_fullname($username,$userdomain);
+ my $fullname = &Apache::grades::get_fullname($username,$userdomain);
#goes through all resources, checks if they are available for current student, and produces output
foreach my $curresline (@master_seq) {
my ($curres,$symb) = split /&&/, $curresline;
@@ -630,16 +632,17 @@ ENDPART
$flag_latex_header_remove = 'YES';
}
}
+ my $courseidinfo = $ENV{'course.'.$ENV{'request.course.id'}.'.description'};
if ($current_output=~/\\documentclass/) {
- my $courseidinfo = $ENV{'course.'.$ENV{'request.course.id'}.'.description'};
- $current_output =~ s/\\begin{document}/\\setlength{\\topmargin}{1cm}\\usepackage{fancyhdr}\\pagestyle{fancy}\\rhead{}\\chead{}\\lhead{$courseidinfo \\hfill \\thepage \\\\ \\textit{$assignment}} \\begin{document}\\noindent\\textit{\\textbf{$fullname}}\\vskip 3 mm /;
+ $current_output =~ s/\\begin{document}/\\setlength{\\topmargin}{1cm}\\usepackage{fancyhdr}\\pagestyle{fancy}\\rhead{}\\chead{} \\begin{document}\\noindent\\lhead{\\textit{\\textbf{$fullname}} - $courseidinfo \\hfill \\thepage \\\\ \\textit{$assignment}}\\vskip 3 mm /;
} else {
my $blanspages = '';
for (my $j=0;$j<$ENV{'form.addedpages'};$j++) {$blanspages.='\clearpage\strut\clearpage';}
- $current_output = '\strut\\newline\\noindent\\makebox[\\textwidth/$number_of_columns][b]{\\hrulefill}\\newline\\noindent{\\tiny Printed from LON-CAPA\\copyright MSU{\\hfill} Licensed under GNU General Public License } \\vskip 3mm'.$blanspages.'\setcounter{page}{1}\noindent\parbox{\minipagewidth}{\noindent\textit{\textbf{'.$fullname.'}}\hskip 1.4in } \vskip 5 mm '.$current_output;
+ $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::lonnet::delenv('form.counter');
+ &Apache::lonxml::init_counter();
}
$result .= '\end{document}';
&Apache::lonnet::delenv('form.textwidth');
@@ -800,326 +803,246 @@ sub latex_header_footer_remove {
sub character_chart {
my $result = shift;
- $result =~ s/?0?7;//g;
- $result =~ s/?0?9;//g;
- $result =~ s/?10;//g;
- $result =~ s/?13;//g;
- $result =~ s/?32;/ /g;
- $result =~ s/?33;/!/g;
- $result =~ s/?34;/"/g;
- $result =~ s/"/"/g; #"
- $result =~ s/?35;/\\#/g;
-# $result =~ s/?36;/\\\$/g;
- $result =~ s/?37;/\\%/g;
- $result =~ s/?38;/\\&/g;
- $result =~ s/&/\\&/g;
- $result =~ s/?39;/'/g;
- $result =~ s/?40;/(/g;
- $result =~ s/?41;/)/g;
- $result =~ s/?42;/\*/g;
- $result =~ s/?43;/\+/g;
- $result =~ s/?44;/,/g;
- $result =~ s/?45;/-/g;
- $result =~ s/?46;/\./g;
- $result =~ s/?47;/\//g;
- $result =~ s/?48;/0/g;
- $result =~ s/?49;/1/g;
- $result =~ s/?50;/2/g;
- $result =~ s/?51;/3/g;
- $result =~ s/?52;/4/g;
- $result =~ s/?53;/5/g;
- $result =~ s/?54;/6/g;
- $result =~ s/?55;/7/g;
- $result =~ s/?56;/8/g;
- $result =~ s/?57;/9/g;
- $result =~ s/?58;/:/g;
- $result =~ s/?59;/;/g;
- $result =~ s/?60;/\$<\$/g;
- $result =~ s/</\$<\$/g;
- $result =~ s/?61;/\$=\$/g;
- $result =~ s/?62;/\$>\$/g;
- $result =~ s/>/\$>\$/g;
- $result =~ s/?63;/?/g;
-# $result =~ s/?64;//g;
- $result =~ s/?65;/A/g;
- $result =~ s/?66;/B/g;
- $result =~ s/?67;/C/g;
- $result =~ s/?68;/D/g;
- $result =~ s/?69;/E/g;
- $result =~ s/?70;/F/g;
- $result =~ s/?71;/G/g;
- $result =~ s/?72;/H/g;
- $result =~ s/?73;/I/g;
- $result =~ s/?74;/J/g;
- $result =~ s/?75;/K/g;
- $result =~ s/?76;/L/g;
- $result =~ s/?77;/M/g;
- $result =~ s/?78;/N/g;
- $result =~ s/?79;/O/g;
- $result =~ s/?80;/P/g;
- $result =~ s/?81;/Q/g;
- $result =~ s/?82;/R/g;
- $result =~ s/?83;/S/g;
- $result =~ s/?84;/T/g;
- $result =~ s/?85;/U/g;
- $result =~ s/?86;/V/g;
- $result =~ s/?87;/W/g;
- $result =~ s/?88;/X/g;
- $result =~ s/?89;/Y/g;
- $result =~ s/?90;/Z/g;
- $result =~ s/?91;/[/g;
- $result =~ s/?92;/\\/g;
- $result =~ s/?93;/]/g;
-# $result =~ s/?94;//g;
-# $result =~ s/?95;//g;
- $result =~ s/?96;/`/g;
- $result =~ s/?97;/a/g;
- $result =~ s/?98;/b/g;
- $result =~ s/?99;/c/g;
- $result =~ s/d/d/g;
- $result =~ s/e/e/g;
- $result =~ s/f/f/g;
- $result =~ s/g/g/g;
- $result =~ s/h/h/g;
- $result =~ s/i/i/g;
- $result =~ s/j/j/g;
- $result =~ s/k/k/g;
- $result =~ s/l/l/g;
- $result =~ s/m/m/g;
- $result =~ s/n/n/g;
- $result =~ s/o/o/g;
- $result =~ s/p/p/g;
- $result =~ s/q/q/g;
- $result =~ s/r/r/g;
- $result =~ s/s/s/g;
- $result =~ s/t/t/g;
- $result =~ s/u/u/g;
- $result =~ s/v/v/g;
- $result =~ s/w/w/g;
- $result =~ s/x/x/g;
- $result =~ s/y/y/g;
- $result =~ s/z/z/g;
- $result =~ s/{/\\{/g;
- $result =~ s/|/\|/g;
- $result =~ s/}/\\}/g;
- $result =~ s/~/\~/g;
- $result =~ s//,/g;
-# $result =~ s///g;
- $result =~ s//''/g;
- $result =~ s/
/\$\\ldots\$/g;
- $result =~ s//\$\\dagger\$/g;
- $result =~ s//\$\\ddagger\$/g;
-# $result =~ s///g;
-# $result =~ s///g;
-# $result =~ s///g;
- $result =~ s//\$<\$/g;
-# $result =~ s///g;
- $result =~ s//`/g;
- $result =~ s//'/g;
- $result =~ s//``/g;
- $result =~ s//''/g;
- $result =~ s//\$\\bullet\$/g;
-# $result =~ s///g;
-# $result =~ s///g;
- $result =~ s//~/g;
-# $result =~ s///g;
-# $result =~ s///g;
- $result =~ s//\$>\$/g;
- $result =~ s//\\{\\oe\\}/g;
- $result =~ s//\\"\\{Y\\}/g;
- $result =~ s/ //g;
- $result =~ s/ //g;
- $result =~ s/¡/!`/g;
- $result =~ s/¡/!`/g; #`
-# $result =~ s/¢//g;
-# $result =~ s/¢//g;
- $result =~ s/£/\\pounds/g;
- $result =~ s/£/\\pounds/g;
-# $result =~ s/¤//g;
-# $result =~ s/¤//g;
-# $result =~ s/¥//g;
-# $result =~ s/¥//g;
-# $result =~ s/¦//g;
-# $result =~ s/¦//g;
-# $result =~ s/§//g;
-# $result =~ s/§//g;
-# $result =~ s/¨//g;
-# $result =~ s/¨//g;
- $result =~ s/©/\\copyright/g;
- $result =~ s/©/\\copyright/g;
-# $result =~ s/ª//g;
-# $result =~ s/ª//g;
-# $result =~ s/«//g;
-# $result =~ s/«//g;
- $result =~ s/¬/\$\\neg\$/g;
- $result =~ s/¬/\$\\neg\$/g;
-# $result =~ s///g;
-# $result =~ s///g;
-# $result =~ s/®//g;
-# $result =~ s/®//g;
-# $result =~ s/¯//g;
-# $result =~ s/¯//g;
- $result =~ s/°/\$^{\\circ}\$/g;
- $result =~ s/°/\$^{\\circ}\$/g;
- $result =~ s/±/\$\\pm\$/g;
- $result =~ s/±/\$\\pm\$/g;
- $result =~ s/²/\$^2\$/g;
- $result =~ s/²/\$^2\$/g;
- $result =~ s/³/\$^3\$/g;
- $result =~ s/³/\$^3\$/g;
-# $result =~ s/´//g;
-# $result =~ s/´//g;
- $result =~ s/µ/\$\\mu\$/g;
- $result =~ s/µ/\$\\mu\$/g;
- $result =~ s/¶/\\P/g;
- $result =~ s/¶/\\P/g;
- $result =~ s/·/\$\\cdot\$/g;
- $result =~ s/·/\$\\cdot\$/g;
-# $result =~ s/¸//g;
-# $result =~ s/¸//g;
- $result =~ s/¹/\$^1\$/g;
- $result =~ s/¹/\$^1\$/g;
-# $result =~ s/º//g;
-# $result =~ s/º//g;
-# $result =~ s/»//g;
-# $result =~ s/»//g;
-# $result =~ s/¼//g;
-# $result =~ s/¼//g;
-# $result =~ s/½//g;
-# $result =~ s/½//g;
-# $result =~ s/¾//g;
-# $result =~ s/¾//g;
- $result =~ s/¿/?`/g;
- $result =~ s/¿/?`/g; #`
- $result =~ s/À/\\`{A}/g;
- $result =~ s/À/\\`{A}/g; #`
- $result =~ s/Á/\\'{A}/g;
- $result =~ s/Á/\\'{A}/g; #'
- $result =~ s/Â/\\^{A}/g;
- $result =~ s/Â/\\^{A}/g;
- $result =~ s/Ã/\\~{A}/g;
- $result =~ s/Ã/\\~{A}/g;
- $result =~ s/Ä/\\"{A}/g;
- $result =~ s/Ä/\\"{A}/g; #"
- $result =~ s/Å/{\\AA}/g;
- $result =~ s/Å/{\\AA}/g;
- $result =~ s/Æ/{\\AE}/g;
- $result =~ s/Æ/{\\AE}/g;
-# $result =~ s/Ç//g;
-# $result =~ s/Ç//g;
- $result =~ s/È/\\`{E}/g;
- $result =~ s/È/\\`{E}/g; #`
- $result =~ s/É/\\'{E}/g; #'
- $result =~ s/É/\\'{E}/g; #'
- $result =~ s/Ê/\\^{E}/g;
- $result =~ s/Ê/\\^{E}/g;
- $result =~ s/Ë/\\`{E}/g;
- $result =~ s/Ë/\\`{E}/g; #`
- $result =~ s/Ì/\\`{I}/g;
- $result =~ s/Ì/\\`{I}/g; #`
- $result =~ s/Í/\\'{I}/g;
- $result =~ s/Í/\\'{I}/g; #'
- $result =~ s/Î/\\^{I}/g;
- $result =~ s/Î/\\^{I}/g;
- $result =~ s/Ï/\\"{I}/g;
- $result =~ s/Ï/\\"{I}/g; #"
-# $result =~ s/Ð//g;
-# $result =~ s/Ð//g;
- $result =~ s/Ñ/\\~{N}/g;
- $result =~ s/Ñ/\\~{N}/g;
- $result =~ s/Ò/\\`{O}/g;
- $result =~ s/Ò/\\`{O}/g; #`
- $result =~ s/Ó/\\'{O}/g;
- $result =~ s/Ó/\\'{O}/g; #'
- $result =~ s/Ô/\\^{O}/g;
- $result =~ s/Ô/\\^{O}/g;
- $result =~ s/Õ/\\~{O}/g;
- $result =~ s/Õ/\\~{O}/g;
- $result =~ s/Ö/\\"{O}/g;
- $result =~ s/Ö/\\"{O}/g; #"
- $result =~ s/×/\$\\times\$/g;
- $result =~ s/×/\$\\times\$/g;
- $result =~ s/Ø/{\\O}/g;
- $result =~ s/Ø/{\\O}/g;
- $result =~ s/Ù/\\`{U}/g;
- $result =~ s/Ù/\\`{U}/g; #`
- $result =~ s/Ú/\\'{U}/g; #'
- $result =~ s/Ú/\\'{U}/g; #'
- $result =~ s/Û/\\^{U}/g;
- $result =~ s/Û/\\^{U}/g;
- $result =~ s/Ü/\\"{U}/g; #"
- $result =~ s/Ü/\\"{U}/g; #"
- $result =~ s/Ý/\\'{Y}/g;
- $result =~ s/Ý/\\'{Y}/g; #'
-# $result =~ s/Þ//g;
-# $result =~ s/Þ//g;
-# $result =~ s/ß//g;
-# $result =~ s/ß//g;
- $result =~ s/à/\\`{a}/g;
- $result =~ s/à/\\`{a}/g; #`
- $result =~ s/á/\\'{a}/g;
- $result =~ s/á/\\'{a}/g; #'
- $result =~ s/â/\\^{a}/g;
- $result =~ s/â/\\^{a}/g;
- $result =~ s/ã/\\~{a}/g;
- $result =~ s/ã/\\~{a}/g;
- $result =~ s/ä/\\"{a}/g;
- $result =~ s/ä/\\"{a}/g; #"
- $result =~ s/å/{\\aa}/g;
- $result =~ s/å/{\\aa}/g;
- $result =~ s/æ/{\\ae}/g;
- $result =~ s/æ/{\\ae}/g;
-# $result =~ s/ç//g;
-# $result =~ s/ç//g;
- $result =~ s/è/\\`{e}/g;
- $result =~ s/è/\\`{e}/g; #`
- $result =~ s/é/\\'{e}/g;
- $result =~ s/é/\\'{e}/g; #'
- $result =~ s/ê/\\^{e}/g;
- $result =~ s/ê/\\^{e}/g;
- $result =~ s/ë/\\"{e}/g;
- $result =~ s/ë/\\"{e}/g; #"
- $result =~ s/ì/\\`{i}/g;
- $result =~ s/ì/\\`{i}/g; #`
- $result =~ s/í/\\'{i}/g;
- $result =~ s/í/\\'{i}/g; #'
- $result =~ s/î/\\^{i}/g;
- $result =~ s/î/\\^{i}/g;
- $result =~ s/ï/\\"{i}/g;
- $result =~ s/ï/\\"{i}/g; #"
-# $result =~ s/ð//g;
-# $result =~ s/ð//g;
- $result =~ s/ñ/\\~{n}/g;
- $result =~ s/ñ/\\~{n}/g;
- $result =~ s/ò/\\`{o}/g;
- $result =~ s/ò/\\`{o}/g; #`
- $result =~ s/ó/\\'{o}/g;
- $result =~ s/ó/\\'{o}/g; #'
- $result =~ s/ô/\\^{o}/g;
- $result =~ s/ô/\\^{o}/g;
- $result =~ s/õ/\\~{o}/g;
- $result =~ s/õ/\\~{o}/g;
- $result =~ s/ö/\\"{o}/g;
- $result =~ s/ö/\\"{o}/g; #"
- $result =~ s/÷/\$\\div\$/g;
- $result =~ s/÷/\$\\div\$/g;
- $result =~ s/ø/{\\o}/g;
- $result =~ s/ø/{\\o}/g;
- $result =~ s/ù/\\`{u}/g;
- $result =~ s/ù/\\`{u}/g; #`
- $result =~ s/ú/\\'{u}/g;
- $result =~ s/ú/\\'{u}/g; #'
- $result =~ s/û/\\^{u}/g;
- $result =~ s/û/\\^{u}/g;
- $result =~ s/ü/\\"{u}/g;
- $result =~ s/ü/\\"{u}/g; #"
- $result =~ s/ý/\\'{y}/g;
- $result =~ s/ý/\\'{y}/g; #'
-# $result =~ s/þ//g;
-# $result =~ s/þ//g;
- $result =~ s/ÿ/\\"{y}/g;
- $result =~ s/ÿ/\\"{y}/g; #"
- $result =~ s/θ/\$\\theta\$/g; #converts theta from html into tex
+ $result =~ s/&\#0?0?(7|9);//g;
+ $result =~ s/&\#0?(10|13);//g;
+ $result =~ s/&\#0?32;/ /g;
+ $result =~ s/&\#0?33;/!/g;
+ $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?39|146);/\'/g;
+ $result =~ s/&\#0?40;/(/g;
+ $result =~ s/&\#0?41;/)/g;
+ $result =~ s/&\#0?42;/\*/g;
+ $result =~ s/&\#0?43;/\+/g;
+ $result =~ s/&\#(0?44|130);/,/g;
+ $result =~ s/&\#0?45;/-/g;
+ $result =~ s/&\#0?46;/\./g;
+ $result =~ s/&\#0?47;/\//g;
+ $result =~ s/&\#0?48;/0/g;
+ $result =~ s/&\#0?49;/1/g;
+ $result =~ s/&\#0?50;/2/g;
+ $result =~ s/&\#0?51;/3/g;
+ $result =~ s/&\#0?52;/4/g;
+ $result =~ s/&\#0?53;/5/g;
+ $result =~ s/&\#0?54;/6/g;
+ $result =~ s/&\#0?55;/7/g;
+ $result =~ s/&\#0?56;/8/g;
+ $result =~ s/&\#0?57;/9/g;
+ $result =~ s/&\#0?58;/:/g;
+ $result =~ s/&\#0?59;/;/g;
+ $result =~ s/&(\#0?60|lt|\#139);/\$<\$/g;
+ $result =~ s/&\#0?61;/\$=\$/g;
+ $result =~ s/&(\#0?62|gt|\#155);/\$>\$/g;
+ $result =~ s/&\#0?63;/\?/g;
+ $result =~ s/&\#0?65;/A/g;
+ $result =~ s/&\#0?66;/B/g;
+ $result =~ s/&\#0?67;/C/g;
+ $result =~ s/&\#0?68;/D/g;
+ $result =~ s/&\#0?69;/E/g;
+ $result =~ s/&\#0?70;/F/g;
+ $result =~ s/&\#0?71;/G/g;
+ $result =~ s/&\#0?72;/H/g;
+ $result =~ s/&\#0?73;/I/g;
+ $result =~ s/&\#0?74;/J/g;
+ $result =~ s/&\#0?75;/K/g;
+ $result =~ s/&\#0?76;/L/g;
+ $result =~ s/&\#0?77;/M/g;
+ $result =~ s/&\#0?78;/N/g;
+ $result =~ s/&\#0?79;/O/g;
+ $result =~ s/&\#0?80;/P/g;
+ $result =~ s/&\#0?81;/Q/g;
+ $result =~ s/&\#0?82;/R/g;
+ $result =~ s/&\#0?83;/S/g;
+ $result =~ s/&\#0?84;/T/g;
+ $result =~ s/&\#0?85;/U/g;
+ $result =~ s/&\#0?86;/V/g;
+ $result =~ s/&\#0?87;/W/g;
+ $result =~ s/&\#0?88;/X/g;
+ $result =~ s/&\#0?89;/Y/g;
+ $result =~ s/&\#0?90;/Z/g;
+ $result =~ s/&\#0?91;/[/g;
+ $result =~ s/&\#0?92;/\$\\setminus\$/g;
+ $result =~ s/&\#0?93;/]/g;
+ $result =~ s/&\#(0?94|136);/\$\\wedge\$/g;
+ $result =~ s/&\#(0?95|138|154);/\\underline{\\makebox[2mm]{\\strut}}/g;
+ $result =~ s/&\#(0?96|145);/\`/g;
+ $result =~ s/&\#0?97;/a/g;
+ $result =~ s/&\#0?98;/b/g;
+ $result =~ s/&\#0?99;/c/g;
+ $result =~ s/&\#100;/d/g;
+ $result =~ s/&\#101;/e/g;
+ $result =~ s/&\#102;/f/g;
+ $result =~ s/&\#103;/g/g;
+ $result =~ s/&\#104;/h/g;
+ $result =~ s/&\#105;/i/g;
+ $result =~ s/&\#106;/j/g;
+ $result =~ s/&\#107;/k/g;
+ $result =~ s/&\#108;/l/g;
+ $result =~ s/&\#109;/m/g;
+ $result =~ s/&\#110;/n/g;
+ $result =~ s/&\#111;/o/g;
+ $result =~ s/&\#112;/p/g;
+ $result =~ s/&\#113;/q/g;
+ $result =~ s/&\#114;/r/g;
+ $result =~ s/&\#115;/s/g;
+ $result =~ s/&\#116;/t/g;
+ $result =~ s/&\#117;/u/g;
+ $result =~ s/&\#118;/v/g;
+ $result =~ s/&\#119;/w/g;
+ $result =~ s/&\#120;/x/g;
+ $result =~ s/&\#121;/y/g;
+ $result =~ s/&\#122;/z/g;
+ $result =~ s/&\#123;/\\{/g;
+ $result =~ s/&\#124;/\|/g;
+ $result =~ s/&\#125;/\\}/g;
+ $result =~ s/&\#126;/\~/g;
+ $result =~ s/&\#131;/\\textflorin /g;
+ $result =~ s/&\#132;/\"/g;
+ $result =~ s/&\#133;/\$\\ldots\$/g;
+ $result =~ s/&\#134;/\$\\dagger\$/g;
+ $result =~ s/&\#135;/\$\\ddagger\$/g;
+ $result =~ s/&\#137;/\\textperthousand /g;
+ $result =~ s/&\#140;/{\\OE}/g;
+ $result =~ s/&\#147;/\`\`/g;
+ $result =~ s/&\#148;/\'\'/g;
+ $result =~ s/&\#149;/\$\\bullet\$/g;
+ $result =~ s/&\#150;/--/g;
+ $result =~ s/&\#151;/---/g;
+ $result =~ s/&\#152;/\$\\sim\$/g;
+ $result =~ s/&\#153;/\\texttrademark /g;
+ $result =~ s/&\#156;/\\oe/g;
+ $result =~ s/&\#159;/\\\"Y/g;
+ $result =~ s/&(\#160|nbsp);//g;
+ $result =~ s/&(\#161|iexcl);/!\`/g;
+ $result =~ s/&(\#162|cent);/\\textcent /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;
+ $result =~ s/&(\#167|sect);/\\textsection /g;
+ $result =~ s/&(\#168|uml);/\\texthighdieresis /g;
+ $result =~ s/&(\#169|copy);/\\copyright /g;
+ $result =~ s/&(\#170|ordf);/\\textordfeminine /g;
+ $result =~ s/&(\#172|not);/\$\\neg\$/g;
+ $result =~ s/&(\#173|shy);/ - /g;
+ $result =~ s/&(\#174|reg);/\\textregistered /g;
+ $result =~ s/&(\#175|macr);/\$^{-}\$/g;
+ $result =~ s/&(\#176|deg);/\$^{\\circ}\$/g;
+ $result =~ s/&(\#177|plusmn);/\$\\pm\$/g;
+ $result =~ s/&(\#178|sup2);/\$^2\$/g;
+ $result =~ s/&(\#179|sup3);/\$^3\$/g;
+ $result =~ s/&(\#180|acute);/\\textacute /g;
+ $result =~ s/&(\#181|micro);/\$\\mu\$/g;
+ $result =~ s/&(\#182|para);/\\P/g;
+ $result =~ s/&(\#183|middot);/\$\\cdot\$/g;
+ $result =~ s/&(\#184|cedil);/\\c{\\strut}/g;
+ $result =~ s/&(\#185|sup1);/\$^1\$/g;
+ $result =~ s/&(\#186|ordm);/\\textordmasculine /g;
+ $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/&(\#194|Acirc);/\\^{A}/g;
+ $result =~ s/&(\#195|Atilde);/\\~{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/&(\#202|Ecirc);/\\^{E}/g;
+ $result =~ s/&(\#203|Euml);/\\\"{E}/g;
+ $result =~ s/&(\#204|Igrave);/\\\`{I}/g;
+ $result =~ s/&(\#205|Iacute);/\\\'{I}/g;
+ $result =~ s/&(\#206|Icirc);/\\^{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/&(\#215|times);/\$\\times\$/g;
+ $result =~ s/&(\#216|Oslash);/{\\O}/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;
+ $result =~ s/&(\#221|Yacute);/\\\'{Y}/g;
+ $result =~ s/&(\#223|szlig);/\\ss/g;
+ $result =~ s/&(\#224|agrave);/\\\`{a}/g;
+ $result =~ s/&(\#225|aacute);/\\\'{a}/g;
+ $result =~ s/&(\#226|acirc);/\\^{a}/g;
+ $result =~ s/&(\#227|atilde);/\\~{a}/g;
+ $result =~ s/&(\#228|auml);/\\\"{a}/g;
+ $result =~ s/&(\#229|aring);/{\\aa}/g;
+ $result =~ s/&(\#230|aelig);/{\\ae}/g;
+ $result =~ s/&(\#231|ccedil);/\\c{c}/g;
+ $result =~ s/&(\#232|egrave);/\\\`{e}/g;
+ $result =~ s/&(\#233|eacute);/\\\'{e}/g;
+ $result =~ s/&(\#234|ecirc);/\\^{e}/g;
+ $result =~ s/&(\#235|euml);/\\\"{e}/g;
+ $result =~ s/&(\#236|igrave);/\\\`{i}/g;
+ $result =~ s/&(\#237|iacute);/\\\'{i}/g;
+ $result =~ s/&(\#238|icirc);/\\^{i}/g;
+ $result =~ s/&(\#239|iuml);/\\\"{i}/g;
+ $result =~ s/&(\#240|eth);/\$\\partial\$/g;
+ $result =~ s/&(\#241|ntilde);/\\~{n}/g;
+ $result =~ s/&(\#242|ograve);/\\\`{o}/g;
+ $result =~ s/&(\#243|oacute);/\\\'{o}/g;
+ $result =~ s/&(\#244|ocirc);/\\^{o}/g;
+ $result =~ s/&(\#245|otilde);/\\~{o}/g;
+ $result =~ s/&(\#246|ouml);/\\\"{o}/g;
+ $result =~ s/&(\#247|divide);/\$\\div\$/g;
+ $result =~ s/&(\#248|oslash);/{\\o}/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;
+ $result =~ s/&(\#253|yacute);/\\\'{y}/g;
+ $result =~ s/&(\#255|yuml);/\\\"{y}/g;
+ $result =~ s/&\#952;/\$\\theta\$/g;
+#Greek Alphabet
+ $result =~ s/&(alpha|\#945);/\$\\alpha \$/g;
+ $result =~ s/&(beta|\#946);/\$\\beta \$/g;
+ $result =~ s/&(gamma|\#947);/\$\\gamma \$/g;
+ $result =~ s/&(delta|\#948);/\$\\delta \$/g;
+ $result =~ s/&(epsilon|\#949);/\$\\epsilon \$/g;
+ $result =~ s/&(zeta|\#950);/\$\\zeta \$/g;
+ $result =~ s/&(eta|\#951);/\$\\eta \$/g;
+ $result =~ s/&(theta|\#952);/\$\\theta \$/g;
+ $result =~ s/&(iota|\#953);/\$\\iota \$/g;
+ $result =~ s/&(kappa|\#954);/\$\\kappa \$/g;
+ $result =~ s/&(lambda|\#955);/\$\\lambda \$/g;
+ $result =~ s/&(mu|\#956);/\$\\mu \$/g;
+ $result =~ s/&(nu|\#957);/\$\\nu \$/g;
+ $result =~ s/&(xi|\#958);/\$\\xi \$/g;
+ $result =~ s/&(pi|\#960);/\$\\pi \$/g;
+ $result =~ s/&(rho|\#961);/\$\\rho \$/g;
+ $result =~ s/&(sigma|\#963);/\$\\sigma \$/g;
+ $result =~ s/&(tau|\#964);/\$\\tau \$/g;
+ $result =~ s/&(upsilon|\#965);/\$\\upsilon \$/g;
+ $result =~ s/&(phi|\#966);/\$\\phi \$/g;
+ $result =~ s/&(chi|\#967);/\$\\chi \$/g;
+ $result =~ s/&(psi|\#968);/\$\\psi \$/g;
+ $result =~ s/&(omega|\#969);/\$\\omega \$/g;
+ $result =~ s/&(Gamma|\#915);/\$\\Gamma \$/g;
+ $result =~ s/&(Delta|\#916);/\$\\Delta \$/g;
+ $result =~ s/&(Theta|\#920);/\$\\Theta \$/g;
+ $result =~ s/&(Lambda|\#923);/\$\\Lambda \$/g;
+ $result =~ s/&(Xi|\#926);/\$\\Xi \$/g;
+ $result =~ s/&(Pi|\#928);/\$\\Pi \$/g;
+ $result =~ s/&(Sigma|\#931);/\$\\Sigma \$/g;
+ $result =~ s/&(Upsilon|\#933);/\$\\Upsilon \$/g;
+ $result =~ s/&(Phi|\#934);/\$\\Phi \$/g;
+ $result =~ s/&(Psi|\#936);/\$\\Psi \$/g;
+ $result =~ s/&(Omega|\#937);/\$\\Omega \$/g;
+
return $result;
}
@@ -1209,7 +1132,8 @@ sub page_format_transformation {
if ($choice ne 'All class print') {
$text =~ s/\\begin{document}/\\textheight $textheight\\oddsidemargin = $evenoffset\\evensidemargin = $evenoffset\\textwidth= $textwidth\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm}\\renewcommand{\\ref}{\\keephidden\}\\usepackage{fancyhdr}\\pagestyle{fancy}\\rhead{}\\chead{}\\lhead{\\textbf{$firstname $lastname} - $courseidinfo \\hfill \\thepage \\\\ \\textit{$assignment}}\\begin{document}\\voffset=-0\.8 cm\\setcounter{page}{1}/;
} else {
- $text =~ s/\\begin{document}/\\textheight $textheight\\oddsidemargin = $evenoffset\\evensidemargin = $evenoffset\\textwidth= $textwidth\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm}\\renewcommand{\\ref}{\\keephidden\}\\begin{document}\\voffset=-1\.8cm\\setcounter{page}{1} \\vskip 5 mm /;
+ $text =~ s/\\pagestyle{fancy}\\rhead{}\\chead{}\s*\\begin{document}/\\textheight $textheight\\oddsidemargin = $evenoffset\\evensidemargin = $evenoffset\\textwidth= $textwidth\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm}\\renewcommand{\\ref}{\\keephidden\}\\pagestyle{fancy}\\rhead{}\\chead{}\\begin{document}\\voffset=-0\.8cm\\setcounter{page}{1} \\vskip 5 mm /;
+
}
}
return $text;
@@ -1293,6 +1217,12 @@ sub handler {
my $r = shift;
+ # A hook for me to work without disturbing Alex.
+ if ($ENV{'form.jeremy'}) {
+ printWizard($r);
+ return OK;
+ }
+
my $loaderror=&Apache::lonnet::overloaderror($r);
if ($loaderror) { return $loaderror; }
$loaderror=
@@ -1346,7 +1276,229 @@ sub handler {
}
+use Apache::lonwizard;
+
+sub printWizard {
+ my $r = shift;
+
+ if ($ENV{'request.course.id'}) {
+ my $fn=$ENV{'request.course.fn'};
+ tie(%hash,'GDBM_File',"$fn.db",&GDBM_READER(),0640);
+ }
+
+ if ($r->header_only) {
+ if ($ENV{'browser.mathml'}) {
+ $r->content_type('text/xml');
+ } else {
+ $r->content_type('text/html');
+ }
+ $r->send_http_header;
+ return OK;
+ }
+
+ # Send header, nocache
+ if ($ENV{'browser.mathml'}) {
+ $r->content_type('text/xml');
+ } else {
+ $r->content_type('text/html');
+ }
+ &Apache::loncommon::no_cache($r);
+ $r->send_http_header;
+ $r->rflush();
+
+ my ($resourceTitle,$sequenceTitle,$mapTitle) = &details_for_menu;
+
+ my $wizard = Apache::lonwizard->new("Printing Wizard", $ENV{QUERY_STRING});
+ # PRINT_TYPE: What the user wants to print (current docs,
+ # whole sequence, etc.
+ $wizard->declareVars(['PRINT_TYPE', 'FORMAT', 'postdata', 'url',
+ 'symb', 'RESOURCES', 'FILES']);
+
+ # Extract map
+ my $symb = $wizard->{VARS}->{'symb'};
+ my ($map, $id, $url) = split(/__/, $symb);
+
+ my $subdir = &Apache::lonnet::filelocation("", $ENV{'form.url'});
+
+ # "Delete everything after the last slash."
+ $subdir =~ s|/[^/]+$||;
+
+ # This really ought to be in some repository in loncommon or
+ # something where it can just be grabbed.
+ my $problemFilter = sub {
+ my $name = shift;
+ return $name =~ m/^[^\.]+\.(problem|exam|quiz|assess|survey|form|library)$/;
+ };
+
+ Apache::lonwizard::switch_state->new($wizard, "START", "Selecting Resources to Print", "PRINT_TYPE", [
+ ['current_document', "$resourceTitle (exactly what was on the screen)", 'CHOOSE_FORMAT'],
+ ['map_problems', "Problems from $sequenceTitle ", 'CHOOSE_PROBLEMS'],
+ ['map_problems_pages', "Problems and pages from $sequenceTitle ", 'CHOOSE_PROBLEMS_HTML'],
+ ['problems_for_students', "Problems from $sequenceTitle for selected students", 'CHOOSE_FORMAT'],
+ ['problems_from_directory', "Problems from $subdir ", 'CHOOSE_FROM_SUBDIR'] ],
+ "What do you want to print?");
+ Apache::lonwizard::resource_multichoice->new($wizard, "CHOOSE_PROBLEMS", 'Select Problems', "Select problems to print from $sequenceTitle :", '', 'CHOOSE_FORMAT', 'RESOURCES', sub {my $res = shift; return $res->is_problem()}, undef, $map);
+ Apache::lonwizard::resource_multichoice->new($wizard, "CHOOSE_PROBLEMS_HTML", 'Select Resources', "Select resources to print from $sequenceTitle :", '', "CHOOSE_FORMAT", 'RESOURCES', sub {my $res = shift; return !$res->is_map()}, undef, $map);
+ Apache::lonwizard::choose_files->new($wizard, "CHOOSE_FROM_SUBDIR", "Select Files","Select problems you wish to print from $subdir :", '', 'CHOOSE_FORMAT', 'FILES', $subdir, $problemFilter);
+ Apache::lonprintout::page_format_state->new($wizard, "CHOOSE_FORMAT", "Page Format", "FORMAT", "FINAL");
+
+ $r->print($wizard->display());
+
+ untie %hash;
+
+ return OK;
+
+}
+
+
+1;
+
+package Apache::lonprintout::page_format_state;
+
+=pod
+
+=head1 Wizard state: page_format_state
+
+See lonwizard.pm documentation for discussion of the wizard framework.
+
+Apache::lonprintout::page_format_state is a state 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.
+
+=over 4
+
+=item * B(parentLonWizReference, stateName, stateTitle, varName, nextState): varName is where the print information will be stored in the format FIXME. nextState is the state that follows this one.
+
+=back
+
+=cut
+
+use Apache::lonwizard;
+
+no strict;
+@ISA = ("Apache::lonwizard::state");
+use strict;
+
+my $maxColumns = 2;
+my @paperSize = ("Letter [8 1/2x11 in]", "Legal [8 1/2x14 in]",
+ "Ledger/Tabloid [11x17 in]", "Executive [7 1/2x10 in]",
+ "A2 [420x594 mm]", "A3 [297x420 mm]", "A4 [210x297 mm]",
+ "A5 [148x210 mm]", "A6 [105x148 mm]" );
+
+# Tentative format: Orientation (L = Landscape, P = portrait) | Colnum |
+# Paper type
+
+sub new {
+ my $proto = shift;
+ my $class = ref($proto) || $proto;
+ my $self = bless $proto->SUPER::new(shift, shift, shift);
+
+ $self->{VAR_NAME} = shift;
+ $self->{NEXT_STATE} = shift;
+ return $self;
+}
+
+sub postprocess {
+ my $self = shift;
+ my $wizard = $self->{WIZARD};
+
+ # We have to manually collect the value and store it in the
+ # wizard variable
+ my $result = $ENV{'form.' . $self->{VAR_NAME} . '.layout'} . '|';
+ $result .= $ENV{'form.' . $self->{VAR_NAME} . '.cols'} . '|';
+ $result .= $ENV{'form.' . $self->{VAR_NAME} . '.paper'};
+
+ $wizard->setVar($self->{VAR_NAME}, $result);
+ $wizard->changeState($self->{NEXT_STATE});
+}
+
+sub render {
+ my $self = shift;
+ my $wizard = $self->{WIZARD};
+ my $result = '';
+ my $var = $self->{VAR_NAME};
+ my $curVal = $self->{WIZARD}->{VARS}->{$var};
+
+ my ($layout, $cols, $paper) = split(/\|/, $curVal);
+
+ my $landscapeChecked = ($layout ne "L")? '' : 'checked ';
+ my $portraitChecked = $landscapeChecked ? '' : 'checked ';
+
+ $result .= <How should the printing be formatted?
+";
+ return $result;
+}
1;
+
+package Apache::lonprintout::printwizfinal;
+
+# This is the final state for the print wizard. It is not generally useful,
+# so it is not perldoc'ed.
+
+no strict;
+@ISA = ('Apache::lonwizard::state');
+use strict;
+
+sub new {
+ my $proto = shift;
+ my $class = ref($proto) || $proto;
+ my $self = bless $proto->SUPER::new(shift, shift, shift);
+
+ # All other variables come from the wizard.
+}
+
+sub render {
+ my $self = shift;
+ my $wizard = $self->{WIZARD};
+ my $wizvars = $wizard->{VARS};
+
+ my $result = '';
+
+ $result .= "";
+}
+
+1;
+
__END__