--- loncom/interface/lonprintout.pm 2002/09/04 04:03:00 1.51.2.1 +++ loncom/interface/lonprintout.pm 2002/08/30 20:41:09 1.52 @@ -1,7 +1,7 @@ # The LearningOnline Network # Printout # -# $Id: lonprintout.pm,v 1.51.2.1 2002/09/04 04:03:00 albertel 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::inputtags; use Apache::edit; use Apache::File(); use POSIX qw(strftime); +use Apache::loncoursedata; sub headerform { @@ -73,13 +74,18 @@ sub menu_for_output { (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 @@ ENDMENUOUT4 </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 { @@ -184,7 +236,7 @@ ENDPART &Apache::lonnet::delenv('form.grade_target'); $result .= $texversion; } - } elsif ($urlp =~ /\S+/) { + } else { my %moreenv; $moreenv{'form.grade_target'}='tex'; &Apache::lonnet::appenv(%moreenv); @@ -242,7 +294,7 @@ ENDPART 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 @@ ENDPART } } $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 @@ ENDPART $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 @@ ENDPART $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 @@ sub handler { 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;