[LON-CAPA-cvs] cvs: loncom(version_2_6_X) /interface lonprintout.pm
raeburn
lon-capa-cvs-allow@mail.lon-capa.org
Fri, 04 Apr 2008 16:46:25 -0000
This is a MIME encoded message
--raeburn1207327585
Content-Type: text/plain
raeburn Fri Apr 4 12:46:25 2008 EDT
Modified files: (Branch: version_2_6_X)
/loncom/interface lonprintout.pm
Log:
- backport 1.524, 1.525, 1.526, 1.528, 1.529
--raeburn1207327585
Content-Type: text/plain
Content-Disposition: attachment; filename="raeburn-20080404124625.txt"
Index: loncom/interface/lonprintout.pm
diff -u loncom/interface/lonprintout.pm:1.519.2.3 loncom/interface/lonprintout.pm:1.519.2.4
--- loncom/interface/lonprintout.pm:1.519.2.3 Mon Mar 24 14:24:30 2008
+++ loncom/interface/lonprintout.pm Fri Apr 4 12:46:23 2008
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Printout
#
-# $Id: lonprintout.pm,v 1.519.2.3 2008/03/24 18:24:30 raeburn Exp $
+# $Id: lonprintout.pm,v 1.519.2.4 2008/04/04 16:46:23 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -150,7 +150,7 @@
$ssi_error = 1;
$ssi_last_error_resource = $resource;
$ssi_last_error = $response->code . " " . $response->message;
-
+ $content='\section*{!!! An error occurred !!!}';
&Apache::lonnet::logthis("Error in SSI resource: $resource Error: $ssi_last_error");
}
@@ -158,6 +158,19 @@
}
+sub get_student_view_with_retries {
+ my ($curresline,$retries,$username,$userdomain,$courseid,$target,$moreenv)=@_;
+ my ($content, $response) = &Apache::loncommon::get_student_view_with_retries($curresline,$retries,$username,$userdomain,$courseid,$target,$moreenv);
+ if (!$response->is_success) {
+ $ssi_error = 1;
+ $ssi_last_error_resource = $curresline.' for user '.$username.':'.$userdomain;
+ $ssi_last_error = $response->code . " " . $response->message;
+ $content='\section*{!!! An error occurred !!!}';
+ &Apache::lonnet::logthis("Error in SSI (student view) resource: $curresline Error: $ssi_last_error User: $username:$userdomain");
+ }
+ return $content;
+}
+
#
# printf_style_subst item format_string repl
#
@@ -2089,115 +2102,104 @@
# otherwise, we can write the tex file.
#
- if ($ssi_error) {
-
- my $helpurl = &Apache::loncommon::top_nav_help('Helpdesk');
- my $end_page = &Apache::loncommon::end_page();
- $r->print('
-<br />
-<h2>'.&mt('An unrecoverable network error occurred:').'</h2>
-<p>
- '.&mt('One of the resources ([_1]) you chose to print could not be rendered due to an unrecoverable error when communicating with a server:',$ssi_last_error_resource).'
-<br />
-'.$ssi_last_error.'
-</p>
-<p>'.
-&mt('It is recommended that you try printing again later, as this error may mean the server was just temporarily unavailable, or is down for maintenance.').'<br />'.
-&mt('If the error persists, please contact the [_1] for assistance.',$helpurl).
-'</p><p>'.
-&mt('We apologize for the inconvenience.').
-'</p>'.
-$end_page);
-
- } else {
-
#-- 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)) {
- unless ($temp_file = Apache::File->new('>'.$filename)) {
- $r->log_error("Couldn't open $filename for output $!");
- return SERVER_ERROR;
- }
- print $temp_file $result;
- my $begin=index($result,'\begin{document}',0);
- my $inc=substr($result,0,$begin+16);
- } else {
- my $begin=index($result,'\begin{document}',0);
- my $inc=substr($result,0,$begin+16);
- for (my $i=0;$i<=$#print_array;$i++) {
- if ($i==0) {
- $print_array[$i]=$result;
- } else {
- $print_array[$i].='\end{document}';
- $print_array[$i] =
- &latex_corrections($number_of_columns,$print_array[$i],
- $selectionmade,
- $helper->{'VARS'}->{'ANSWER_TYPE'});
+ 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)) {
+ unless ($temp_file = Apache::File->new('>'.$filename)) {
+ $r->log_error("Couldn't open $filename for output $!");
+ return SERVER_ERROR;
+ }
+ print $temp_file $result;
+ my $begin=index($result,'\begin{document}',0);
+ my $inc=substr($result,0,$begin+16);
+ } else {
+ my $begin=index($result,'\begin{document}',0);
+ my $inc=substr($result,0,$begin+16);
+ for (my $i=0;$i<=$#print_array;$i++) {
+ if ($i==0) {
+ $print_array[$i]=$result;
+ } else {
+ $print_array[$i].='\end{document}';
+ $print_array[$i] =
+ &latex_corrections($number_of_columns,$print_array[$i],
+ $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];
- }
- my $temp_file;
- my $newfilename=$filename;
- my $num=$i+1;
- $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;
- }
- print $temp_file $print_array[$i];
+ my $anobegin=index($print_array[$i],'\setcounter{page}',0);
+ substr($print_array[$i],0,$anobegin)='';
+ $print_array[$i]=$inc.$print_array[$i];
+ }
+ my $temp_file;
+ my $newfilename=$filename;
+ my $num=$i+1;
+ $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;
}
-
+ print $temp_file $print_array[$i];
}
- my $student_names='';
- if ($#print_array>0) {
- for (my $i=0;$i<=$#print_array;$i++) {
- $student_names.=$student_names[$i].'_ENDPERSON_';
- }
+ }
+ my $student_names='';
+ if ($#print_array>0) {
+ for (my $i=0;$i<=$#print_array;$i++) {
+ $student_names.=$student_names[$i].'_ENDPERSON_';
+ }
+ } else {
+ if ($#student_names>-1) {
+ $student_names=$student_names[0].'_ENDPERSON_';
} else {
- if ($#student_names>-1) {
- $student_names=$student_names[0].'_ENDPERSON_';
- } else {
- my $fullname = &get_name($env{'user.name'},$env{'user.domain'});
- $student_names=join(':',$env{'user.name'},$env{'user.domain'},
- $env{'request.course.sec'},$fullname).
- '_ENDPERSON_'.'_END_';
- }
+ my $fullname = &get_name($env{'user.name'},$env{'user.domain'});
+ $student_names=join(':',$env{'user.name'},$env{'user.domain'},
+ $env{'request.course.sec'},$fullname).
+ '_ENDPERSON_'.'_END_';
}
+ }
- # logic for now is too complex to trace if this has been defined
- # yet.
- my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
- my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
- &Apache::lonnet::appenv('cgi.'.$identifier.'.file' => $filename,
- 'cgi.'.$identifier.'.layout' => $laystyle,
- 'cgi.'.$identifier.'.numcol' => $numberofcolumns,
- 'cgi.'.$identifier.'.paper' => $papersize,
- 'cgi.'.$identifier.'.selection' => $selectionmade,
- 'cgi.'.$identifier.'.tableofcontents' => $helper->{'VARS'}->{'TABLE_CONTENTS'},
- 'cgi.'.$identifier.'.tableofindex' => $helper->{'VARS'}->{'TABLE_INDEX'},
- 'cgi.'.$identifier.'.role' => $perm{'pav'},
- 'cgi.'.$identifier.'.numberoffiles' => $#print_array,
- 'cgi.'.$identifier.'.studentnames' => $student_names,
- 'cgi.'.$identifier.'.backref' => $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.resources" => $resources_printed);
-
- my $end_page = &Apache::loncommon::end_page();
+ # logic for now is too complex to trace if this has been defined
+ # yet.
+ my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
+ my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
+ &Apache::lonnet::appenv('cgi.'.$identifier.'.file' => $filename,
+ 'cgi.'.$identifier.'.layout' => $laystyle,
+ 'cgi.'.$identifier.'.numcol' => $numberofcolumns,
+ 'cgi.'.$identifier.'.paper' => $papersize,
+ 'cgi.'.$identifier.'.selection' => $selectionmade,
+ 'cgi.'.$identifier.'.tableofcontents' => $helper->{'VARS'}->{'TABLE_CONTENTS'},
+ 'cgi.'.$identifier.'.tableofindex' => $helper->{'VARS'}->{'TABLE_INDEX'},
+ 'cgi.'.$identifier.'.role' => $perm{'pav'},
+ 'cgi.'.$identifier.'.numberoffiles' => $#print_array,
+ 'cgi.'.$identifier.'.studentnames' => $student_names,
+ 'cgi.'.$identifier.'.backref' => $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.resources" => $resources_printed);
+ my $end_page = &Apache::loncommon::end_page();
+ my $continue_text = &mt('Continue');
+ # If there's been an unrecoverable SSI error, report it to the user
+ if ($ssi_error) {
+ my $helpurl = &Apache::loncommon::top_nav_help('Helpdesk');
+ $r->print('<br /><h2>'.&mt('An unrecoverable network error occurred:').'</h2><p> '.
+ &mt('At least one of the resources you chose to print could not be rendered due to an unrecoverable error when communicating with a server:').
+ '<br />'.$ssi_last_error_resource.'<br />'.$ssi_last_error.
+ '</p><p>'.&mt('You can continue using the link provided below, but make sure to carefully inspect your output file! The errors will be marked in the file.').'<br />'.
+ &mt('You may be able to reprint the individual resources for which this error occurred, as the issue may be temporary.').
+ '<br />'.&mt('If the error persists, please contact the [_1] for assistance.',$helpurl).'</p><p>'.
+ &mt('We apologize for the inconvenience.').'</p>'.
+ '<a href="/cgi-bin/printout.pl?'.$identifier.'">'.&mt('Continue').'</a>'.$end_page);
+ } else {
$r->print(<<FINALEND);
<br />
<meta http-equiv="Refresh" content="0; url=/cgi-bin/printout.pl?$identifier" />
<a href="/cgi-bin/printout.pl?$identifier">Continue</a>
$end_page
FINALEND
- } # endif ssi errors.
+ } # endif ssi errors.
}
@@ -2270,7 +2272,7 @@
&Apache::lonxml::remember_problem_counter();
- my $rendered = &Apache::loncommon::get_student_view($curresline,$username,$userdomain,$env{'request.course.id'},'tex',$moreenv);
+ my $rendered = &get_student_view_with_retries($curresline,$ssi_retry_count,$username,$userdomain,$env{'request.course.id'},'tex',$moreenv);
if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||
($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) {
@@ -2312,7 +2314,7 @@
$current_output .= $rendered;
} elsif ($res_url=~/\/(smppg|syllabus|aboutme|bulletinboard)$/) {
$printed .= $curresline.':';
- my $rendered = &Apache::loncommon::get_student_view($curresline,$username,$userdomain,$env{'request.course.id'},'tex',$moreenv);
+ my $rendered = &get_student_view_with_retries($curresline,$ssi_retry_count,$username,$userdomain,$env{'request.course.id'},'tex',$moreenv);
if ($helper->{'VARS'}->{'PRINT_ANNOTATIONS'} eq 'yes') {
my $url = &Apache::lonnet::clutter($res_url);
my $annotation = &annotate($url);
--raeburn1207327585--