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

sakharuk lon-capa-cvs@mail.lon-capa.org
Fri, 10 Oct 2003 13:38:26 -0000


sakharuk		Fri Oct 10 09:38:26 2003 EDT

  Modified files:              
    /loncom/interface	lonprintout.pm 
  Log:
  Bug 2278 (Can't print HTML pages for selected student) is fixed. But I've found a few far more serious issues in this connection. Everything looks good for the somplest html/xml pages which can be used for the first page in exam, for example. But if you put there any resource with its own style file (particular example - CBI resources) you immediately will face the problem of redefinition of headers and probably footers in the output. Indeed, any CBI document contain its own definition of header which overwites the standard header with students info. I need to spend some time to resolve this situation. There couple of more but they are more simple and seems to me more transparent (obvious). 
  
  
Index: loncom/interface/lonprintout.pm
diff -u loncom/interface/lonprintout.pm:1.253 loncom/interface/lonprintout.pm:1.254
--- loncom/interface/lonprintout.pm:1.253	Thu Oct  9 15:15:25 2003
+++ loncom/interface/lonprintout.pm	Fri Oct 10 09:38:26 2003
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Printout
 #
-# $Id: lonprintout.pm,v 1.253 2003/10/09 19:15:25 sakharuk Exp $
+# $Id: lonprintout.pm,v 1.254 2003/10/10 13:38:26 sakharuk Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -861,6 +861,8 @@
 		$selectionmade = 3;
 	    } elsif ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_problems') {
 		$selectionmade = 4;
+	    } elsif ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'select_sequences') {
+		$selectionmade = 7;
 	    }
 	    $form{'symb'}=$master_seq[$i];
 	    my ($sequence)=&Apache::lonnet::decode_symb($master_seq[$i]);
@@ -914,9 +916,13 @@
 	&Apache::lonnet::delenv('form.counter');
 	if ($flag_page_in_sequence eq 'YES') {$result =~ s/\\usepackage{calc}/\\usepackage{calc}\\usepackage{longtable}/;}	
 	$result .= '\end{document}';
-     } elsif ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'problems_for_students') { 
+     } elsif (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'problems_for_students') || ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'resources_for_students')) { 
      #-- prints assignments for whole class or for selected students  
-	 $selectionmade=5;
+	 if ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'problems_for_students') {
+	     $selectionmade=5;
+	 } elsif ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'resources_for_students') {
+	     $selectionmade=8;
+	 }
 	 my @students=split /\|\|\|/, $helper->{'VARS'}->{'STUDENTS'};
 	 my @master_seq=split /\|\|\|/, $helper->{'VARS'}->{'RESOURCES'};
 	 #loop over students
