--- loncom/interface/lonprintout.pm	2003/10/10 13:38:26	1.254
+++ loncom/interface/lonprintout.pm	2003/10/29 18:30:07	1.260
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Printout
 #
-# $Id: lonprintout.pm,v 1.254 2003/10/10 13:38:26 sakharuk Exp $
+# $Id: lonprintout.pm,v 1.260 2003/10/29 18:30:07 sakharuk Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -25,17 +25,6 @@
 #
 # http://www.lon-capa.org/
 #
-# (Internal Server Error Handler
-#
-# (Login Screen
-# 5/21/99,5/22,5/25,5/26,5/31,6/2,6/10,7/12,7/14,
-# 1/14/00,5/29,5/30,6/1,6/29,7/1,11/9 Gerd Kortemeyer)
-#
-# 3/1/1 Gerd Kortemeyer)
-#
-# 3/1 Gerd Kortemeyer
-#
-# 9/17 Alex Sakharuk
 #
 package Apache::lonprintout;
 
@@ -51,6 +40,7 @@ use Apache::File();
 use Apache::lonnavmaps;
 use Apache::lonratedt;
 use POSIX qw(strftime);
+use Apache::lonlocal;
 use GDBM_File;
 
 
@@ -825,6 +815,13 @@ ENDPART
 	    }
 	    if ($helper->{VARS}->{'construction'} eq '1') {$result=~s/(\\begin{document})/$1 \\fbox\{RANDOM SEED IS $rndseed\} /;}
 	    $result .= '\end{document}';   
