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

sakharuk lon-capa-cvs@mail.lon-capa.org
Fri, 30 Aug 2002 20:41:09 -0000


sakharuk		Fri Aug 30 16:41:09 2002 EDT

  Modified files:              
    /loncom/interface	lonprintout.pm 
  Log:
  Start to work with student classlist.
  
  
Index: loncom/interface/lonprintout.pm
diff -u loncom/interface/lonprintout.pm:1.51 loncom/interface/lonprintout.pm:1.52
--- loncom/interface/lonprintout.pm:1.51	Wed Aug 14 16:38:04 2002
+++ loncom/interface/lonprintout.pm	Fri Aug 30 16:41:09 2002
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Printout
 #
-# $Id: lonprintout.pm,v 1.51 2002/08/14 20:38:04 sakharuk Exp $
+# $Id: lonprintout.pm,v 1.52 2002/08/30 20:41:09 sakharuk Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -47,6 +47,7 @@
 use Apache::edit;
 use Apache::File();
 use POSIX qw(strftime);
+use Apache::loncoursedata;
 
 
 sub headerform {
@@ -73,13 +74,18 @@
 (you will print what you see on the screen)<br />
 ENDMENUOUT1
     if ((not $ENV{'request.role'}=~m/^au\./) and (not $ENV{'request.role'}=~m/^ca\./)) {
-    $r->print(<<ENDMENUOUT2);
+	$r->print(<<ENDMENUOUT2);
 <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 />
 ENDMENUOUT2
     }
+    if ($ENV{'request.role'}=~m/^cc\./ or $ENV{'request.role'}=~m/^in\./ or $ENV{'request.role'}=~m/^ta\./) { 
+	$r->print(<<ENDMENUOUT6);
+  <input type="radio" name="choice" value="All class print">  Print assignment for students in class<br />
+ENDMENUOUT6
+    }
       my $subdirtoprint = &Apache::lonnet::filelocation("",$ENV{'form.url'});
       $subdirtoprint =~ s/\/[^\/]+$//;
       if (&Apache::lonnet::allowed('bre',$subdirtoprint) eq 'F') {
@@ -114,13 +120,59 @@
 </table>
 </br> 
 <input type="submit" value="Submit your choice">
-</form>
-</body>
-</html>
 ENDMENUOUT5
 }
 
 
+sub additional_class_menu {
+    my $r = shift;
+    $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="numberofcolumns" value="$ENV{'form.numberofcolumns'}">
+<h1>Mark students which assignments you want to print</h1>
+ENDMENUOUT1
+    my $c = $r->connection;    
+    my %cache;
+    my $courseID=$ENV{'request.course.id'};
+    my $classlist=&Apache::loncoursedata::DownloadClasslist($courseID,
+                                                $cache{'ClasslistTimestamp'},
+                                                $c);
+    foreach (keys(%$classlist)) {
+        if(/^(con_lost|error|no_such_host)/i) {
+            untie(%cache);
+            return "Error getting student data.";
+        }
+    }
+    my $classlistaa = '';
+    foreach my $st (keys(%$classlist)) {
+	$classlistaa .= ' SSS '.$st.' => '.$$classlist{$st}.' FFF '."\r\n";
+    }
+
+    $r->print(<<ENDMENUOUT2);
+    $classlistaa <br />
+<input type="hidden" name="phase" value="three">
+<input type="submit" value="Submit">
+ENDMENUOUT2
+}
+
+
+sub additional_print_menu { 
+    my $r = shift;
+    $r->print(<<ENDMENUOUT);
+<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="numberofcolumns" value="$ENV{'form.numberofcolumns'}">
+Enter width of the page: <input type="text" name="width" width="10" value="9cm"> <br />
+<input type="hidden" name="phase" value="four">
+<input type="submit" value="Submit">
+</form>
+</body>
+</html>
+ENDMENUOUT
+}
 
 
 sub output_data {
@@ -242,7 +294,7 @@
 	if ($file_seq[-1]=~m/REMOVE IT PLEASE/) {
 	    pop @file_seq;
 	}
-#-- produce an output string
+        #-- produce an output string
 	for (my $i=0;$i<=$#file_seq;$i++) {
             my $urlp = $file_seq[$i];
 	    $urlp=~s/\/home\/httpd\/html//;	    
@@ -256,6 +308,10 @@
 	    }
 	}	    
 	$result = &additional_cleanup($result);
+    } elsif ($choice eq 'All class print') { 
+
+
+
     } elsif ($choice eq 'Subdirectory print') {      
 	my $subdirtoprint = &Apache::lonnet::filelocation("",$ENV{'form.url'});
 	$subdirtoprint =~ s/\/[^\/]+$//;
@@ -317,6 +373,10 @@
         $result =~ s/(\\end{longtable}\s*)\\newline/$1/g;
 	$result =~ s/\$number_of_columns/$number_of_columns/g;
     }
+    #changes page's parameters for the one column output 
+    if ($ENV{'form.numberofcolumns'} == 1) {
+	$result =~ s/\\textwidth= 9cm/\\textwidth= $ENV{'form.width'}/;
+    }
 #-- LaTeX corrections     
     my $first_comment = index($result,'<!--',0);
     while ($first_comment != -1) {
@@ -325,7 +385,6 @@
 	$first_comment = index($result,'<!--',$first_comment);
     }
     $result =~ s/^\s+$//gm; #remove empty lines
-    $result =~ s/\s%/\\%/g;   #corrects %
     $result =~ s/(\s)+/$1/g; #removes more than one empty space
     $result =~ s/\\\\\s*\\vskip/\\vskip/gm;
     $result =~ s/\\\\\s*\\noindent\s*(\\\\)+/\\\\\\noindent /g;
@@ -779,8 +838,24 @@
     unless  ($ENV{'form.phase'}) {
 	&menu_for_output($r);
     }
+#-- additional menu for class printing
+     if ($ENV{'form.phase'} eq 'two') {
+	 if($ENV{'form.choice'} eq 'All class print') {
+	     &additional_class_menu($r);
+	 } else {
+	     $ENV{'form.phase'} = 'three';
+	 }
+     }
+#-- additional menu for page layout (one column case)
+    if ($ENV{'form.phase'} eq 'three') {
+	if($ENV{'form.numberofcolumns'} == 1) {
+	    &additional_print_menu($r);
+	} else {
+	    $ENV{'form.phase'} = 'four';
+	}
+    }
 #-- core part 
-    if ($ENV{'form.phase'} eq 'two') {
+    if ($ENV{'form.phase'} eq 'four') {
 	&output_data($r);
     }
     return OK;