--- loncom/interface/lonprintout.pm 2002/09/05 19:35:00 1.55 +++ loncom/interface/lonprintout.pm 2002/09/10 20:14:35 1.59 @@ -1,7 +1,7 @@ # The LearningOnline Network # Printout # -# $Id: lonprintout.pm,v 1.55 2002/09/05 19:35:00 sakharuk Exp $ +# $Id: lonprintout.pm,v 1.59 2002/09/10 20:14:35 sakharuk Exp $ # # Copyright Michigan State University Board of Trustees # @@ -45,7 +45,6 @@ use Apache::lonxml; use Apache::lonnet; use Apache::loncommon; use Apache::inputtags; -use Apache::loncoursedata; use Apache::grades; use Apache::edit; use Apache::File(); @@ -62,14 +61,17 @@ sub headerform {
$ENV{'form.postdata'}

-

What do you want to print? Make a choice.


ENDHEADER } sub menu_for_output { my $r = shift; + my $symbolic = &Apache::lonnet::symbread($ENV{'form.postdata'}); +# $symbolic =~ m/([^_]+)_/; +# my $primary_sequence = '/res/'.$1; $r->print(<What do you want to print? Make a choice.
Current document @@ -79,13 +81,13 @@ ENDMENUOUT1 $r->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

+ All problems from the top level sequence
+
+ Print assignment (all problems from the primary sequence) for group of students

ENDMENUOUT6 } my $subdirtoprint = &Apache::lonnet::filelocation("",$ENV{'form.url'}); @@ -107,17 +109,23 @@ ENDMENUOUT4   Number of columns: + + Paper size (format [width x height]): +
@@ -126,6 +134,77 @@ ENDMENUOUT5 } +sub problem_choice_menu { + my $r = shift; + my $subdirtoprint = &Apache::lonnet::filelocation("",$ENV{'form.url'}); + $subdirtoprint =~ s/\/[^\/]+$//; + my @list_of_files = (); + if ($ENV{'request.role'}=~m/^au\./ or $ENV{'request.role'}=~m/^ca\./) { + $subdirtoprint =~ s/^[^~]*~(\w+)\//\/home\/$1\/public_html\//; + } else { + $subdirtoprint =~ s/.*(\/res\/)/$1/; + } + my @content_directory = (); + if ($ENV{'request.role'}=~m/^au\./ or $ENV{'request.role'}=~m/^ca\./) { + @content_directory = &Apache::lonnet::dirlist($subdirtoprint,$ENV{'user.domain'}, $ENV{'user.name'},''); + } else { + @content_directory = &Apache::lonnet::dirlist($subdirtoprint); + } + for (my $iy=0;$iy<=$#content_directory;$iy++) { + my @tempo_array = split(/&/,$content_directory[$iy]); + if ($tempo_array[0] =~ m/^[^\.]+\.(problem|exam|quiz|assess|survey|form|library)$/) { + push(@list_of_files,$tempo_array[0]); + } + } + $subdirtoprint =~ s/\/$//; + for (my $i=0;$i<=$#list_of_files;$i++) { + $list_of_files[$i] = $subdirtoprint.'/'.$list_of_files[$i]; + } + $r->print(< + + + +

Mark problems which you want to print

+ +  + +

+ENDMENUOUT1 + my $i; + foreach my $file (@list_of_files) { + $r->print('
'. + $file); + $i++; + } + $r->print(< + + + +ENDMENUOUT2 +} + + sub additional_class_menu { my $r = shift; $r->print(<

Mark students which assignments you want to print

ENDMENUOUT1 - my $c = $r->connection; - my %cache; - my $courseID = $ENV{'request.course.id'}; - my $classlist = &Apache::loncoursedata::DownloadClasslist($courseID,$cache{'ClasslistTimestamp'},$c); - &Apache::loncoursedata::ProcessClasslist(\%cache,$classlist,$courseID,$c); - my @all_students = split(':::',$cache{'NamesOfStudents'}); - my @active_students = (); - foreach my $student (@all_students) { - if ($cache{$student.':Status'} eq 'Active') { - push @active_students,$student; - } + 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(< + function checkall() { + for (i=0; i +  + +  + +

+ENDDISHEADER my $i = 0; - foreach my $student (@active_students) { - $what_to_print .= ''.$cache{$student.':fullname'}.''; -# $what_to_print .= ''.$cache{$student.':fullname'}.''; - $i++; + 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++; + } } - $what_to_print .= ''; $r->print(< +
@@ -170,14 +292,21 @@ sub additional_print_menu { for (my $i=0; $i<$ENV{'form.numberofstudents'};$i++) { $what_to_print .= ''; } + for (my $i=0; $i<$ENV{'form.numberofproblems'};$i++) { + $what_to_print .= ''; + } $r->print(< + -Enter width of the page:
+Define page layout parameters:
+Width:
+Height:
+Left margin:
@@ -204,9 +333,11 @@ ENDPART my $laystyle = 'book'; my $result = ''; my $number_of_columns = 1; + my $selectionmade = ''; if ($choice eq 'Standard LaTeX output for current document') { #-- single document - problem, page, html, xml + $selectionmade = 1; my %moreenv; $moreenv{'form.grade_target'}='tex'; if ($ENV{'request.role'}=~m/^au\./ or $ENV{'request.role'}=~m/^ca\./) { @@ -226,8 +357,7 @@ ENDPART #-- minimal sequence to which the current document belongs #-- where is the primary sequence containing file? my $symbolic = &Apache::lonnet::symbread($ENV{'form.url'}); - $_ = $symbolic; - m/([^_]+)_/; + $symbolic =~ m/([^_]+)_/; my $primary_sequence = '/res/'.$1; #-- open and analyses the primary sequence my $sequence_file=&Apache::lonnet::filelocation("",$primary_sequence); @@ -240,6 +370,7 @@ ENDPART $_ = $1; my $urlp = $1; if ($choice eq 'Standard LaTeX output for the primary sequence') { + $selectionmade = 2; if ($urlp =~ m/\.(problem|exam|quiz|assess|survey|form|library)/) { my %moreenv; $moreenv{'form.grade_target'}='tex'; @@ -249,6 +380,7 @@ ENDPART $result .= $texversion; } } elsif ($urlp =~ /\S+/) { + $selectionmade = 3; my %moreenv; $moreenv{'form.grade_target'}='tex'; &Apache::lonnet::appenv(%moreenv); @@ -260,6 +392,7 @@ ENDPART $result = &additional_cleanup($result); } elsif ($choice eq 'Standard LaTeX output for the top level sequence') { # where is the main sequence of the course? + $selectionmade = 4; my $main_seq = '/res/'.$ENV{'request.course.uri'}; my $file=&Apache::lonnet::filelocation("",$main_seq); my $filecontents=&Apache::lonnet::getfile($file); @@ -322,6 +455,7 @@ ENDPART $result = &additional_cleanup($result); } elsif ($choice eq 'All class print') { #-- prints assignments for whole class or for selected students + $selectionmade = 5; my (@students,@st_output) = ((),()); for (my $i=0; $i<$ENV{'form.numberofstudents'};$i++) { if ($ENV{'form.whomtoprint'.$i}=~/:/) { @@ -339,7 +473,7 @@ ENDPART #loop over students foreach my $person (@students) { my $current_output = ''; - my ($username,$userdomain) = split /:/,$person; + 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) { @@ -358,66 +492,53 @@ ENDPART $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/\/[^\/]+$//; - my @list_of_files = (); - if ($ENV{'request.role'}=~m/^au\./ or $ENV{'request.role'}=~m/^ca\./) { - $subdirtoprint =~ s/^[^~]*~(\w+)\//\/home\/$1\/public_html\//; - } else { - $subdirtoprint =~ s/.*(\/res\/)/$1/; - } - my @content_directory = (); - if ($ENV{'request.role'}=~m/^au\./ or $ENV{'request.role'}=~m/^ca\./) { - @content_directory = &Apache::lonnet::dirlist($subdirtoprint,$ENV{'user.domain'}, $ENV{'user.name'},''); - } else { - @content_directory = &Apache::lonnet::dirlist($subdirtoprint); - } - for (my $iy=0;$iy<=$#content_directory;$iy++) { - my @tempo_array = split(/&/,$content_directory[$iy]); - if ($tempo_array[0] =~ m/^[^\.]+\.(problem|exam|quiz|assess|survey|form|library)$/) { - push(@list_of_files,$tempo_array[0]); + #prints selected problems from the subdirectory + $selectionmade = 6; + my @list_of_files = (); + for (my $i=0; $i<$ENV{'form.numberofproblems'};$i++) { + if ($ENV{'form.whattoprint'.$i}=~/^\//) { + push @list_of_files,$ENV{'form.whattoprint'.$i}; } } - $subdirtoprint =~ s/\/$//; for (my $i=0;$i<=$#list_of_files;$i++) { - my $urlp = $subdirtoprint.'/'.$list_of_files[$i]; - my %moreenv; - $moreenv{'form.grade_target'}='tex'; - &Apache::lonnet::appenv(%moreenv); - if ($ENV{'request.role'}=~m/^au\./ or $ENV{'request.role'}=~m/^ca\./) { - $urlp =~ s/\/home\/([^\/]*)\/public_html/\/~$1/; - } - my $texversion=&Apache::lonnet::ssi($urlp); - &Apache::lonnet::delenv('form.grade_target'); - $texversion =~ s/(\\begin{document})/$1 {\\tiny\\begin{verbatim}$urlp\\end{verbatim}}/; - $result .= $texversion; + my $urlp = $list_of_files[$i]; + if ($urlp=~/\//) { + my %moreenv; + $moreenv{'form.grade_target'}='tex'; + &Apache::lonnet::appenv(%moreenv); + if ($ENV{'request.role'}=~m/^au\./ or $ENV{'request.role'}=~m/^ca\./) { + $urlp =~ s/\/home\/([^\/]*)\/public_html/\/~$1/; + } + my $texversion=&Apache::lonnet::ssi($urlp); + &Apache::lonnet::delenv('form.grade_target'); + $texversion =~ s/(\\begin{document})/$1 {\\tiny\\begin{verbatim}$urlp\\end{verbatim}}/; + $result .= $texversion; + } } - $result = &additional_cleanup($result); - - + $result = &additional_cleanup($result); } #-- corrections for the different page formats if ($layout eq 'CBI' and $numberofcolumns eq '1') { + $result =~ s/\\begin{document}/\\setlength{\\oddsidemargin}{-40pt}\\setlength{\\evensidemargin}{-60pt}\\setlength{\\topmargin}{200pt}\\setlength{\\textwidth}{4\.4in}\\setlength{\\textheight}{6\.8in}\\setlength{\\parindent}{20pt}\\setlength{\\marginparwidth}{90pt}\\setlength{\\textfloatsep}{8pt plus 2\.0pt minus 4\.0pt} \\begin{document}/; + $result =~ s/\$number_of_columns/$number_of_columns/g; + $laystyle = 'album'; } elsif ($layout eq 'CBI' and $numberofcolumns eq '2') { $result =~ s/\\begin{document}/\\setlength{\\oddsidemargin}{-40pt}\\setlength{\\evensidemargin}{-60pt}\\setlength{\\topmargin}{200pt}\\setlength{\\textwidth}{4\.4in}\\setlength{\\textheight}{6\.8in}\\setlength{\\parindent}{20pt}\\setlength{\\marginparwidth}{90pt}\\setlength{\\textfloatsep}{8pt plus 2\.0pt minus 4\.0pt} \\begin{document}/; + $result =~ s/\$number_of_columns/$number_of_columns/g; $laystyle = 'album'; } elsif ($layout eq 'CAPA') { my $courseidinfo = $ENV{'request.role'}; $_ = $courseidinfo; m/.*\/(.*)/; $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/; @@ -430,6 +551,9 @@ ENDPART #changes page's parameters for the one column output if ($ENV{'form.numberofcolumns'} == 1) { $result =~ s/\\textwidth= 9cm/\\textwidth= $ENV{'form.width'}/; + $result =~ s/\\textheight 25\.9cm/\\textheight $ENV{'form.height'}/; + $result =~ s/\\evensidemargin = -0\.57in/\\evensidemargin= $ENV{'form.leftmargin'}/; + $result =~ s/\\oddsidemargin = -0\.57in/\\oddsidemargin= $ENV{'form.leftmargin'}/; } #-- LaTeX corrections my $first_comment = index($result,'