Diff for /loncom/interface/lonprintout.pm between versions 1.519.2.3 and 1.519.2.4

version 1.519.2.3, 2008/03/24 18:24:30 version 1.519.2.4, 2008/04/04 16:46:23
Line 150  sub ssi_with_retries { Line 150  sub ssi_with_retries {
  $ssi_error               = 1;   $ssi_error               = 1;
  $ssi_last_error_resource = $resource;   $ssi_last_error_resource = $resource;
  $ssi_last_error          = $response->code . " " . $response->message;   $ssi_last_error          = $response->code . " " . $response->message;
    $content='\section*{!!! An error occurred !!!}';
  &Apache::lonnet::logthis("Error in SSI resource: $resource Error: $ssi_last_error");   &Apache::lonnet::logthis("Error in SSI resource: $resource Error: $ssi_last_error");
     }      }
   
Line 158  sub ssi_with_retries { Line 158  sub ssi_with_retries {
   
 }  }
   
   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  #   printf_style_subst  item format_string repl
 #    #  
Line 2089  ENDPART Line 2102  ENDPART
     # otherwise, we can write the tex file.      # 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   #-- writing .tex file in prtspool 
  my $temp_file;      my $temp_file;
  my $identifier = &Apache::loncommon::get_cgi_id();      my $identifier = &Apache::loncommon::get_cgi_id();
  my $filename = "/home/httpd/prtspool/$env{'user.name'}_$env{'user.domain'}_printout_$identifier.tex";      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)) {          unless ($temp_file = Apache::File->new('>'.$filename)) {
  $r->log_error("Couldn't open $filename for output $!");      $r->log_error("Couldn't open $filename for output $!");
  return SERVER_ERROR;       return SERVER_ERROR; 
     }   }
     print $temp_file $result;   print $temp_file $result;
     my $begin=index($result,'\begin{document}',0);   my $begin=index($result,'\begin{document}',0);
     my $inc=substr($result,0,$begin+16);   my $inc=substr($result,0,$begin+16);
  } else {      } else {
     my $begin=index($result,'\begin{document}',0);          my $begin=index($result,'\begin{document}',0);
     my $inc=substr($result,0,$begin+16);   my $inc=substr($result,0,$begin+16);
     for (my $i=0;$i<=$#print_array;$i++) {   for (my $i=0;$i<=$#print_array;$i++) {
  if ($i==0) {      if ($i==0) {
     $print_array[$i]=$result;          $print_array[$i]=$result;
  } else {      } else {
     $print_array[$i].='\end{document}';          $print_array[$i].='\end{document}';
     $print_array[$i] =           $print_array[$i] = 
  &latex_corrections($number_of_columns,$print_array[$i],      &latex_corrections($number_of_columns,$print_array[$i],
    $selectionmade,          $selectionmade, 
    $helper->{'VARS'}->{'ANSWER_TYPE'});         $helper->{'VARS'}->{'ANSWER_TYPE'});
           
     my $anobegin=index($print_array[$i],'\setcounter{page}',0);   my $anobegin=index($print_array[$i],'\setcounter{page}',0);
     substr($print_array[$i],0,$anobegin)='';   substr($print_array[$i],0,$anobegin)='';
     $print_array[$i]=$inc.$print_array[$i];   $print_array[$i]=$inc.$print_array[$i];
  }      }
  my $temp_file;      my $temp_file;
  my $newfilename=$filename;      my $newfilename=$filename;
  my $num=$i+1;      my $num=$i+1;
  $newfilename =~s/\.tex$//;       $newfilename =~s/\.tex$//; 
  $newfilename=sprintf("%s_%03d.tex",$newfilename, $num);      $newfilename=sprintf("%s_%03d.tex",$newfilename, $num);
  unless ($temp_file = Apache::File->new('>'.$newfilename)) {      unless ($temp_file = Apache::File->new('>'.$newfilename)) {
     $r->log_error("Couldn't open $newfilename for output $!");   $r->log_error("Couldn't open $newfilename for output $!");
     return SERVER_ERROR;    return SERVER_ERROR; 
  }  
  print $temp_file $print_array[$i];  
     }      }
           print $temp_file $print_array[$i];
  }   }
  my $student_names='';      }
  if ($#print_array>0) {      my $student_names='';
     for (my $i=0;$i<=$#print_array;$i++) {      if ($#print_array>0) {
  $student_names.=$student_names[$i].'_ENDPERSON_';   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 {   } else {
     if ($#student_names>-1) {      my $fullname = &get_name($env{'user.name'},$env{'user.domain'});
  $student_names=$student_names[0].'_ENDPERSON_';      $student_names=join(':',$env{'user.name'},$env{'user.domain'},
     } else {          $env{'request.course.sec'},$fullname).
  my $fullname = &get_name($env{'user.name'},$env{'user.domain'});   '_ENDPERSON_'.'_END_';
  $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      # logic for now is too complex to trace if this has been defined
  #  yet.      #  yet.
  my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};      my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
  my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};      my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
  &Apache::lonnet::appenv('cgi.'.$identifier.'.file'   => $filename,      &Apache::lonnet::appenv('cgi.'.$identifier.'.file'   => $filename,
  'cgi.'.$identifier.'.layout'  => $laystyle,      'cgi.'.$identifier.'.layout'  => $laystyle,
  'cgi.'.$identifier.'.numcol'  => $numberofcolumns,      'cgi.'.$identifier.'.numcol'  => $numberofcolumns,
  'cgi.'.$identifier.'.paper'  => $papersize,      'cgi.'.$identifier.'.paper'  => $papersize,
  'cgi.'.$identifier.'.selection' => $selectionmade,      'cgi.'.$identifier.'.selection' => $selectionmade,
  'cgi.'.$identifier.'.tableofcontents' => $helper->{'VARS'}->{'TABLE_CONTENTS'},      'cgi.'.$identifier.'.tableofcontents' => $helper->{'VARS'}->{'TABLE_CONTENTS'},
  'cgi.'.$identifier.'.tableofindex' => $helper->{'VARS'}->{'TABLE_INDEX'},      'cgi.'.$identifier.'.tableofindex' => $helper->{'VARS'}->{'TABLE_INDEX'},
  'cgi.'.$identifier.'.role' => $perm{'pav'},      'cgi.'.$identifier.'.role' => $perm{'pav'},
  'cgi.'.$identifier.'.numberoffiles' => $#print_array,      'cgi.'.$identifier.'.numberoffiles' => $#print_array,
  'cgi.'.$identifier.'.studentnames' => $student_names,      'cgi.'.$identifier.'.studentnames' => $student_names,
  'cgi.'.$identifier.'.backref' => $URLback,);      'cgi.'.$identifier.'.backref' => $URLback,);
  &Apache::lonnet::appenv("cgi.$identifier.user"    => $env{'user.name'},      &Apache::lonnet::appenv("cgi.$identifier.user"    => $env{'user.name'},
  "cgi.$identifier.domain"  => $env{'user.domain'},      "cgi.$identifier.domain"  => $env{'user.domain'},
  "cgi.$identifier.courseid" => $cnum,       "cgi.$identifier.courseid" => $cnum, 
  "cgi.$identifier.coursedom" => $cdom,       "cgi.$identifier.coursedom" => $cdom, 
  "cgi.$identifier.resources" => $resources_printed);      "cgi.$identifier.resources" => $resources_printed);
       my $end_page = &Apache::loncommon::end_page();
  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);   $r->print(<<FINALEND);
 <br />  <br />
 <meta http-equiv="Refresh" content="0; url=/cgi-bin/printout.pl?$identifier" />  <meta http-equiv="Refresh" content="0; url=/cgi-bin/printout.pl?$identifier" />
 <a href="/cgi-bin/printout.pl?$identifier">Continue</a>  <a href="/cgi-bin/printout.pl?$identifier">Continue</a>
 $end_page  $end_page
 FINALEND  FINALEND
   }                                       # endif ssi errors.      }                                       # endif ssi errors.
 }  }
   
   
Line 2270  sub print_resources { Line 2272  sub print_resources {
   
     &Apache::lonxml::remember_problem_counter();          &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') ||      if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||
        ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) {         ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) {
Line 2312  sub print_resources { Line 2314  sub print_resources {
     $current_output .= $rendered;          $current_output .= $rendered;    
  } elsif ($res_url=~/\/(smppg|syllabus|aboutme|bulletinboard)$/) {   } elsif ($res_url=~/\/(smppg|syllabus|aboutme|bulletinboard)$/) {
     $printed .= $curresline.':';      $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') {      if ($helper->{'VARS'}->{'PRINT_ANNOTATIONS'} eq 'yes') {
  my $url = &Apache::lonnet::clutter($res_url);   my $url = &Apache::lonnet::clutter($res_url);
  my $annotation = &annotate($url);   my $annotation = &annotate($url);

Removed from v.1.519.2.3  
changed lines
  Added in v.1.519.2.4


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>