version 1.52, 2002/08/30 20:41:09
|
version 1.58, 2002/09/09 20:20:40
|
Line 43 use strict;
|
Line 43 use strict;
|
use Apache::Constants qw(:common :http); |
use Apache::Constants qw(:common :http); |
use Apache::lonxml; |
use Apache::lonxml; |
use Apache::lonnet; |
use Apache::lonnet; |
|
use Apache::loncommon; |
use Apache::inputtags; |
use Apache::inputtags; |
|
use Apache::grades; |
use Apache::edit; |
use Apache::edit; |
use Apache::File(); |
use Apache::File(); |
use POSIX qw(strftime); |
use POSIX qw(strftime); |
use Apache::loncoursedata; |
|
|
|
|
|
sub headerform { |
sub headerform { |
Line 60 sub headerform {
|
Line 61 sub headerform {
|
<body bgcolor="FFFFFF"> |
<body bgcolor="FFFFFF"> |
<form method="post" enctype="multipart/form-data" action="/adm/printout" name="printform"> |
<form method="post" enctype="multipart/form-data" action="/adm/printout" name="printform"> |
<tt>$ENV{'form.postdata'}</tt><p> |
<tt>$ENV{'form.postdata'}</tt><p> |
<h1>What do you want to print? Make a choice.</h1><br /> |
|
ENDHEADER |
ENDHEADER |
} |
} |
|
|
Line 68 ENDHEADER
|
Line 68 ENDHEADER
|
sub menu_for_output { |
sub menu_for_output { |
my $r = shift; |
my $r = shift; |
$r->print(<<ENDMENUOUT1); |
$r->print(<<ENDMENUOUT1); |
|
<h1>What do you want to print? Make a choice.</h1><br /> |
<input type="hidden" name="phase" value="two"> |
<input type="hidden" name="phase" value="two"> |
<input type="hidden" name="url" value="$ENV{'form.postdata'}"> |
<input type="hidden" name="url" value="$ENV{'form.postdata'}"> |
<input type="radio" name="choice" value="Standard LaTeX output for current document" checked> Current document |
<input type="radio" name="choice" value="Standard LaTeX output for current document" checked> Current document |
Line 83 ENDMENUOUT2
|
Line 84 ENDMENUOUT2
|
} |
} |
if ($ENV{'request.role'}=~m/^cc\./ or $ENV{'request.role'}=~m/^in\./ or $ENV{'request.role'}=~m/^ta\./) { |
if ($ENV{'request.role'}=~m/^cc\./ or $ENV{'request.role'}=~m/^in\./ or $ENV{'request.role'}=~m/^ta\./) { |
$r->print(<<ENDMENUOUT6); |
$r->print(<<ENDMENUOUT6); |
<input type="radio" name="choice" value="All class print"> Print assignment for students in class<br /> |
<input type="radio" name="choice" value="All class print"> Print assignment (all problems from the primary sequence) for group of students<br /><br /> |
ENDMENUOUT6 |
ENDMENUOUT6 |
} |
} |
my $subdirtoprint = &Apache::lonnet::filelocation("",$ENV{'form.url'}); |
my $subdirtoprint = &Apache::lonnet::filelocation("",$ENV{'form.url'}); |
Line 107 ENDMENUOUT4
|
Line 108 ENDMENUOUT4
|
Number of columns: <select name="numberofcolumns"> |
Number of columns: <select name="numberofcolumns"> |
<option selected> 1 </option> |
<option selected> 1 </option> |
<option> 2 </option> |
<option> 2 </option> |
<option> 3 </option> |
|
<option> 4 </option> |
|
<option> 5 </option> |
|
<option> 6 </option> |
|
<option> 7 </option> |
|
<option> 8 </option> |
|
<option> 9 </option> |
|
</select> |
</select> |
</td> |
</td> |
</tr> |
</tr> |
Line 124 ENDMENUOUT5
|
Line 118 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(<<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 problems which you want to print</h1> |
|
<script> |
|
function checkall() { |
|
for (i=0; i<document.forms.printform.elements.length; i++) { |
|
if |
|
(document.forms.printform.elements[i].name.indexOf('whattoprint')==0) { |
|
document.forms.printform.elements[i].checked=true; |
|
} |
|
} |
|
} |
|
|
|
|
|
function uncheckall() { |
|
for (i=0; i<document.forms.printform.elements.length; i++) { |
|
if |
|
(document.forms.printform.elements[i].name.indexOf('whattoprint')==0) { |
|
document.forms.printform.elements[i].checked=false; |
|
} |
|
} |
|
} |
|
</script> |
|
<input type=button onClick="checkall()" value="Check for All"> |
|
<input type=button onClick="uncheckall()" value="Check for None"> |
|
<p> |
|
ENDMENUOUT1 |
|
my $i; |
|
foreach my $file (@list_of_files) { |
|
$r->print('<br /><input type=checkbox name="whattoprint'.$i.'" value="'.$file.'"> '. |
|
$file); |
|
$i++; |
|
} |
|
$r->print(<<ENDMENUOUT2); |
|
<br /> |
|
<input type="hidden" name="numberofproblems" value="$i"> |
|
<input type="hidden" name="phase" value="three"> |
|
<input type="submit" value="Submit"> |
|
ENDMENUOUT2 |
|
} |
|
|
|
|
sub additional_class_menu { |
sub additional_class_menu { |
my $r = shift; |
my $r = shift; |
$r->print(<<ENDMENUOUT1); |
$r->print(<<ENDMENUOUT1); |
Line 133 sub additional_class_menu {
|
Line 198 sub additional_class_menu {
|
<input type="hidden" name="numberofcolumns" value="$ENV{'form.numberofcolumns'}"> |
<input type="hidden" name="numberofcolumns" value="$ENV{'form.numberofcolumns'}"> |
<h1>Mark students which assignments you want to print</h1> |
<h1>Mark students which assignments you want to print</h1> |
ENDMENUOUT1 |
ENDMENUOUT1 |
my $c = $r->connection; |
my %courselist=&Apache::lonnet::dump( |
my %cache; |
'classlist', |
my $courseID=$ENV{'request.course.id'}; |
$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}, |
my $classlist=&Apache::loncoursedata::DownloadClasslist($courseID, |
$ENV{'course.'.$ENV{'request.course.id'}.'.num'}); |
$cache{'ClasslistTimestamp'}, |
my $now=time; |
$c); |
$r->print(<<ENDDISHEADER); |
foreach (keys(%$classlist)) { |
<script> |
if(/^(con_lost|error|no_such_host)/i) { |
function checkall() { |
untie(%cache); |
for (i=0; i<document.forms.printform.elements.length; i++) { |
return "Error getting student data."; |
if |
|
(document.forms.printform.elements[i].name.indexOf('whomtoprint')==0) { |
|
document.forms.printform.elements[i].checked=true; |
|
} |
} |
} |
} |
} |
my $classlistaa = ''; |
|
foreach my $st (keys(%$classlist)) { |
function checksec() { |
$classlistaa .= ' SSS '.$st.' => '.$$classlist{$st}.' FFF '."\r\n"; |
for (i=0; i<document.forms.printform.elements.length; i++) { |
|
if |
|
(document.forms.printform.elements[i].value.indexOf |
|
(document.forms.printform.chksec.value)==0) { |
|
document.forms.printform.elements[i].checked=true; |
|
} |
|
} |
} |
} |
|
|
|
function uncheckall() { |
|
for (i=0; i<document.forms.printform.elements.length; i++) { |
|
if |
|
(document.forms.printform.elements[i].name.indexOf('whomtoprint')==0) { |
|
document.forms.printform.elements[i].checked=false; |
|
} |
|
} |
|
} |
|
</script> |
|
<input type=button onClick="checkall()" value="Check for All"> |
|
<input type=button onClick="checksec()" value="Check for Section/Group"> |
|
<input type=text size=5 name=chksec> |
|
<input type=button onClick="uncheckall()" value="Check for None"> |
|
<p> |
|
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( |
|
'<br /><input type=checkbox name="whomtoprint'.$i.'" value="'.$section.':'.$_.'"> '. |
|
$reply{'firstname'}.' '. |
|
$reply{'middlename'}.' '. |
|
$reply{'lastname'}.' '. |
|
$reply{'generation'}. |
|
' ('.$_.') '.$section); |
|
$i++; |
|
} |
|
} |
$r->print(<<ENDMENUOUT2); |
$r->print(<<ENDMENUOUT2); |
$classlistaa <br /> |
<br /> |
|
<input type="hidden" name="numberofstudents" value="$i"> |
<input type="hidden" name="phase" value="three"> |
<input type="hidden" name="phase" value="three"> |
<input type="submit" value="Submit"> |
<input type="submit" value="Submit"> |
ENDMENUOUT2 |
ENDMENUOUT2 |
Line 160 ENDMENUOUT2
|
Line 272 ENDMENUOUT2
|
|
|
sub additional_print_menu { |
sub additional_print_menu { |
my $r = shift; |
my $r = shift; |
|
my $what_to_print = ''; |
|
for (my $i=0; $i<$ENV{'form.numberofstudents'};$i++) { |
|
$what_to_print .= '<input type="hidden" name="whomtoprint'.$i.'" value="'.$ENV{'form.whomtoprint'.$i}.'">'; |
|
} |
|
for (my $i=0; $i<$ENV{'form.numberofproblems'};$i++) { |
|
$what_to_print .= '<input type="hidden" name="whattoprint'.$i.'" value="'.$ENV{'form.whattoprint'.$i}.'">'; |
|
} |
$r->print(<<ENDMENUOUT); |
$r->print(<<ENDMENUOUT); |
|
$what_to_print |
<input type="hidden" name="url" value="$ENV{'form.url'}"> |
<input type="hidden" name="url" value="$ENV{'form.url'}"> |
<input type="hidden" name="choice" value="$ENV{'form.choice'}"> |
<input type="hidden" name="choice" value="$ENV{'form.choice'}"> |
<input type="hidden" name="layout" value="$ENV{'form.layout'}"> |
<input type="hidden" name="layout" value="$ENV{'form.layout'}"> |
|
<input type="hidden" name="numberofstudents" value="$ENV{'form.numberofstudents'}"> |
|
<input type="hidden" name="numberofproblems" value="$ENV{'form.numberofproblems'}"> |
<input type="hidden" name="numberofcolumns" value="$ENV{'form.numberofcolumns'}"> |
<input type="hidden" name="numberofcolumns" value="$ENV{'form.numberofcolumns'}"> |
Enter width of the page: <input type="text" name="width" width="10" value="9cm"> <br /> |
Define page layout parameters: <br /> |
|
<b>Width</b>: <input type="text" name="width" width="8" value="9cm"> <br /> |
|
<b>Height</b>: <input type="text" name="height" width="8" value="25.9cm"> <br /> |
|
<b>Left margin</b>: <input type="text" name="leftmargin" width="8" value="-0.57in"> <br /> |
<input type="hidden" name="phase" value="four"> |
<input type="hidden" name="phase" value="four"> |
<input type="submit" value="Submit"> |
<input type="submit" value="Submit"> |
</form> |
</form> |
Line 236 ENDPART
|
Line 361 ENDPART
|
&Apache::lonnet::delenv('form.grade_target'); |
&Apache::lonnet::delenv('form.grade_target'); |
$result .= $texversion; |
$result .= $texversion; |
} |
} |
} else { |
} elsif ($urlp =~ /\S+/) { |
my %moreenv; |
my %moreenv; |
$moreenv{'form.grade_target'}='tex'; |
$moreenv{'form.grade_target'}='tex'; |
&Apache::lonnet::appenv(%moreenv); |
&Apache::lonnet::appenv(%moreenv); |
Line 309 ENDPART
|
Line 434 ENDPART
|
} |
} |
$result = &additional_cleanup($result); |
$result = &additional_cleanup($result); |
} elsif ($choice eq 'All class print') { |
} 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') { |
} elsif ($choice eq 'Subdirectory print') { |
my $subdirtoprint = &Apache::lonnet::filelocation("",$ENV{'form.url'}); |
#prints selected problems from the subdirectory |
$subdirtoprint =~ s/\/[^\/]+$//; |
my @list_of_files = (); |
my @list_of_files = (); |
for (my $i=0; $i<$ENV{'form.numberofproblems'};$i++) { |
if ($ENV{'request.role'}=~m/^au\./ or $ENV{'request.role'}=~m/^ca\./) { |
if ($ENV{'form.whattoprint'.$i}=~/^\//) { |
$subdirtoprint =~ s/^[^~]*~(\w+)\//\/home\/$1\/public_html\//; |
# $result.= $ENV{'form.whattoprint'.$i}.' FFF '; |
} else { |
push @list_of_files,$ENV{'form.whattoprint'.$i}; |
$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++) { |
for (my $i=0;$i<=$#list_of_files;$i++) { |
my $urlp = $subdirtoprint.'/'.$list_of_files[$i]; |
my $urlp = $list_of_files[$i]; |
my %moreenv; |
if ($urlp=~/\//) { |
$moreenv{'form.grade_target'}='tex'; |
my %moreenv; |
&Apache::lonnet::appenv(%moreenv); |
$moreenv{'form.grade_target'}='tex'; |
if ($ENV{'request.role'}=~m/^au\./ or $ENV{'request.role'}=~m/^ca\./) { |
&Apache::lonnet::appenv(%moreenv); |
$urlp =~ s/\/home\/([^\/]*)\/public_html/\/~$1/; |
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'); |
my $texversion=&Apache::lonnet::ssi($urlp); |
$texversion =~ s/(\\begin{document})/$1 {\\tiny\\begin{verbatim}$urlp\\end{verbatim}}/; |
&Apache::lonnet::delenv('form.grade_target'); |
$result .= $texversion; |
$texversion =~ s/(\\begin{document})/$1 {\\tiny\\begin{verbatim}$urlp\\end{verbatim}}/; |
|
$result .= $texversion; |
|
} |
} |
} |
$result = &additional_cleanup($result); |
$result = &additional_cleanup($result); |
|
|
Line 363 ENDPART
|
Line 512 ENDPART
|
$courseidinfo = $ENV{'course.physnet_'.$1.'.description'}; |
$courseidinfo = $ENV{'course.physnet_'.$1.'.description'}; |
# $result =~ s/\\documentclass\[letterpaper\]{article}/\\documentclass\[twocolumn\]{article}/; |
# $result =~ s/\\documentclass\[letterpaper\]{article}/\\documentclass\[twocolumn\]{article}/; |
$result =~ s/\\documentclass\[letterpaper\]{article}/\\documentclass{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=9\.0 cm\]{/g; |
# $result =~ s/\\includegraphics{/\\includegraphics\[width=\\textwidth\]{/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/; |
# $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/; |
Line 842 sub handler {
|
Line 995 sub handler {
|
if ($ENV{'form.phase'} eq 'two') { |
if ($ENV{'form.phase'} eq 'two') { |
if($ENV{'form.choice'} eq 'All class print') { |
if($ENV{'form.choice'} eq 'All class print') { |
&additional_class_menu($r); |
&additional_class_menu($r); |
|
} elsif($ENV{'form.choice'} eq 'Subdirectory print') { |
|
&problem_choice_menu($r); |
} else { |
} else { |
$ENV{'form.phase'} = 'three'; |
$ENV{'form.phase'} = 'three'; |
} |
} |