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

sakharuk lon-capa-cvs@mail.lon-capa.org
Thu, 14 Nov 2002 20:02:01 -0000


This is a MIME encoded message

--sakharuk1037304121
Content-Type: text/plain

sakharuk		Thu Nov 14 15:02:01 2002 EDT

  Modified files:              
    /loncom/interface	lonprintout.pm 
  Log:
  1. Added menus for the problem choice for the printing primary sequence
  (only problems) and for the printing the whole primary sequence (problems
  and pages and html/xml files);
  2. Done additional cleanup in the relevant sections of the module.
  
  
--sakharuk1037304121
Content-Type: text/plain
Content-Disposition: attachment; filename="sakharuk-20021114150201.txt"

Index: loncom/interface/lonprintout.pm
diff -u loncom/interface/lonprintout.pm:1.87 loncom/interface/lonprintout.pm:1.88
--- loncom/interface/lonprintout.pm:1.87	Thu Nov 14 10:39:35 2002
+++ loncom/interface/lonprintout.pm	Thu Nov 14 15:02:00 2002
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Printout
 #
-# $Id: lonprintout.pm,v 1.87 2002/11/14 15:39:35 sakharuk Exp $
+# $Id: lonprintout.pm,v 1.88 2002/11/14 20:02:00 sakharuk Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -94,8 +94,8 @@
 ENDMENUOUT1
     if ($ENV{'form.postdata'}=~/\/res\//) {
 	$r->print(<<ENDMENUOUT2);
-<input type="radio" name="choice" value="Standard LaTeX output for the primary sequence">  All problems from <b>$title_for_sequence</b><br />
-<input type="radio" name="choice" value="Standard LaTeX output for whole primary sequence">  All problems plus any pages or html/xml files from <b>$title_for_sequence</b><br />
+<input type="radio" name="choice" value="Standard LaTeX output for the primary sequence">  Problem(s) from <b>$title_for_sequence</b><br />
+<input type="radio" name="choice" value="Standard LaTeX output for whole primary sequence">  Problem(s) plus page(s) or html/xml file(s) from <b>$title_for_sequence</b><br />
 ENDMENUOUT2
     }
     if (($ENV{'request.role'}=~m/^cc\./ or $ENV{'request.role'}=~m/^in\./ or $ENV{'request.role'}=~m/^ta\./) and ($ENV{'form.postdata'}=~/\/res\//)) { 
@@ -149,6 +149,68 @@
 }
 
 
+sub sequence_content_menu {
+    my ($key_to,$r) = @_;
+    my $symbolic = &Apache::lonnet::symbread($ENV{'form.url'});
+    my @sequence = split('___',$symbolic);
+    my $primary_sequence = '/res/'.$sequence[0];   
+    my @master_seq = &coming_from_hash($primary_sequence,$sequence[0]);
+    my @master_seq_view = @master_seq;
+    for (my $i=0;$i<=$#master_seq_view;$i++) {
+	$master_seq_view[$i]=~/\/([^\/]+)$/;
+	$master_seq_view[$i]=$1;
+    }
+    $r->print(<<ENDMENUOUT1);
+<input type="hidden" name="url" value="$ENV{'form.url'}">
+<input type="hidden" name="choice" value="$ENV{'form.choice'}">
+<input type="hidden" name="layout" value="$ENV{'form.layout'}">
+<input type="hidden" name="papersize" value="$ENV{'form.papersize'}">
+<input type="hidden" name="numberofcolumns" value="$ENV{'form.numberofcolumns'}">
+<h1>Mark item(s) which you want to print</h1>
+<script>
+    function checkall() {
+	for (i=0; i<document.forms.printform.elements.length; i++) {
+            if 
+          (document.forms.printform.elements[i].name.indexOf('whatfile')==0) {
+	      document.forms.printform.elements[i].checked=true;
+            }
+        }
+    }
+    function uncheckall() {
+	for (i=0; i<document.forms.printform.elements.length; i++) {
+            if 
+          (document.forms.printform.elements[i].name.indexOf('whatfile')==0) {
+	      document.forms.printform.elements[i].checked=false;
+            }
+        }
+    }
+</script>
+<input type=button onClick="checkall()" value="Check All">&nbsp;
+<input type=button onClick="uncheckall()" value="Uncheck">
+<p>
+ENDMENUOUT1
+    my $inc=0; 
+    for (my $i=0;$i<=$#master_seq_view;$i++) {
+      if ($key_to==1 && $master_seq_view[$i]=~/\.(problem|exam|quiz|assess|survey|form|library)$/) {
+	$r->print('<br /><input type=checkbox name="whatfile'.$inc.'" value="'.$master_seq[$i].'"> '.
+                  $master_seq_view[$i]);
+        $inc++;
+    } elsif ($key_to==0 && $master_seq_view[$i]=~/\.(problem|exam|quiz|assess|survey|form|library|xml|htm|html|page)$/) {
+	$r->print('<br /><input type=checkbox name="whatfile'.$inc.'" value="'.$master_seq[$i].'"> '.
+                  $master_seq_view[$i]);
+        $inc++;
+      }
+    }
+    $r->print(<<ENDMENUOUT2);
+<br />
+<input type="hidden" name="numberoffiles" value="$inc">
+<input type="hidden" name="phase" value="three">
+<input type="submit" value="Submit">
+ENDMENUOUT2
+
+}
+
+
 sub problem_choice_menu {
     my $r = shift;
     my $subdirtoprint = &Apache::lonnet::filelocation("",$ENV{'form.url'});
@@ -213,6 +275,7 @@
     }
     $r->print(<<ENDMENUOUT2);
 <br />
+<input type="hidden" name="papersize" value="$ENV{'form.papersize'}">
 <input type="hidden" name="numberofproblems" value="$i">
 <input type="hidden" name="phase" value="three">
 <input type="submit" value="Submit">
@@ -312,6 +375,9 @@
     for (my $i=0; $i<$ENV{'form.numberofproblems'};$i++) {
 	$what_to_print .= '<input type="hidden" name="whattoprint'.$i.'" value="'.$ENV{'form.whattoprint'.$i}.'">';
     }
+    for (my $i=0; $i<$ENV{'form.numberoffiles'};$i++) {
+	$what_to_print .= '<input type="hidden" name="whatfile'.$i.'" value="'.$ENV{'form.whatfile'.$i}.'">';
+    }
     $r->print(<<ENDMENUOUT);
     $what_to_print
 <input type="hidden" name="url" value="$ENV{'form.url'}">
@@ -320,6 +386,7 @@
 <input type="hidden" name="papersize" value="$ENV{'form.papersize'}">
 <input type="hidden" name="numberofstudents" value="$ENV{'form.numberofstudents'}">
 <input type="hidden" name="numberofproblems" value="$ENV{'form.numberofproblems'}">
+<input type="hidden" name="numberoffiles" value="$ENV{'form.numberoffiles'}">
 <input type="hidden" name="numberofcolumns" value="$ENV{'form.numberofcolumns'}">
 <input type="hidden" name="assignment" value="$ENV{'form.assignment'}">
 Define one column layout parameters: <br />
@@ -394,56 +461,42 @@
              $choice eq 'Standard LaTeX output for whole primary sequence') {
       #-- minimal sequence to which the current document belongs
         #-- where is the primary sequence containing file?
-	my $symbolic = &Apache::lonnet::symbread($ENV{'form.url'});
-	my @sequence = split('___',$symbolic);
-	my $primary_sequence = '/res/'.$sequence[0];   
-	my @master_seq = &coming_from_hash($primary_sequence,$sequence[0]);
+        my @master_seq = ();
+	for (my $i=0; $i<$ENV{'form.numberoffiles'};$i++) {
+	    if ($ENV{'form.whatfile'.$i}=~/\S/) {
+		push @master_seq,$ENV{'form.whatfile'.$i};
+	    }
+	}
         #-- produce an output string
 	my $flag_latex_header_remove = 'NO';
 	my $flag_page_in_sequence = 'NO';
 	for (my $i=0;$i<=$#master_seq;$i++) {
-            my ($urlp,$symb) = split /&&/, $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;
-		    $moreenv{'form.grade_target'}='tex';
-		    $moreenv{'form.textwidth'}=$LaTeXwidth;
-		    &Apache::lonnet::appenv(%moreenv);
-		    &Apache::lonnet::logthis("Trying to get $urlp with symb $symb");
-		    my $texversion=&Apache::lonnet::ssi($urlp,('symb'=>$symb));
-		    &Apache::lonnet::delenv('form.grade_target','form.textwidth');
-		    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';
-		}
-	    } elsif ($urlp =~ /\S+/) {
-              #prints problems, pages and any html/xml files
-		$selectionmade = 3;
-		my %moreenv;
-		$moreenv{'form.grade_target'}='tex';
-		&Apache::lonnet::appenv(%moreenv);
-		my $texversion=&Apache::lonnet::ssi($urlp,('symb'=>$symb));
-		&Apache::lonnet::delenv('form.grade_target');
-		if ($urlp =~ m/\.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';
-		} 
-		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';   
+              $selectionmade = 2;
+	    } elsif ($choice eq 'Standard LaTeX output for whole primary sequence') {
+              $selectionmade = 3;
 	    }
