[LON-CAPA-cvs] cvs: loncom /interface lonprintout.pm

sakharuk lon-capa-cvs@mail.lon-capa.org
Thu, 19 Sep 2002 20:18:09 -0000


sakharuk		Thu Sep 19 16:18:09 2002 EDT

  Modified files:              
    /loncom/interface	lonprintout.pm 
  Log:
  There is no place for infinite loop. 
  
  
Index: loncom/interface/lonprintout.pm
diff -u loncom/interface/lonprintout.pm:1.71 loncom/interface/lonprintout.pm:1.72
--- loncom/interface/lonprintout.pm:1.71	Thu Sep 19 14:33:20 2002
+++ loncom/interface/lonprintout.pm	Thu Sep 19 16:18:09 2002
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Printout
 #
-# $Id: lonprintout.pm,v 1.71 2002/09/19 18:33:20 sakharuk Exp $
+# $Id: lonprintout.pm,v 1.72 2002/09/19 20:18:09 sakharuk Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -378,6 +378,7 @@
 	for (my $i=0;$i<=$#master_seq;$i++) {
             my ($urlp,$symb) = split /&&/, $master_seq[$i];		
 	    if ($choice eq 'Standard LaTeX output for the primary sequence') {
+            #prints only problems
 		$selectionmade = 2;
  		if ($urlp =~ m/\.(problem|exam|quiz|assess|survey|form|library)/) {
 		    my %moreenv;
@@ -394,6 +395,7 @@
 		    $flag_latex_header_remove = 'YES';
 		}
 	    } elsif ($urlp =~ /\S+/) {
+              #prints problems, pages and any html/xml files
 		$selectionmade = 3;
 		my %moreenv;
 		$moreenv{'form.grade_target'}='tex';
@@ -421,7 +423,8 @@
         # where is the main sequence of the course?
 	$selectionmade = 4;
 	my $main_seq = '/res/'.$ENV{'request.course.uri'};
-	my @file_seq = &coming_from_hash($main_seq); 
+	my @file_seq = &coming_from_hash($main_seq); 	
+	my $flag_latex_header_remove = 'NO';
         #-- produce an output string
 	for (my $i=0;$i<=$#file_seq;$i++) {
             my ($urlp,$symb) = split /&&/, $file_seq[$i];
@@ -431,11 +434,17 @@
 		$moreenv{'form.grade_target'}='tex';
 		&Apache::lonnet::appenv(%moreenv);
 		my $texversion=&Apache::lonnet::ssi($urlp);
-		&Apache::lonnet::delenv('form.grade_target');
+		&Apache::lonnet::delenv('form.grade_target');		    
+		if ($flag_latex_header_remove ne 'NO') {
+		    $texversion = &latex_header_footer_remove($texversion);
+		} else {
+		    $texversion =~ s/\\end{document}//;
+		}
 		$result .= $texversion;        
-	    }
+	    }		
+	    $flag_latex_header_remove = 'YES';  
 	}	    
-	$result = &additional_cleanup($result);
+	$result .= '\end{document}';
     } elsif ($choice eq 'All class print') { 
     #-- prints assignments for whole class or for selected students  
 	$selectionmade = 5;
@@ -450,12 +459,13 @@
 	$symbolic =~ m/([^_]+)_/;
 	my $primary_sequence = '/res/'.$1;
 	my @master_seq = &coming_from_hash($primary_sequence); 
-       #loop over students
+        #loop over students
+	my $flag_latex_header_remove = 'NO';  
 	foreach my $person (@students) {
 	    my $current_output = ''; 
 	    my ($usersection,$username,$userdomain) = split /:/,$person;
 	    my $fullname = &Apache::grades::get_fullname($username,$userdomain);
-            #goes through all resources, checks if they are available for current student, and produces output 
+            #goes through all resources, checks if they are available for current student, and produces output   
 	    foreach my $curresline (@master_seq)  {
 		my ($curres,$symb) = split /&&/, $curresline;
 		$curres =~ s/^"//;
@@ -465,14 +475,24 @@
 		    if (&Apache::lonnet::allowed('bre',$res_url)) {
 			my $rendered = &Apache::loncommon::get_student_view($symb,$username,$userdomain,
                                                                         $ENV{'request.course.id'},'tex');
+			if ($flag_latex_header_remove ne 'NO') {
+			    $rendered = &latex_header_footer_remove($rendered);
+			} else {
+			    $rendered =~ s/\\end{document}//;
+			}
 			$current_output .= $rendered;
 		    }
 		}
+		$flag_latex_header_remove = 'YES';  
+	    }
+	    if ($current_output=~/\\documentclass/) {
+		$current_output =~ s/\\begin{document}/\\begin{document}\\noindent\\parbox{\\minipagewidth}{\\noindent\\fbox{\\textbf{$fullname}}\\hskip 1\.4in } \\vskip 5 mm /;
+	    } else {
+		$current_output = '\\vskip 3mm\noindent\parbox{\minipagewidth}{\noindent\fbox{\textbf{'.$fullname.'}}\hskip 1.4in } \vskip 5 mm '.$current_output;
 	    }
-	    $current_output =~ s/\\begin{document}/\\begin{document}\\noindent\\parbox{\\minipagewidth}{\\noindent\\fbox{\\textbf{$fullname}}\\hskip 1\.4in } \\vskip 5 mm /;
 	    $result .= $current_output;
 	}
-	$result = &additional_cleanup($result);
+	$result .= '\end{document}'; 
     } elsif ($choice eq 'Subdirectory print') {      
     #prints selected problems from the subdirectory 
 	$selectionmade = 6;
@@ -481,7 +501,8 @@
 	    if ($ENV{'form.whattoprint'.$i}=~/^\//) {
 		push @list_of_files,$ENV{'form.whattoprint'.$i};
 	    }
-	}
+	}	
+	my $flag_latex_header_remove = 'NO';  
 	for (my $i=0;$i<=$#list_of_files;$i++) {
 	    my $urlp = $list_of_files[$i];
 	    if ($urlp=~/\//) {
@@ -494,10 +515,16 @@
 		my $texversion=&Apache::lonnet::ssi($urlp);
 		&Apache::lonnet::delenv('form.grade_target');
 		$texversion =~ s/(\\begin{document})/$1 {\\tiny\\begin{verbatim}$urlp\\end{verbatim}}/;
+		if ($flag_latex_header_remove ne 'NO') {
+		    $texversion = &latex_header_footer_remove($texversion);
+		} else {
+		    $texversion =~ s/\\end{document}//;
+		}
 		$result .= $texversion;
-	    }   
+	    }
+	    $flag_latex_header_remove = 'YES';  
 	}
-	$result = &additional_cleanup($result);       	
+	$result .= '\end{document}';      	
     }
 #-- corrections for the different page formats
     if ($layout eq 'CBI' and $numberofcolumns eq '1') {
@@ -965,20 +992,6 @@
 
 
 #'"`
-
-sub additional_cleanup {
-    my $result = shift;	
-    my $first_app = index($result,'\documentclass',0);
-    $first_app = index($result,'\documentclass',$first_app+5);
-    while ($first_app != -1) {
-	my $second_app = index($result,'begin{document}',$first_app);
-	$first_app = rindex($result,'\end{document}',$first_app);
-	if ($first_app == -1) {last;}
-	substr($result,$first_app,$second_app-$first_app+15) = '\vskip 3 mm';
-	$first_app = index($result,'\documentclass',$first_app+5);
-    }
-    return $result;
-}
 
 
 sub page_cleanup {