--- loncom/interface/lonprintout.pm 2003/02/14 21:43:35 1.116
+++ loncom/interface/lonprintout.pm 2003/04/30 19:07:29 1.134
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Printout
#
-# $Id: lonprintout.pm,v 1.116 2003/02/14 21:43:35 sakharuk Exp $
+# $Id: lonprintout.pm,v 1.134 2003/04/30 19:07:29 bowersj2 Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -157,8 +157,7 @@ sub sequence_content_menu {
my $primary_sequence;
my $symbolic = &Apache::lonnet::symbread($ENV{'form.url'});
my @sequence = split('___',$symbolic);
- if ($sequence[0]=~/^uploaded/) {$primary_sequence = '/'.$sequence[0];}
- else {$primary_sequence = '/res/'.$sequence[0];}
+ $primary_sequence=&Apache::lonnet::clutter($sequence[0]);
my @master_seq = &coming_from_hash($primary_sequence);
my @titles_master_seq = ();
for (my $i=0;$i<=$#master_seq;$i++) {
@@ -202,7 +201,7 @@ sub sequence_content_menu {
}
}
-DDD=$#titles_master_seq $titles_master_seq[0]
+
@@ -238,6 +237,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;
@@ -370,6 +370,7 @@ ENDDISHEADER
$sdom,$sname);
my $section=&Apache::lonnet::usection
($sdom,$sname,$ENV{'request.course.id'});
+ if ($section == -1) { $section = ''; }
$r->print(
'
'.
$reply{'firstname'}.' '.
@@ -381,11 +382,12 @@ ENDDISHEADER
}
}
$r->print(<
+Number of blank pages added to each student assignments to print these assignments on physically different sheets (requires manual addjustment):
@@ -548,12 +550,7 @@ ENDPART
} elsif ($choice eq 'Standard LaTeX output for the top level sequence') {
# where is the main sequence of the course?
$selectionmade = 4;
- my $main_seq;
- if ($ENV{'request.course.uri'}=~/\/?uploaded\//) {
- $main_seq = $ENV{'request.course.uri'};
- } else {
- $main_seq = '/res/'.$ENV{'request.course.uri'};
- }
+ my $main_seq=&Apache::lonnet::clutter($ENV{'request.course.uri'});
my @file_seq = &coming_from_hash($main_seq);
for (my $i=0;$i<=$#file_seq;$i++) {
my ($path,$title,$symb) = split /&&/,$file_seq[$i];
@@ -596,8 +593,8 @@ ENDPART
my $symbolic = &Apache::lonnet::symbread($ENV{'form.url'});
my @sequence = split('___',$symbolic);
my $primary_sequence;
- if ($sequence[0]=~/^uploaded/) {$primary_sequence = '/'.$sequence[0];}
- else {$primary_sequence = '/res/'.$sequence[0];}
+
+ $primary_sequence=&Apache::lonnet::clutter($sequence[0]);
my @master_seq = &coming_from_hash($primary_sequence);
for (my $i=0;$i<=$#master_seq;$i++) {
my ($path,$title,$symb) = split /&&/,$master_seq[$i];
@@ -608,10 +605,11 @@ ENDPART
my %moreenv;
$moreenv{'form.textwidth'}=$LaTeXwidth;
&Apache::lonnet::appenv(%moreenv);
+ my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r,'Print Status','Class Print Status',$#students+1);
foreach my $person (@students) {
my $current_output = '';
my ($usersection,$username,$userdomain) = split /:/,$person;
- my $fullname = &Apache::grades::get_fullname($username,$userdomain);
+ my $fullname = &get_name($username,$userdomain);
#goes through all resources, checks if they are available for current student, and produces output
foreach my $curresline (@master_seq) {
my ($curres,$symb) = split /&&/, $curresline;
@@ -630,17 +628,21 @@ 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();
+ &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,
+ 'last student '.$fullname);
}
+ &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
$result .= '\end{document}';
&Apache::lonnet::delenv('form.textwidth');
} elsif ($choice eq 'Subdirectory print') {
@@ -739,9 +741,7 @@ sub coming_from_hash {
if ($hash{'src_'.$current_resource}=~/\.sequence$/) {
push @resourcelist,&coming_from_hash($hash{'src_'.$current_resource});
} else {
- my $presymb;
- if ($mainsequence =~ /\/res\/(.*)$/) {$presymb = $1;}
- elsif ($mainsequence =~ /\/?(uploaded\/(.*))$/) {$presymb = $1;}
+ my $presymb=&Apache::lonnet::declutter($mainsequence);
my $rid = $current_resource;
if ($rid=~/,/) {
my @rid = split /,/, $rid;
@@ -755,8 +755,8 @@ sub coming_from_hash {
$rid =~ m/^$mapid\.(\d*)/;
$rid = $1;
}
- $hash{'src_'.$current_resource} =~ m/\/res\/(.*)$/;
- my $symb = $presymb.'___'.$rid.'___'.$1;
+ my $symb = $presymb.'___'.$rid.'___'.
+ &Apache::lonnet::declutter($hash{'src_'.$current_resource});
push @resourcelist,$hash{'src_'.$current_resource}.'&&'.$hash{'title_'.$current_resource}.'&&'.$symb;
}
$current_resource = $hash{'goesto_'.$hash{'to_'.$current_resource}};
@@ -765,9 +765,7 @@ sub coming_from_hash {
if ($hash{'src_'.$current_resource}=~/\.sequence$/) {
push @resourcelist,&coming_from_hash($hash{'src_'.$current_resource});
} else {
- my $presymb;
- if ($mainsequence =~ /\/res\/(.*)$/) {$presymb = $1;}
- elsif ($mainsequence =~ /\/?(uploaded\/(.*))$/) {$presymb = $1;}
+ my $presymb=&Apache::lonnet::declutter($mainsequence);
my $rid = $current_resource;
if ($rid=~/,/) {
my @rid = split /,/, $rid;
@@ -781,8 +779,8 @@ sub coming_from_hash {
$rid =~ m/^$mapid\.(\d*)/;
$rid = $1;
}
- $hash{'src_'.$current_resource} =~ m/\/res\/(.*)$/;
- my $symb = $presymb.'___'.$rid.'___'.$1;
+ my $symb = $presymb.'___'.$rid.'___'.
+ &Apache::lonnet::declutter($hash{'src_'.$current_resource});
push @resourcelist,$hash{'src_'.$current_resource}.'&&'.$hash{'title_'.$current_resource}.'&&'.$symb;
}
$current_resource = $hash{'goesto_'.$hash{'to_'.$current_resource}};
@@ -834,7 +832,6 @@ sub character_chart {
$result =~ s/&\#0?61;/\$=\$/g;
$result =~ s/&(\#0?62|gt|\#155);/\$>\$/g;
$result =~ s/&\#0?63;/\?/g;
-# $result =~ s/?64;//g;
$result =~ s/&\#0?65;/A/g;
$result =~ s/&\#0?66;/B/g;
$result =~ s/&\#0?67;/C/g;
@@ -924,8 +921,6 @@ sub character_chart {
$result =~ s/&(\#168|uml);/\\texthighdieresis /g;
$result =~ s/&(\#169|copy);/\\copyright /g;
$result =~ s/&(\#170|ordf);/\\textordfeminine /g;
-# $result =~ s/«//g;
-# $result =~ s/«//g;
$result =~ s/&(\#172|not);/\$\\neg\$/g;
$result =~ s/&(\#173|shy);/ - /g;
$result =~ s/&(\#174|reg);/\\textregistered /g;
@@ -941,8 +936,6 @@ sub character_chart {
$result =~ s/&(\#184|cedil);/\\c{\\strut}/g;
$result =~ s/&(\#185|sup1);/\$^1\$/g;
$result =~ s/&(\#186|ordm);/\\textordmasculine /g;
-# $result =~ s/»//g;
-# $result =~ s/»//g;
$result =~ s/&(\#188|frac14);/\\textonequarter /g;
$result =~ s/&(\#189|frac12);/\\textonehalf /g;
$result =~ s/&(\#190|frac34);/\\textthreequarters /g;
@@ -963,8 +956,6 @@ sub character_chart {
$result =~ s/&(\#205|Iacute);/\\\'{I}/g;
$result =~ s/&(\#206|Icirc);/\\^{I}/g;
$result =~ s/&(\#207|Iuml);/\\\"{I}/g;
-# $result =~ s/Ð//g;
-# $result =~ s/Ð//g;
$result =~ s/&(\#209|Ntilde);/\\~{N}/g;
$result =~ s/&(\#210|Ograve);/\\\`{O}/g;
$result =~ s/&(\#211|Oacute);/\\\'{O}/g;
@@ -978,8 +969,6 @@ sub character_chart {
$result =~ s/&(\#219|Ucirc);/\\^{U}/g;
$result =~ s/&(\#220|Uuml);/\\\"{U}/g;
$result =~ s/&(\#221|Yacute);/\\\'{Y}/g;
-# $result =~ s/Þ//g;
-# $result =~ s/Þ//g;
$result =~ s/&(\#223|szlig);/\\ss/g;
$result =~ s/&(\#224|agrave);/\\\`{a}/g;
$result =~ s/&(\#225|aacute);/\\\'{a}/g;
@@ -1011,10 +1000,44 @@ sub character_chart {
$result =~ s/&(\#251|ucirc);/\\^{u}/g;
$result =~ s/&(\#252|uuml);/\\\"{u}/g;
$result =~ s/&(\#253|yacute);/\\\'{y}/g;
-# $result =~ s/þ//g;
-# $result =~ s/þ//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;
}
@@ -1086,6 +1109,16 @@ sub character_chart {
}
+sub get_name {
+ my ($uname,$udom)=@_;
+ if (!defined($uname)) { $uname=$ENV{'user.name'}; }
+ if (!defined($udom)) { $uname=$ENV{'user.domain'}; }
+ my $plainname=&Apache::loncommon::plainname($uname,$udom);
+ if ($plainname=~/^\s*$/) { $plainname=$uname; }
+ return &Apache::lonxml::latex_special_symbols($plainname,undef,undef,
+ 'header');
+}
+
sub page_format_transformation {
my ($papersize,$layout,$numberofcolumns,$choice,$text,$assignment) = @_;
my ($textwidth,$textheight,$oddoffset,$evenoffset);
@@ -1095,16 +1128,20 @@ sub page_format_transformation {
} else {
($textwidth,$textheight,$oddoffset,$evenoffset) = ($ENV{'form.width'},$ENV{'form.height'},$ENV{'form.leftmargin'},$ENV{'form.leftmargin'});
}
- my $firstname = &Apache::lonxml::latex_special_symbols(&Apache::lonnet::unescape($ENV{'environment.firstname'}),'','','header');
- my $lastname = &Apache::lonxml::latex_special_symbols(&Apache::lonnet::unescape($ENV{'environment.lastname'}),'','','header');
+ my $name = &get_name();
+ if ($name =~ /^\s*$/) {
+ $name=&Apache::lonxml::latex_special_symbols($ENV{'user.name'},undef,
+ undef,'header');
+ }
my $courseidinfo = &Apache::lonxml::latex_special_symbols(&Apache::lonnet::unescape($ENV{'course.'.$ENV{'request.course.id'}.'.description'}),'','','header');
if ($layout eq 'CBI') {
- $text =~ s/\\begin{document}/\\setlength{\\oddsidemargin}{$oddoffset}\\setlength{\\evensidemargin}{$evenoffset}\\setlength{\\topmargin}{200pt}\\setlength{\\textwidth}{$textwidth}\\setlength{\\textheight}{$textheight}\\setlength{\\parindent}{20pt}\\setlength{\\marginparwidth}{90pt}\\setlength{\\textfloatsep}{8pt plus 2\.0pt minus 4\.0pt}\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm} \\begin{document}\\setcounter{page}{1}\\noindent\\parbox{\\minipagewidth}{\\noindent\\fbox{\\textbf{$firstname $lastname}} \\hfill $courseidinfo} \\vskip 5 mm /;
+ $text =~ s/\\begin{document}/\\setlength{\\oddsidemargin}{$oddoffset}\\setlength{\\evensidemargin}{$evenoffset}\\setlength{\\topmargin}{200pt}\\setlength{\\textwidth}{$textwidth}\\setlength{\\textheight}{$textheight}\\setlength{\\parindent}{20pt}\\setlength{\\marginparwidth}{90pt}\\setlength{\\textfloatsep}{8pt plus 2\.0pt minus 4\.0pt}\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm} \\begin{document}\\setcounter{page}{1}\\noindent\\parbox{\\minipagewidth}{\\noindent\\fbox{\\textbf{$name}} \\hfill $courseidinfo} \\vskip 5 mm /;
} elsif ($layout eq 'CAPA') {
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}/;
+ $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{$name} - $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=-0\.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;
@@ -1130,21 +1167,18 @@ sub details_for_menu {
my $name_of_resourse = $hash{'title_'.$hash{'ids_'.$ENV{'form.postdata'}}};
my $symbolic = &Apache::lonnet::symbread($ENV{'form.postdata'});
my ($map,$id,$resource)=split(/___/,$symbolic);
+ $map=&Apache::lonnet::clutter($map);
my $name_of_sequence;
- if ($map=~/^uploaded/) {
- $name_of_sequence = $hash{'title_'.$hash{'ids_/'.$map}};
- } else {
- $name_of_sequence = $hash{'title_'.$hash{'ids_/res/'.$map}};
- }
+ $name_of_sequence = $hash{'title_'.$hash{'ids_'.$map}};
if ($name_of_sequence =~ /^\s*$/) {
- $map =~ m|([^/]+)$|;
- $name_of_sequence = $1;
+ $map =~ m|([^/]+)$|;
+ $name_of_sequence = $1;
}
- my $name_of_map = $hash{'title_'.$hash{'ids_/res/'.$ENV{'request.course.uri'}}};
+ my $name_of_map = $hash{'title_'.$hash{'ids_'.&Apache::lonnet::clutter($ENV{'request.course.uri'})}};
if ($name_of_map =~ /^\s*$/) {
- $ENV{'request.course.uri'} =~ m|([^/]+)$|;
- $name_of_map = $1;
- }
+ $ENV{'request.course.uri'} =~ m|([^/]+)$|;
+ $name_of_map = $1;
+ }
return ($name_of_resourse,$name_of_sequence,$name_of_map);
}
@@ -1187,14 +1221,15 @@ sub latex_corrections {
sub handler {
my $r = shift;
-
- # not sure where the form.* was getting processed.
- Apache::loncommon::get_unprocessed_cgi($ENV{QUERY_STRING});
+ my $helper;
# A hook for me to work without disturbing Alex.
- if ($ENV{'form.jeremy'}) {
- printWizard($r);
- return OK;
+ if (!$ENV{'form.jeremy'}) {
+ my $result = printHelper($r);
+ if (!ref($result)) {
+ return $result;
+ }
+ $helper = $result;
}
my $loaderror=&Apache::lonnet::overloaderror($r);
@@ -1250,9 +1285,9 @@ sub handler {
}
-use Apache::lonwizard;
+use Apache::lonhelper;
-sub printWizard {
+sub printHelper {
my $r = shift;
if ($ENV{'request.course.id'}) {
@@ -1280,40 +1315,277 @@ sub printWizard {
$r->send_http_header;
$r->rflush();
- my ($resourceTitle,$sequenceTitle,$mapTitle) = &details_for_menu;
+ # Unfortunately, this helper is so complicated we have to
+ # write it by hand
- my $wizard = Apache::lonwizard->new("Printing Wizard");
- # PRINT_TYPE: What the user wants to print (current docs,
- # whole sequence, etc.
- $wizard->declareVars(['PRINT_TYPE']);
-
- my $subdir = $ENV{'form.postdata'};
- $subdir =~ s|http://[^/]+||;
- $subdir =~ m/\/([^\/]+)$/;
- $subdir =~ s/\Q$1\E//;
-
- # This code also shows up above... which is prefered? Is one
- # right for this context?
- #my $subdir = &Apache::lonnet::filelocation("",$ENV{'form.url'});
- #$subdir =~ s/\/[^\/]+$//;
+ Apache::loncommon::get_unprocessed_cgi($ENV{QUERY_STRING});
- 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_FORMAT'],
- ['map_problems_pages', "All of $sequenceTitle", 'CHOOSE_FORMAT'],
- ['problems_for_students', "Problems from $sequenceTitle for selected students", 'CHOOSE_FORMAT'],
- ['problems_from_directory', "Problems from $subdir", 'CHOOSE_FORMAT'] ],
- "What do you want to print?");
+ my $helper = Apache::lonhelper::helper->new("Printing Wizard");
- $r->print($wizard->display());
+ # This will persistently load in the data we want from the
+ # very first screen.
+ if (defined($ENV{'form.symb'})) {
+ $helper->{VARS}->{'symb'} = $ENV{'form.symb'};
+ }
+ if (defined($ENV{'form.postdata'})) {
+ $helper->{VARS}->{'postdata'} = $ENV{'form.postdata'};
+ }
+ if (defined($ENV{'form.url'})) {
+ $helper->{VARS}->{'url'} = $ENV{'form.url'};
+ }
+
+ my ($resourceTitle,$sequenceTitle,$mapTitle) = &details_for_menu;
+ if (!$resourceTitle) { # if the resource doesn't have a title, use the filename
+ my $url = $helper->{VARS}->{'postdata'};
+ $resourceTitle = substr($url, rindex($url, '/') + 1);
+ }
+
+ Apache::lonhelper::registerHelperTags();
+
+ # Extract map
+ my $symb = $helper->{VARS}->{'symb'};
+ my ($map, $id, $url) = split(/__/, $symb);
+
+ my $subdir = &Apache::lonnet::filelocation("", $helper->{VARS}->{'postdata'});
+
+ # "Delete everything after the last slash."
+ $subdir =~ s|/[^/]+$||;
+
+ # What can be printed is a very dynamic decision based on
+ # lots of factors. So we need to dynamically build this list.
+ # To prevent security leaks, states are only added to the wizard
+ # if they can be reached, which ensures manipulating the form input
+ # won't allow anyone to reach states they shouldn't have permission
+ # to reach.
+
+ # printChoices is tracking the kind of printing the user can
+ # do, and will be used in a choices construction later.
+ # In the meantime we will be adding states and elements to
+ # the helper by hand.
+ my $printChoices = [];
+ my $paramHash;
+ # We can always print the current screen.
+
+ push @{$printChoices}, ["$resourceTitle (exactly what was on the screen)", 'current_document', 'FINAL'];
+
+ # If we're in a sequence...
+ if ($helper->{VARS}->{'postdata'} =~ /\/res\//) {
+ # Allow problems from sequence
+ push @{$printChoices}, ["Problems from $sequenceTitle", 'map_problems', 'CHOOSE_PROBLEMS'];
+ # Allow all resources from sequence
+ push @{$printChoices}, ["Problems and pages from $sequenceTitle", 'map_problems_pages', 'CHOOSE_PROBLEMS_HTML'];
+
+ my $isProblem = '$res->is_problem();';
+ my $isProblemOrMap = '$res->is_problem() || $res->is_map()';
+ my $isNotMap = '!$res->is_map();';
+ my $symb = '$res->symb();';
+ my $helperFragment = <
Layout | +Columns | +Paper type | +
+ Landscape + Portrait + |
+ + | \n"; + $result .= " |