--- loncom/interface/lonprintout.pm 2003/02/27 19:41:40 1.121
+++ loncom/interface/lonprintout.pm 2003/03/06 18:16:04 1.128
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Printout
#
-# $Id: lonprintout.pm,v 1.121 2003/02/27 19:41:40 bowersj2 Exp $
+# $Id: lonprintout.pm,v 1.128 2003/03/06 18:16:04 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++) {
@@ -371,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'}.' '.
@@ -550,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];
@@ -598,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];
@@ -610,10 +605,11 @@ ENDPART
my %moreenv;
$moreenv{'form.textwidth'}=$LaTeXwidth;
&Apache::lonnet::appenv(%moreenv);
+ my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin2($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;
@@ -643,7 +639,10 @@ ENDPART
$result .= $current_output;
&Apache::lonnet::delenv('form.counter');
&Apache::lonxml::init_counter();
+ &Apache::lonhtmlcommon::Increment_PrgWin2($r,\%prog_state,
+ 'last student '.$fullname);
}
+ &Apache::lonhtmlcommon::Close_PrgWin2($r,\%prog_state);
$result .= '\end{document}';
&Apache::lonnet::delenv('form.textwidth');
} elsif ($choice eq 'Subdirectory print') {
@@ -742,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;
@@ -758,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}};
@@ -768,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;
@@ -784,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}};
@@ -1114,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);
@@ -1123,14 +1128,17 @@ 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/\\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 /;
@@ -1159,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);
}
@@ -1218,7 +1223,7 @@ sub handler {
my $r = shift;
# A hook for me to work without disturbing Alex.
- if (!$ENV{'form.jeremy'}) {
+ if ($ENV{'form.jeremy'}) {
printWizard($r);
return OK;
}
@@ -1307,6 +1312,10 @@ sub printWizard {
$r->rflush();
my ($resourceTitle,$sequenceTitle,$mapTitle) = &details_for_menu;
+ if (!$resourceTitle) { # if the resource doesn't have a title, use the filename
+ my $url = $ENV{'form.postdata'};
+ $resourceTitle = substr($url, rindex($url, '/') + 1);
+ }
my $wizard = Apache::lonwizard->new("Printing Wizard", $ENV{QUERY_STRING});
# PRINT_TYPE: What the user wants to print (current docs,
@@ -1343,11 +1352,11 @@ sub printWizard {
if ($ENV{'form.postdata'}=~ /\/res\//) {
# Allow problems from sequence
push @{$printChoices}, ['map_problems', "Problems from $sequenceTitle", 'CHOOSE_PROBLEMS'];
- 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", 'Select Problems', "Select problems to print from $sequenceTitle:", 'CHOOSE_FORMAT', 'RESOURCES', sub {my $res = shift; return $res->is_problem()}, undef, $map);
# Allow all resources from sequence
push @{$printChoices}, ['map_problems_pages', "Problems and pages from $sequenceTitle", 'CHOOSE_PROBLEMS_HTML'];
- 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::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);
}
# If the user is priviledged, allow them to print all
@@ -1355,13 +1364,13 @@ sub printWizard {
if (($ENV{'request.role'}=~m/^cc\./ or $ENV{'request.role'}=~m/^in\./ or $ENV{'request.role'}=~m/^ta\./) and ($ENV{'form.postdata'}=~/\/res\//)) {
push @{$printChoices}, ['all_problems', 'All problems in course (may take a lot of time)', 'CHOOSE_FORMAT'];
push @{$printChoices}, ['problems_for_students', "Problems from $sequenceTitle for selected students", 'CHOOSE_STUDENTS'];
- Apache::lonwizard::choose_student->new($wizard, "CHOOSE_STUDENTS", "Choose Students", "Select the students you wish to print the problems for:", '', 'CHOOSE_FORMAT', 'STUDENTS', 1);
+ Apache::lonwizard::choose_student->new($wizard, "CHOOSE_STUDENTS", "Choose Students", "Select the students you wish to print the problems for:", 'CHOOSE_FORMAT', 'STUDENTS', 1);
}
# FIXME: That RE should come from a library somewhere.
if ((&Apache::lonnet::allowed('bre',$subdir) eq 'F') and ($ENV{'form.postdata'}=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)/)) {
push @{$printChoices}, ['problems_from_directory', "Problems from $subdir", 'CHOOSE_FROM_SUBDIR'];
- 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::lonwizard::choose_files->new($wizard, "CHOOSE_FROM_SUBDIR", "Select Files","Select problems you wish to print from $subdir:", 'CHOOSE_FORMAT', 'FILES', $subdir, $problemFilter);
}
# Despite the appearance of states before here, this is the first state.
@@ -1373,7 +1382,6 @@ sub printWizard {
untie %hash;
return OK;
-
}
@@ -1422,20 +1430,6 @@ sub new {
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};