--- loncom/interface/lonprintout.pm 2002/09/04 04:03:00 1.51.2.1 +++ loncom/interface/lonprintout.pm 2002/09/09 19:27:42 1.57 @@ -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.57 2002/09/09 19:27:42 sakharuk Exp $ # # Copyright Michigan State University Board of Trustees # @@ -43,7 +43,9 @@ use strict; use Apache::Constants qw(:common :http); use Apache::lonxml; use Apache::lonnet; +use Apache::loncommon; use Apache::inputtags; +use Apache::grades; use Apache::edit; use Apache::File(); use POSIX qw(strftime); @@ -59,7 +61,6 @@ sub headerform {
$ENV{'form.postdata'}

-

What do you want to print? Make a choice.


ENDHEADER } @@ -67,19 +68,25 @@ ENDHEADER sub menu_for_output { my $r = shift; $r->print(<What do you want to print? Make a choice.
Current document (you will print what you see on the screen)
ENDMENUOUT1 if ((not $ENV{'request.role'}=~m/^au\./) and (not $ENV{'request.role'}=~m/^ca\./)) { - $r->print(<print(< All problems from the primary sequence
The whole primary sequence (problems plus all html and xml files)
All problems from the top level sequence

ENDMENUOUT2 } + if ($ENV{'request.role'}=~m/^cc\./ or $ENV{'request.role'}=~m/^in\./ or $ENV{'request.role'}=~m/^ta\./) { + $r->print(< Print assignment (all problems from the primary sequence) for group of students

+ENDMENUOUT6 + } my $subdirtoprint = &Apache::lonnet::filelocation("",$ENV{'form.url'}); $subdirtoprint =~ s/\/[^\/]+$//; if (&Apache::lonnet::allowed('bre',$subdirtoprint) eq 'F') { @@ -101,26 +108,122 @@ ENDMENUOUT4 Number of columns:
- - - ENDMENUOUT5 } +sub additional_class_menu { + my $r = shift; + $r->print(< + + + +

Mark students which assignments you want to print

+ENDMENUOUT1 + my %courselist=&Apache::lonnet::dump( + 'classlist', + $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}, + $ENV{'course.'.$ENV{'request.course.id'}.'.num'}); + my $now=time; + $r->print(< + +  + +  + +

+ENDDISHEADER + my $i = 0; + foreach (sort keys %courselist) { + my ($end,$start)=split(/\:/,$courselist{$_}); + my $active=1; + if (($end) && ($now>$end)) { $active=0; } + if ($active) { + my ($sname,$sdom)=split(/\:/,$_); + my %reply=&Apache::lonnet::get('environment', + ['firstname','middlename','lastname','generation'], + $sdom,$sname); + my $section=&Apache::lonnet::usection + ($sdom,$sname,$ENV{'request.course.id'}); + $r->print( + '
'. + $reply{'firstname'}.' '. + $reply{'middlename'}.' '. + $reply{'lastname'}.' '. + $reply{'generation'}. + ' ('.$_.') '.$section); + $i++; + } + } + $r->print(< + + + +ENDMENUOUT2 +} + + +sub additional_print_menu { + my $r = shift; + my $what_to_print = ''; + for (my $i=0; $i<$ENV{'form.numberofstudents'};$i++) { + $what_to_print .= ''; + } + $r->print(< + + + + +Define page layout parameters:
+Width:
+Height:
+Left margin:
+ + + + + +ENDMENUOUT +} sub output_data { @@ -242,7 +345,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 +359,52 @@ ENDPART } } $result = &additional_cleanup($result); + } elsif ($choice eq 'All class print') { + #-- prints assignments for whole class or for selected students + my (@students,@st_output) = ((),()); + for (my $i=0; $i<$ENV{'form.numberofstudents'};$i++) { + if ($ENV{'form.whomtoprint'.$i}=~/:/) { + push @students,$ENV{'form.whomtoprint'.$i}; + } + } + #where is the primary sequence containing current resource (the same for all students)? + my $symbolic = &Apache::lonnet::symbread($ENV{'form.url'}); + $symbolic =~ m/([^_]+)_/; + my $primary_sequence = '/res/'.$1; + #opens and analyses the primary sequence file, produces the array of resources + my $sequence_file=&Apache::lonnet::filelocation("",$primary_sequence); + my $sequencefilecontents=&Apache::lonnet::getfile($sequence_file); + my @master_seq = &content_map($sequencefilecontents); + #loop over students + foreach my $person (@students) { + my $current_output = ''; + my ($usersection,$username,$userdomain) = split /:/,$person; + my $fullname = &Apache::grades::get_fullname($username,$userdomain); + #goes through all resources, checks if they are available for current student, and produces output + foreach my $curres (@master_seq) { + $curres =~ s/^"//; + $curres =~ s/"$//; + if ($curres=~/\w+/) { + my $symb = &Apache::lonnet::symbread($curres); + my ($map,$id,$res_url) = split(/___/,$symb); + if (&Apache::lonnet::allowed('bre',$res_url)) { + my $rendered = &Apache::loncommon::get_student_view($symb,$username,$userdomain, + $ENV{'request.course.id'},'tex'); + $current_output .= $rendered; + } + } + } + $current_output =~ s/\\begin{document}/\\begin{document}\\noindent\\parbox{\\minipagewidth}{\\noindent\\fbox{\\textbf{$fullname}}\\hskip 1\.4in } \\vskip 5 mm /; + $result .= $current_output; + } + + $result = &additional_cleanup($result); + + + + + + } elsif ($choice eq 'Subdirectory print') { my $subdirtoprint = &Apache::lonnet::filelocation("",$ENV{'form.url'}); $subdirtoprint =~ s/\/[^\/]+$//; @@ -307,7 +456,11 @@ ENDPART $courseidinfo = $ENV{'course.physnet_'.$1.'.description'}; # $result =~ s/\\documentclass\[letterpaper\]{article}/\\documentclass\[twocolumn\]{article}/; $result =~ s/\\documentclass\[letterpaper\]{article}/\\documentclass{article}/; - $result =~ s/\\begin{document}/\\textheight 25\.9cm\\oddsidemargin = -0\.57in\\evensidemargin = -0\.57in\\textwidth= 9cm\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/$number_of_columns-0\.2cm}\\renewcommand{\\ref}{\\keephidden\}\\begin{document}\\voffset=-1\.8cm\\setcounter{page}{1}\\parbox{\\minipagewidth}{\\noindent\\fbox{\\textbf{$ENV{'environment.firstname'} $ENV{'environment.lastname'}}}\\hskip 1\.4in $courseidinfo} \\vskip 5 mm /; + if ($choice ne 'All class print') { + $result =~ s/\\begin{document}/\\textheight 25\.9cm\\oddsidemargin = -0\.57in\\evensidemargin = -0\.57in\\textwidth= 9cm\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/$number_of_columns-0\.2cm}\\renewcommand{\\ref}{\\keephidden\}\\begin{document}\\voffset=-1\.8cm\\setcounter{page}{1}\\parbox{\\minipagewidth}{\\noindent\\fbox{\\textbf{$ENV{'environment.firstname'} $ENV{'environment.lastname'}}}\\hskip 1\.4in $courseidinfo} \\vskip 5 mm /; + } else { + $result =~ s/\\begin{document}/\\textheight 25\.9cm\\oddsidemargin = -0\.57in\\evensidemargin = -0\.57in\\textwidth= 9cm\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/$number_of_columns-0\.2cm}\\renewcommand{\\ref}{\\keephidden\}\\begin{document}\\voffset=-1\.8cm\\setcounter{page}{1} \\vskip 5 mm /; + } $result =~ s/\\includegraphics{/\\includegraphics\[width=9\.0 cm\]{/g; # $result =~ s/\\includegraphics{/\\includegraphics\[width=\\textwidth\]{/g; # $result =~ s/(\\end{document})/\\newline\\noindent\\makebox\[9.0cm\]\[b\]{\\hrulefill}\\newline\\noindent\\tiny Dept\. of Physics and Astronomy, MSU\\makebox\[1.5cm\]\[b\]{\\hfill}LON-CAPA\\copyright MSU GNU\/GPL $1/; @@ -317,6 +470,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,'