--- loncom/interface/lonprintout.pm 2004/02/09 20:41:36 1.275 +++ loncom/interface/lonprintout.pm 2004/02/17 00:26:20 1.277 @@ -1,7 +1,7 @@ # The LearningOnline Network # Printout # -# $Id: lonprintout.pm,v 1.275 2004/02/09 20:41:36 sakharuk Exp $ +# $Id: lonprintout.pm,v 1.277 2004/02/17 00:26:20 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1155,39 +1155,60 @@ ENDPART } #-- writing .tex file in prtspool my $temp_file; - my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout_".time."_".rand(10000000).".tex"; - 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); - if ($#print_array>0) { - for (my $i=1;$i<=$#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].'\end{document}'; + 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 { + my $anobegin=index($print_array[$i],'\setcounter{page}',0); + substr($print_array[$i],0,$anobegin)=''; + $print_array[$i]=$inc.$print_array[$i].'\end{document}'; + } my $temp_file; my $newfilename=$filename; - $newfilename =~s/\.tex$/_add$i\.tex/; + my $num=$i+1; + $newfilename =~s/\.tex$/_$num\.tex/; 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_'; } + } 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 $URLback=''; #link to original document + if ($helper->{'VARS'}->{'construction'} ne '1') { + #prints published resource + $URLback=$helper->{'VARS'}->{'postdata'}; + } else { + #prints resource from the construction space + $URLback='/'.$helper->{'VARS'}->{'filename'}; + if ($URLback=~/([^?]+)/) {$URLback=$1;} + } - my $identifier = time.'_'.int(rand(1000)); &Apache::lonnet::appenv('cgi.'.$identifier.'.file' => $filename, 'cgi.'.$identifier.'.layout' => $laystyle, 'cgi.'.$identifier.'.numcol' => $numberofcolumns, @@ -1196,9 +1217,9 @@ ENDPART 'cgi.'.$identifier.'tableofindex' => $helper->{'VARS'}->{'TABLE_INDEX'}, 'cgi.'.$identifier.'role' => $ENV{'request.role.adv'}, 'cgi.'.$identifier.'numberoffiles' => $#print_array, - 'cgi.'.$identifier.'studentnames' => $student_names,); + 'cgi.'.$identifier.'studentnames' => $student_names, + 'cgi.'.$identifier.'backref' => $URLback,); - $r->print(<