--- loncom/interface/printout.pl 2014/02/13 17:47:30 1.146.4.3 +++ loncom/interface/printout.pl 2024/07/11 15:24:01 1.172 @@ -1,7 +1,7 @@ #!/usr/bin/perl # CGI-script to run LaTeX, dvips, ps2ps, ps2pdf etc. # -# $Id: printout.pl,v 1.146.4.3 2014/02/13 17:47:30 raeburn Exp $ +# $Id: printout.pl,v 1.172 2024/07/11 15:24:01 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -40,11 +40,13 @@ use Apache::lonlocal; use Apache::lonmsg(); use LONCAPA::Enrollment; use LONCAPA::Configuration; +use LONCAPA; +use Archive::Zip qw( :ERROR_CODES ); use strict; my $busy_wait_timeout = 30; - +my $pdfs_converted = 0; # non zero if PDF includes (need to fixps). my $debugging = 0; @@ -201,7 +203,7 @@ my $tableofindex = $env{'cgi.'.$identifi my $advanced_role = $env{'cgi.'.$identifier.'.role'}; my $number_of_files = $env{'cgi.'.$identifier.'.numberoffiles'}+1; my $student_names = $env{'cgi.'.$identifier.'.studentnames'}; -my $backref = &Apache::lonnet::unescape($env{'cgi.'.$identifier.'.backref'}); +my $backref = &unescape($env{'cgi.'.$identifier.'.backref'}); my @names_pack=(); @@ -209,8 +211,13 @@ if ($student_names=~/_END_/) { @names_pack=split(/_ENDPERSON_/,$student_names); } if ($backref) { - print('
'.&mt("[_1]Return[_2] to editing resource.", + if ($backref =~ m{^(/uploaded/$LONCAPA::match_domain/$LONCAPA::match_courseid/default_\d+.page)}) { + $backref = $1; + } + print('
'.&mt("[_1]Return[_2] to resource.", "","").'
'); + print(''. + &mt("Change Printing Options").'
'."\n"); } my $figfile = $texfile; $figfile =~ s/^(.*_printout)_\d+_\d+_\d+\.tex/$1\.dat/; @@ -237,7 +244,7 @@ if (-e $figfile) { close $temporary_file; my $noteps; my %prog_state; - if ($advanced_role) { %prog_state=&Apache::lonhtmlcommon::Create_PrgWin('','Converting Images to EPS','Picture Conversion Status',$#content_of_file,'inline','80'); } + if ($advanced_role) { %prog_state=&Apache::lonhtmlcommon::Create_PrgWin('',$#content_of_file); } print('' + .&mt('[_1] - [_2]Your PDF file[_3] is ready for download.', + $link_text,'','') + .'
'."\n"; } unlink($missfonts_file); } } else { - print "LaTeX file $texfile was not created successfully"; + print + '' + .&mt('The LaTeX file [_1] was not created successfully.', + ''.$texfile.'') + .'
'; } } +if ($advanced_role) { &Apache::lonhtmlcommon::Close_PrgWin('',\%prog_state); } print "'.&mt('Zip Output:')."\n"); + my %zip_prog_state; + if ($advanced_role) { %zip_prog_state=&Apache::lonhtmlcommon::Create_PrgWin('',$number_of_files); } my $zipfile=$texfile[0]; $zipfile=~s/\.tex/\.zip/; - my $statement="zip $zipfile"; + my $zip = Archive::Zip->new(); + my $counter = 0; foreach my $file (@texfile) { - $file=~s/\.tex/.\pdf/; - $statement.=' '.$file; + $file=~s/\.tex/.\pdf/; + my $dest=$file; + $dest=~s{^\Q$perlvar{'lonPrtDir'}\E}{prtspool}; + $zip->addFile($file,$dest); + $dest=~s/^prtspool//; + $counter ++; + if ($advanced_role) { + &Apache::lonhtmlcommon::Update_PrgWin('',\%zip_prog_state, + &mt('[_1] added to zip archive ([_2] of [_3]', + $dest,$counter,$number_of_files)); + } } - print("
Zip Output:\n"); - system($statement); - print(""); - $zipfile=~s{^\Q$perlvar{'lonPrtDir'}\E}{/prtspool}; - print "
' + .&mt('A [_1]ZIP file[_2] of all the PDF files is ready for download.', + '','') + .'
'; + } else { + print ''. + &mt('An error occurred creating a ZIP file of all the PDF files'). + '
'; + } + if ($advanced_role) { &Apache::lonhtmlcommon::Close_PrgWin('',\%zip_prog_state); } } -if ($advanced_role) { &Apache::lonhtmlcommon::Close_PrgWin('',\%prog_state); } print(&Apache::loncommon::end_page()); my $done; @@ -608,7 +711,7 @@ sub busy_wait_command { if ($size == $last_size) { $unchanged_time++; if ($timeout && ($unchanged_time > $timeout)) { - print "'.&mt('Operation timed out!')."
\n"; print "Executing $command, the output file $output_file did not grow\n";
print "after $timeout seconds. This may indicate $command\n";
print "is in an infinite loop.\n";
@@ -623,8 +726,7 @@ sub busy_wait_command {
}
}
if ($advanced_role) {
- &Apache::lonhtmlcommon::Update_PrgWin('',$progress_win,
- $message.$extra_msg);
+ &Apache::lonhtmlcommon::Update_PrgWin('',$progress_win,$message.$extra_msg);
}
}
$SIG{CHLD}='IGNORE';
@@ -721,8 +823,7 @@ sub repaginate {
my @pages_in_student; # For each student his/her initial page count.
my $max_pages = 0; # Pages in 'longest' student.
my $page_number = 0;
- &Apache::lonhtmlcommon::Update_PrgWin('',\%prog_state,
- &mt("Counting pages for student: [_1]",1));
+ &Apache::lonhtmlcommon::Update_PrgWin('',\%prog_state,&mt("Counting pages for student: [_1]",1));
while ($line = '
+ .&mt('An error occurred during the conversion of [_1] to postscript.',
+ ''.$prettyname.'')
+ .' '
- .&mt('An error occured during the conversion of [_1].[_2]If possible try to save this image using different settings and republish it.',
- ''.$prettyname.'','
')
- .'
'
+ .&mt('If possible try to save this image using different settings and republish it.')
+ .'