@@ -936,7 +942,7 @@
 	    &Apache::lonnet::delenv('form.counter');
 	    &Apache::lonxml::init_counter();
 	    foreach my $curresline (@master_seq)  {
-		if ($curresline=~ m/\.(problem|exam|quiz|assess|survey|form|library)$/) {
+		if ((($curresline=~ m/\.(problem|exam|quiz|assess|survey|form|library)$/) && ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'problems_for_students')) || ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'resources_for_students')) {
 		    my ($map,$id,$res_url) = &Apache::lonnet::decode_symb($curresline);
 		    if (&Apache::lonnet::allowed('bre',$res_url)) {
 			my $rendered = &Apache::loncommon::get_student_view($curresline,$username,$userdomain,
@@ -1263,7 +1269,7 @@
     my $paramHash;
 
     if ($resourceTitle) {
-        push @{$printChoices}, ["<b>$resourceTitle</b> (what you just saw on the screen)", 'current_document', 'PAGESIZE'];
+        push @{$printChoices}, ["<b><i>$resourceTitle</i></b> (what you just saw on the screen)", 'current_document', 'PAGESIZE'];
     }
 
 #    $r->print($helper->{VARS}->{'postdata'});
@@ -1289,9 +1295,9 @@
 	$helper->{VARS}->{'postdata'} &&
 	$helper->{VARS}->{'assignment'}) {
         # Allow problems from sequence
-        push @{$printChoices}, ["<b>Problems</b> in $sequenceTitle", 'map_problems', 'CHOOSE_PROBLEMS'];
+        push @{$printChoices}, ["<b>Problems</b> in <b><i>$sequenceTitle</i></b>", 'map_problems', 'CHOOSE_PROBLEMS'];
         # Allow all resources from sequence
-        push @{$printChoices}, ["<b>Resources</b> in $sequenceTitle", 'map_problems_pages', 'CHOOSE_PROBLEMS_HTML'];
+        push @{$printChoices}, ["<b>Resources</b> in <b><i>$sequenceTitle</i></b>", 'map_problems_pages', 'CHOOSE_PROBLEMS_HTML'];
 
         my $helperFragment = <<HELPERFRAGMENT;
   <state name="CHOOSE_PROBLEMS" title="Select Problem(s) to print">
@@ -1321,9 +1327,9 @@
     # If the user is priviledged, allow them to print all 
     # problems in the course, optionally for selected students
     if ($userPriviledged && ($helper->{VARS}->{'postdata'}=~/\/res\//)) { 
-        push @{$printChoices}, ['Problems from <b>entire course</b>', 'all_problems', 'ALL_PROBLEMS'];
+        push @{$printChoices}, ['<b>Problems</b> from <b>entire course</b>', 'all_problems', 'ALL_PROBLEMS'];
 	if ($helper->{VARS}->{'assignment'}) {
-	    push @{$printChoices}, ["Problems from $sequenceTitle for <b>selected students</b>", 'problems_for_students', 'CHOOSE_STUDENTS'];
+	    push @{$printChoices}, ["<b>Problems</b> from <b><i>$sequenceTitle</i></b> for <b>selected students</b>", 'problems_for_students', 'CHOOSE_STUDENTS'];
 	}
 
         &Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_STUDENTS);
@@ -1342,9 +1348,9 @@
     <student multichoice='1' variable="STUDENTS" nextstate="PAGESIZE" />
     <message><br /><big><i><b>Select resources for the assignment</b></i></big><br /></message>
     <resource variable="RESOURCES" multichoice="1" addstatus="1">
-      <filterfunc>return $isProblem</filterfunc>
+      <filterfunc>return $isProblem;</filterfunc>
       <mapurl>$map</mapurl>
-      <valuefunc>return $symbFilter</valuefunc>
+      <valuefunc>return $symbFilter;</valuefunc>
       </resource>
     <message><br /><big><i><b>How should the results be printed?</b></i></big><br /></message>
     <choices variable="EMPTY_PAGES">
@@ -1355,11 +1361,34 @@
       </choices>
     </state>
 CHOOSE_STUDENTS
+
+	if ($helper->{VARS}->{'assignment'}) {
+	    push @{$printChoices}, ["<b>Resources</b> from <b><i>$sequenceTitle</i></b> for <b>selected students</b>", 'resources_for_students', 'CHOOSE_STUDENTS1'];
+	}
+        &Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_STUDENTS1);
+  <state name="CHOOSE_STUDENTS1" title="Select Students and Resources">
+    <student multichoice='1' variable="STUDENTS" nextstate="PAGESIZE" />
+    <message><br /><big><i><b>Select resources for the assignment</b></i></big><br /></message>
+    <resource variable="RESOURCES" multichoice="1" addstatus="1">
+      <filterfunc>return $isNotMap;</filterfunc>
+      <mapurl>$map</mapurl>
+      <valuefunc>return $symbFilter;</valuefunc>
+      </resource>
+    <message><br /><big><i><b>How should the results be printed?</b></i></big><br /></message>
+    <choices variable="EMPTY_PAGES">
+      <choice computer='0'>Start each student\'s assignment on a new page/column (add a pagefeed after each assignment)</choice>
+      <choice computer='1'>Add one empty page/column after each student\'s assignment</choice>
+      <choice computer='2'>Add two empty pages/column after each student\'s assignment</choice>
+      <choice computer='3'>Add three empty pages/column after each student\'s assignment</choice>
+      </choices>
+    </state>
+CHOOSE_STUDENTS1
+
     }
 
     # FIXME: That RE should come from a library somewhere.
     if ((((&Apache::lonnet::allowed('bre',$subdir) eq 'F') and ($helper->{VARS}->{'postdata'}=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)/)) or defined $helper->{'VARS'}->{'construction'}) and $ENV{'request.role.adv'} and $subdir ne '/home/httpd/html/res/') {    
-        push @{$printChoices}, ["Problems from current subdirectory <b>$subdir</b>", 'problems_from_directory', 'CHOOSE_FROM_SUBDIR'];
+        push @{$printChoices}, ["<b>Problems</b> from current subdirectory <b><i>$subdir</i></b>", 'problems_from_directory', 'CHOOSE_FROM_SUBDIR'];
 
         my $f = '$filename';
         my $xmlfrag = <<CHOOSE_FROM_SUBDIR;
@@ -1385,7 +1414,7 @@
     # Allow the user to select any sequence in the course, feed it to
     # another resource selector for that sequence
     if (!$helper->{VARS}->{'construction'}) {
-	push @$printChoices, ["Resources from <b>selected sequence</b> in course",
+	push @$printChoices, ["<b>Resources</b> from <b>selected sequence</b> in course",
 			      'select_sequences', 'CHOOSE_SEQUENCE'];
 	my $escapedSequenceName = $helper->{VARS}->{'SEQUENCE'};
 	#Escape apostrophes and backslashes for Perl