+	} elsif ($currentURL=~/\/smppg$/) { 
+		my %form;
+		$form{'grade_target'}='tex';
+		$form{'textwidth'}=$LaTeXwidth;	
+		$form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};
+		my $texversion=&Apache::lonnet::ssi($currentURL,%form);
+		$result .= $texversion;
 	} else {
 	  $result.='\documentclass[letterpaper]{article}\usepackage{calc}\begin{document}Printout of this type of document is currently not supported: ';
 	  if ($currentURL=~/\/(aboutme|syllabus|bulletinboard|smppg)$/) {
@@ -850,7 +847,6 @@ ENDPART
 	my $flag_page_in_sequence = 'NO';
 	my @master_seq=split /\|\|\|/, $helper->{'VARS'}->{'RESOURCES'};
 	my $prevassignment='';
-	&Apache::lonnet::delenv('form.counter');
 	&Apache::lonxml::init_counter();
 	for (my $i=0;$i<=$#master_seq;$i++) {
 	    my (undef,undef,$urlp)=&Apache::lonnet::decode_symb($master_seq[$i]);
@@ -869,19 +865,26 @@ ENDPART
 	    my $assignment=&Apache::lonxml::latex_special_symbols(&Apache::lonnet::gettitle($sequence),'header'); #tittle of the assignment which contains this problem
 	    if ($i==0) {$prevassignment=$assignment;}
 	    #&Apache::lonnet::logthis("Trying to get $urlp with symb $master_seq[$i]");
-	    my $texversion=&Apache::lonnet::ssi($urlp,%form);
+	    my $texversion.=&Apache::lonnet::ssi($urlp,%form);
 	    if ($urlp=~/\.page$/) {
 		($texversion,my $number_of_columns_page) = &page_cleanup($texversion);
 		if ($number_of_columns_page > $number_of_columns) {$number_of_columns=$number_of_columns_page;} 
 		$texversion =~ s/\\end{document}\d*/\\end{document}/;
 		$flag_page_in_sequence = 'YES';
 	    } 
+	    my $lonidsdir=$r->dir_config('lonIDsDir');
+	    my $envfile=$ENV{'user.environment'};
+	    $envfile=~/\/([^\/]+)\.id$/;
+            $envfile=$1;
+	    &Apache::lonnet::transfer_profile_to_env($lonidsdir,$envfile);
+	    my $current_counter=$ENV{'form.counter'};
 	    if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||
 	       ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) {
 		my %form;
 		$form{'grade_target'}='answer';
 		$form{'answer_output_mode'}='tex';
 		my $answer=&Apache::lonnet::ssi($urlp,%form);
+                &Apache::lonnet::appenv(('form.counter' => $current_counter));
 		if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {
 		    $texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/;
 		} else {
@@ -947,12 +950,19 @@ ENDPART
 		    if (&Apache::lonnet::allowed('bre',$res_url)) {
 			my $rendered = &Apache::loncommon::get_student_view($curresline,$username,$userdomain,
                                                                         $ENV{'request.course.id'},'tex');
+			my $lonidsdir=$r->dir_config('lonIDsDir');
+			my $envfile=$ENV{'user.environment'};
+			$envfile=~/\/([^\/]+)\.id$/;
+			$envfile=$1;
+			&Apache::lonnet::transfer_profile_to_env($lonidsdir,$envfile);
+			my $current_counter=$ENV{'form.counter'};
 			if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||
 			   ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) {
 			    my %form;
 			    $form{'answer_output_mode'}='tex';
 			    $form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};
 			    my $ansrendered = &Apache::loncommon::get_student_answers($curresline,$username,$userdomain,$ENV{'request.course.id'},%form);
+			    &Apache::lonnet::appenv(('form.counter' => $current_counter));
 			    if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {
 				$rendered=~s/(\\keephidden{ENDOFPROBLEM})/$ansrendered$1/;
 			    } else {
@@ -986,7 +996,7 @@ ENDPART
 	    &Apache::lonnet::delenv('form.counter');	    
 	    &Apache::lonxml::init_counter(); 
 	    &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,
-						    'last student '.$fullname);
+					     &mt('last student').' '.$fullname);
 	}
 	&Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
 	$result .= '\end{document}';
@@ -1073,22 +1083,27 @@ ENDPART
 	$result =~ s/\\evensidemargin = -0\.57in/\\evensidemargin= $helper->{'VARS'}->{'pagesize.lmargin'} $helper->{'VARS'}->{'pagesize.lmarginunit'} /;
 	$result =~ s/\\oddsidemargin = -0\.57in/\\oddsidemargin= $helper->{'VARS'}->{'pagesize.lmargin'} $helper->{'VARS'}->{'pagesize.lmarginunit'} /;
     }
-    if ($helper->{'VARS'}->{'TABLE_CONTENTS'} eq 'yes') {$selectionmade*=10;}
-    if ($helper->{'VARS'}->{'TABLE_INDEX'} eq 'yes') {
-	if ($selectionmade<10) {$selectionmade*=100;} else {$selectionmade*=10;}
-    }
-    if ($ENV{'request.role.adv'}) {$selectionmade*=10000;}
 #-- 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; 
-    } 
+    }
+
+    my $identifier = time.'_'.int(rand(1000));
+    &Apache::lonnet::appenv('cgi.'.$identifier.'.file'   => $filename,
+                            'cgi.'.$identifier.'.layout'  => $laystyle,
+                            'cgi.'.$identifier.'.numcol'  => $numberofcolumns,
+                            'cgi.'.$identifier.'.selection' => $selectionmade,
+			    'cgi.'.$identifier.'tableofcontents' => $helper->{'VARS'}->{'TABLE_CONTENTS'},
+			    'cgi.'.$identifier.'tableofindex' => $helper->{'VARS'}->{'TABLE_INDEX'},
+			    'cgi.'.$identifier.'role' => $ENV{'request.role.adv'});
+ 
     print $temp_file $result;
 
 $r->print(<<FINALEND);
-<meta http-equiv="Refresh" content="0; url=/cgi-bin/printout.pl?$filename&$laystyle&$numberofcolumns&$selectionmade">
+<meta http-equiv="Refresh" content="0; url=/cgi-bin/printout.pl?$identifier">
 </body>
 </html>
 FINALEND