--- loncom/interface/printout.pl 2003/10/20 18:34:20 1.40 +++ loncom/interface/printout.pl 2004/02/06 14:16:39 1.45 @@ -1,7 +1,7 @@ #!/usr/bin/perl # CGI-script to run LaTeX, dvips, ps2ps, ps2pdf etc. # -# $Id: printout.pl,v 1.40 2003/10/20 18:34:20 sakharuk Exp $ +# $Id: printout.pl,v 1.45 2004/02/06 14:16:39 sakharuk Exp $ # # Copyright Michigan State University Board of Trustees # @@ -27,6 +27,7 @@ # use lib '/home/httpd/lib/perl'; +use Time::Local; use LONCAPA::loncgi(); use File::Path; use IO::File; @@ -57,6 +58,14 @@ END my $tableofcontents = $ENV{'cgi.'.$identifier.'tableofcontents'}; my $tableofindex = $ENV{'cgi.'.$identifier.'tableofindex'}; my $advans_role = $ENV{'cgi.'.$identifier.'role'}; + my $back_ref = $ENV{'cgi.'.$identifier.'backref'}; + my $number_of_files = $ENV{'cgi.'.$identifier.'numberoffiles'}+1; + my $student_names = $ENV{'cgi.'.$identifier.'studentnames'}; + + my @names_pack=(); + if ($student_names=~/_END_/) { + @names_pack=split(/_ENDPERSON_/,$student_names); + } my $figfile = $texfile; $figfile =~ s/^([^\.]+printout)[^t]+\.tex/$1\.dat/; @@ -64,23 +73,36 @@ END $duefile =~ s/^([^\.]+printout)[^t]+\.tex/$1\.due/; #do we have figures? if (-e $figfile) { + my %done_conversion; my $temporary_file=IO::File->new($figfile) || die "Couldn't open file for reading: $!\n"; my @content_of_file = <$temporary_file>; close $temporary_file; my $noteps; + &Create_StatWin ('Starting eps pictures creation', 'Pictires Status window'); foreach $not_eps (@content_of_file) { if ($not_eps ne '') { + my $status_statement='EPS picture for '.$not_eps; + &Update_StaWin ($status_statement); + $not_eps=~s|\/\.\/|\/|g; my $eps_f = $not_eps; $eps_f =~ s/\.[^.]*$/\.eps/i; - $_ = $eps_f; - m/\/home\/httpd\/html\/res\/(.+)/; - $eps_f = '/home/httpd/prtspool/'.$1; + if ($eps_f=~/\/home\/([^\/]+)\/public_html\//) { + $eps_f=~s/\/home\/([^\/]+)\/public_html/$1/; + $eps_f = '/home/httpd/prtspool/'.$eps_f; + } else { + $eps_f=~m/\/home\/httpd\/html\/res\/(.+)/; + $eps_f = '/home/httpd/prtspool/'.$1; + } my $path=$eps_f; - $path=~s/\/([^\/]+)\.eps$//; + $path=~s/\/([^\/]+)\.eps$//; File::Path::mkpath($path,0,0777); my $image = Image::Magick->new; $not_eps =~ s/^\s+//; $not_eps =~ s/\s+$//; + if ( exists($done_conversion{$not_eps})) { + next; + } + $done_conversion{$not_eps}=1; $status = $image->Read($not_eps); if ($status) {print " $status ";} $image->Set(page => '+100+200'); @@ -97,8 +119,35 @@ END } } } + &Close_StatWin(); } - #print "$texfile\n"; #name of the tex file for debugging only + #print "$texfile\n"; #name of the tex file for debugging only + my @texfile=($texfile); + if ($number_of_files>1) { + for (my $i=1;$i<=$number_of_files-1;$i++) { + my $new_texfile=$texfile; + $new_texfile=~s/\.tex/_add$i\.tex/; + push @texfile,$new_texfile; + } + } +my $ind=-1; +&Create_StatWin ('Starting PDF production for students', 'PDF Status window'); +foreach $texfile (@texfile) { + my $final_statement="Link to your PDF document: "; + my $status_statement='PDF document for '; + if ($number_of_files>1) { + $ind++; + my @stud_info=split(/_END_/,$names_pack[$ind]); + my @tempo_array=split(/:/,$stud_info[0]); + $final_statement='Link to PDF document for '.$tempo_array[3].' '; + $status_statement.=$tempo_array[3]; + if ($#stud_info>0) { + @tempo_array=split(/:/,$stud_info[-1]); + $final_statement.='- '.$tempo_array[3].': '; + $status_statement.=' - '.$tempo_array[3]; + } + } +&Update_StaWin ($status_statement); if (-e $texfile) { $texfile =~ m/^(.*)\/([^\/]+)$/; my $name_file = $2; @@ -131,7 +180,7 @@ END my $whereitbegins = rindex $body_log_file,'STAMPOFPASSEDRESOURCESTART'; my $whereitends = rindex $body_log_file,'STAMPOFPASSEDRESOURCEEND'; if ($whereitbegins!=-1 and $whereitends!=-1) { - print "With very high probability this error occured in ".substr($body_log_file,$whereitbegins+26,$whereitends-$whereitbegins-26)."

"; + print "With very high probability this error occured in ".substr($body_log_file,$whereitbegins+26,$whereitends-$whereitbegins-26)."

"; } print "Here are the error messages in the LaTeX log file

"; my $sygnal = 0; @@ -239,7 +288,7 @@ END my $comma = "dvips -Ppdf -G0 -o $new_name_file"; system("$comma $name_file 1>/dev/null 2>/dev/null"); if (-e $new_name_file) { - print "

Successfully created PDF output file (see link below)

\n"; + print "
$final_statement "; $new_name_file =~ m/^(.*)\./; my $tempo_file = $1.'temporar.ps'; my $name_file = $1.'.pdf'; @@ -272,9 +321,48 @@ END } else { print "LaTeX file $texfile was not created successfully"; } +} +print "
"; +if ($number_of_files>1) { + my $zipfile=$texfile[0]; + $zipfile=~s/\.tex/\.zip/; + my $statement="zip $zipfile"; + foreach my $file (@texfile) { + $file=~s/\.tex/.\pdf/; + $statement.=' '.$file; + } + system("$statement"); + $zipfile=~s/\/home\/httpd//; + print "
Your ZIP file is here"; +} +&Close_StatWin(); + + +sub Create_StatWin { + my ($title, $heading)=@_; + print('"); +} +sub Update_StaWin { + my ($info)=@_; + print(''); +} + +sub Close_StatWin { + print(''."\n"); - +}