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

sakharuk lon-capa-cvs@mail.lon-capa.org
Fri, 17 May 2002 21:53:51 -0000


sakharuk		Fri May 17 17:53:51 2002 EDT

  Modified files:              
    /loncom/interface	lonprintout.pm 
  Log:
  a version for printing of the directories on the local mashine (without replication)
  Needs additional work
  
  
Index: loncom/interface/lonprintout.pm
diff -u loncom/interface/lonprintout.pm:1.27 loncom/interface/lonprintout.pm:1.28
--- loncom/interface/lonprintout.pm:1.27	Thu May  9 14:56:21 2002
+++ loncom/interface/lonprintout.pm	Fri May 17 17:53:50 2002
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Printout
 #
-# $Id: lonprintout.pm,v 1.27 2002/05/09 18:56:21 sakharuk Exp $
+# $Id: lonprintout.pm,v 1.28 2002/05/17 21:53:50 sakharuk Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -65,7 +65,7 @@
 
 sub menu_for_output {
     my $r = shift;
-    $r->print(<<ENDMENUOUT);
+    $r->print(<<ENDMENUOUT1);
 <input type="hidden" name="phase" value="two">
 <input type="hidden" name="url" value="$ENV{'form.postdata'}">
 <input type="radio" name="choice" value="Standard LaTeX output for current document" checked>  Current document
@@ -73,15 +73,23 @@
 <input type="radio" name="choice" value="Standard LaTeX output for the primary sequence">  All problems from the primary sequence<br />
 <input type="radio" name="choice" value="Standard LaTeX output for whole primary sequence">  The whole primary sequence (problems plus all html and xml files)<br />
 <input type="radio" name="choice" value="Standard LaTeX output for the top level sequence">  All problems from the top level sequence<br />
+<br />
+ENDMENUOUT1
+    if ($ENV{'user.adv'} eq '1') {
+	$r->print(<<ENDMENUOUT2);
+<input type="radio" name="choice" value="Subdirectory print">  All problems from particular subdirectory <input type="text" name="subdirect" value="/res/"><br />
+ENDMENUOUT2
+    }
+	$r->print(<<ENDMENUOUT3);
 <br /><hr /><br />
 <h1>And what page format do you prefer?</h1>
-<input type="radio" name="layout" value="CBI"> Two columns landscape (<small>CBI</small>) <br />
-<input type="radio" name="layout" value="CAPA" checked>  Two columns portrait (<small>CAPA</small>) <br />
+<input type="radio" name="layout" value="CBI"> Two columns landscape <br />
+<input type="radio" name="layout" value="CAPA" checked>  Two columns portrait <br />
 <input type="submit" value="Submit your choice">
 </form>
 </body>
 </html>
-ENDMENUOUT
+ENDMENUOUT3
 }
 
 
@@ -100,6 +108,7 @@
 
     my $choice = $ENV{'form.choice'};
     my $layout = $ENV{'form.layout'};
+    my $subdirtoprint = $ENV{'form.subdirect'};
     my $laystyle = 'book';
     my $result = '';
     my %mystyle;
@@ -151,16 +160,8 @@
 		&Apache::lonnet::delenv('form.grade_target');
 		$result .= $texversion;    
 	    }
-	}
-#-- additional cleanup for output	
-	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);
-	    substr($result,$first_app,$second_app-$first_app+15) = '\vskip 3 mm';
-	    $first_app = index($result,'\documentclass',$first_app+5);
-	}
+	}	
+	$result = &additional_cleanup($result);
     }  elsif ($choice eq 'Standard LaTeX output for the top level sequence') {
 	my @master_seq = ();
 	my @add_file_seq = ();
@@ -198,16 +199,45 @@
 		&Apache::lonnet::delenv('form.grade_target');
 		$result .= $texversion;        
 	    }
+	}	    
+	$result = &additional_cleanup($result);
+    } elsif ($choice eq 'Subdirectory print') {  
+	if (&Apache::lonnet::allowed('bre',$subdirtoprint) eq 'F') {
+	    my $locald = &Apache::lonnet::filelocation("",$subdirtoprint);
+	    unless (-e $locald) {
+#do something in the case of the absence of this subdirectory on the local mashine
+#replication process		
+	    }
+	    my @list_of_files = ();
+            my @content_directory = &Apache::lonnet::dirlist($subdirtoprint);
+	    for (my $iy=0;$iy<=$#content_directory;$iy++) {
+                my @tempo_array = split(/&/,$content_directory[$iy]);
+		$content_directory[$iy] = $tempo_array[0];
+		if ($content_directory[$iy] =~ m/\.problem$/) {
+		    push @list_of_files,$content_directory[$iy];
+		}
+	    }
+	    for (my $i=0;$i<=$#list_of_files;$i++) {
+		$subdirtoprint =~ s/\/$//;
+		my $urlp = $subdirtoprint.'/'.$list_of_files[$i];
+		my %moreenv;
+		$moreenv{'form.grade_target'}='tex';
+		&Apache::lonnet::appenv(%moreenv);
+		my $texversion=&Apache::lonnet::ssi($urlp);
+		&Apache::lonnet::delenv('form.grade_target');
+		$texversion =~ s/(\\begin{document})/$1 {\\tiny\\begin{verbatim}$urlp\\end{verbatim}}/;
+		$result .= $texversion;   
+	    }
+	    $result = &additional_cleanup($result);
+
+	} else {
+#message "you not allowed to do this"	   
 	}
-#-- additional cleanup for output	
-	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);
-	    substr($result,$first_app,$second_app-$first_app+15) = '\vskip 3 mm';
-	    $first_app = index($result,'\documentclass',$first_app+5);
-	}
+
+
+
+
+
     }
 #-- corrections for the different page formats
     if ($layout eq 'CBI') {
@@ -254,7 +284,18 @@
 FINALEND
 }
 
-
+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);
+	substr($result,$first_app,$second_app-$first_app+15) = '\vskip 3 mm';
+	$first_app = index($result,'\documentclass',$first_app+5);
+    }
+    return $result;
+}
 
 
 sub content_map {