+	   my %moreenv;
+	   $moreenv{'form.grade_target'}='tex';
+	   $moreenv{'form.textwidth'}=$LaTeXwidth;
+	   &Apache::lonnet::appenv(%moreenv);
+	   &Apache::lonnet::logthis("Trying to get $urlp with symb $symb");
+	   my $texversion=&Apache::lonnet::ssi($urlp,('symb'=>$symb));
+	   &Apache::lonnet::delenv('form.grade_target','form.textwidth');
+	   if ($urlp =~ m/\.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';
+	   } 
+	   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';   
 	}
 	&Apache::lonnet::delenv('form.counter');
 	if ($flag_page_in_sequence eq 'YES') {$result =~ s/\\usepackage{calc}/\\usepackage{calc}\\usepackage{longtable}/;}	
@@ -1218,7 +1271,11 @@
     }
 #-- additional menu for class printing
      if ($ENV{'form.phase'} eq 'two') {
-	 if($ENV{'form.choice'} eq 'All class print') {
+	 if($ENV{'form.choice'} eq 'Standard LaTeX output for whole primary sequence') {
+	     &sequence_content_menu(0,$r);
+	 } elsif($ENV{'form.choice'} eq 'Standard LaTeX output for the primary sequence') {
+	     &sequence_content_menu(1,$r);
+	 } elsif($ENV{'form.choice'} eq 'All class print') {
 	     &additional_class_menu($r);
 	 } elsif($ENV{'form.choice'} eq 'Subdirectory print') {
 	     &problem_choice_menu($r);

--sakharuk1037304121--