[LON-CAPA-cvs] cvs: loncom /interface lonprintout.pm
sakharuk
lon-capa-cvs@mail.lon-capa.org
Tue, 03 Feb 2004 21:38:18 -0000
sakharuk Tue Feb 3 16:38:18 2004 EDT
Modified files:
/loncom/interface lonprintout.pm
Log:
Changes to print students assignments by sections (parts).
Index: loncom/interface/lonprintout.pm
diff -u loncom/interface/lonprintout.pm:1.271 loncom/interface/lonprintout.pm:1.272
--- loncom/interface/lonprintout.pm:1.271 Fri Jan 16 13:36:25 2004
+++ loncom/interface/lonprintout.pm Tue Feb 3 16:38:18 2004
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Printout
#
-# $Id: lonprintout.pm,v 1.271 2004/01/16 18:36:25 sakharuk Exp $
+# $Id: lonprintout.pm,v 1.272 2004/02/03 21:38:18 sakharuk Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -705,6 +705,7 @@
$LaTeXwidth = $1*25.4;
}
$LaTeXwidth.=' mm';
+ my @print_array=();
if ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'current_document') {
#-- single document - problem, page, html, xml, ...
@@ -954,6 +955,7 @@
$selectionmade=8;
}
my @students=split /\|\|\|/, $helper->{'VARS'}->{'STUDENTS'};
+ if ($helper->{'VARS'}->{'NUMBER_TO_PRINT'} eq '0') {$helper->{'VARS'}->{'NUMBER_TO_PRINT'}=$#students+1;}
my @master_seq=split /\|\|\|/, $helper->{'VARS'}->{'RESOURCES'};
#loop over students
my $flag_latex_header_remove = 'NO';
@@ -961,10 +963,11 @@
$moreenv{'form.textwidth'}=$LaTeXwidth;
&Apache::lonnet::appenv(%moreenv);
my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r,'Print Status','Class Print Status',$#students+1);
+ my $student_counter=-1;
foreach my $person (@students) {
+ $student_counter++;
my $current_output = '';
my ($username,$userdomain,$usersection) = split /:/,$person;
-# my ($username,$userdomain) = split /:/,$person;
my $fullname = &get_name($username,$userdomain);
if ($parmhash{'anonymous_quiz'}=~/yes/) {$fullname=' ';} #put here something reasonable for anonymous exams or quiz
@@ -1020,14 +1023,14 @@
for (my $j=0;$j<$helper->{'VARS'}->{'EMPTY_PAGES'};$j++) {$blanspages.='\clearpage\strut\clearpage';}
$current_output = '\strut\\newline\\noindent\\makebox[\\textwidth/$number_of_columns][b]{\\hrulefill}\\newline\\noindent{\\tiny Printed from LON-CAPA\\copyright MSU{\\hfill} Licensed under GNU General Public License }\\newpage '.$blanspages.'\setcounter{page}{1}\noindent\parbox{\minipagewidth}{\noindent\\lhead{\\textit{\\textbf{'.$fullname.'}}'.$courseidinfo.' \\hfill \\thepage \\\\ \\textit{'.$currentassignment.'}}} \vskip -5 mm '.$current_output;
}
- $result .= $current_output;
+ $print_array[int($student_counter/$helper->{'VARS'}->{'NUMBER_TO_PRINT'})].=$current_output;
&Apache::lonnet::delenv('form.counter');
&Apache::lonxml::init_counter();
&Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,
&mt('last student').' '.$fullname);
}
&Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
- $result .= '\end{document}';
+ $result .= $print_array[0].' \end{document}';
&Apache::lonnet::delenv('form.textwidth');
} elsif ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'problems_from_directory') {
#prints selected problems from the subdirectory
@@ -1104,6 +1107,7 @@
#-------------------------------------------------------- corrections for the different page formats
$result = &page_format_transformation($papersize,$laystyle,$numberofcolumns,$helper->{'VARS'}->{'PRINT_TYPE'},$result,$helper->{VARS}->{'assignment'},$helper->{'VARS'}->{'TABLE_CONTENTS'},$helper->{'VARS'}->{'TABLE_INDEX'});
$result = &latex_corrections($number_of_columns,$result);
+ for (my $i=1;$i<=$#print_array;$i++) {$print_array[$i] = &latex_corrections($number_of_columns,$print_array[$i]);}
#changes page's parameters for the one column output
if ($numberofcolumns == 1) {
$result =~ s/\\textwidth\s*=\s*\d*\.?\d*\s*(cm|mm|in)/\\textwidth= $helper->{'VARS'}->{'pagesize.width'} $helper->{'VARS'}->{'pagesize.widthunit'} /;
@@ -1118,6 +1122,25 @@
$r->log_error("Couldn't open $filename for output $!");
return SERVER_ERROR;
}
+ print $temp_file $result;
+ my $begin=index($result,'\begin{document}',0);
+ my $inc=substr($result,0,$begin+16);
+ my $newfilename=$filename;
+ if ($#print_array>0) {
+ for (my $i=1;$i<=$#print_array;$i++) {
+ my $anobegin=index($print_array[$i],'\setcounter{page}',0);
+ substr($print_array[$i],0,$anobegin)='';
+ $print_array[$i]=$inc.$print_array[$i].'\end{document}';
+ my $temp_file;
+ $newfilename =~s/\.tex$/_add$i\.tex/;
+ unless ($temp_file = Apache::File->new('>'.$newfilename)) {
+ $r->log_error("Couldn't open $newfilename for output $!");
+ return SERVER_ERROR;
+ }
+ print $temp_file $print_array[$i];
+ }
+
+ }
my $identifier = time.'_'.int(rand(1000));
&Apache::lonnet::appenv('cgi.'.$identifier.'.file' => $filename,
@@ -1126,9 +1149,9 @@
'cgi.'.$identifier.'.selection' => $selectionmade,
'cgi.'.$identifier.'tableofcontents' => $helper->{'VARS'}->{'TABLE_CONTENTS'},
'cgi.'.$identifier.'tableofindex' => $helper->{'VARS'}->{'TABLE_INDEX'},
- 'cgi.'.$identifier.'role' => $ENV{'request.role.adv'});
+ 'cgi.'.$identifier.'role' => $ENV{'request.role.adv'},
+ 'cgi.'.$identifier.'numberoffiles' => $#print_array);
- print $temp_file $result;
$r->print(<<FINALEND);
<meta http-equiv="Refresh" content="0; url=/cgi-bin/printout.pl?$identifier">
@@ -1378,7 +1401,6 @@
if ($helper->{VARS}->{'assignment'}) {
push @{$printChoices}, ["<b>Problems</b> from <b><i>$sequenceTitle</i></b> for <b>selected students</b>", 'problems_for_students', 'CHOOSE_STUDENTS'];
}
-
&Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_STUDENTS);
<state name="ALL_PROBLEMS" title="Select Problem(s) to print">
<message>(mark them then click "next" button) <br /></message>
@@ -1409,10 +1431,16 @@
</state>
CHOOSE_STUDENTS
+ addMessage("<hr width='33%' /><b>Number of assignments printed at the same time: </b>");
+ $paramHash = Apache::lonhelper::getParamHash();
+ $paramHash->{'variable'} = 'NUMBER_TO_PRINT';
+ $helper->declareVar('NUMBER_TO_PRINT');
+ addMessage("<input type='text' name='NUMBER_TO_PRINT.forminput' size='3' value='0' /><hr width='33%' />");
+
if ($helper->{VARS}->{'assignment'}) {
push @{$printChoices}, ["<b>Resources</b> from <b><i>$sequenceTitle</i></b> for <b>selected students</b>", 'resources_for_students', 'CHOOSE_STUDENTS1'];
}
- &Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_STUDENTS1);
+ &Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_STUDENTS1);
<state name="CHOOSE_STUDENTS1" title="Select Students and Resources">
<student multichoice='1' variable="STUDENTS" nextstate="PAGESIZE" />
<message><br /><big><i><b>Select resources for the assignment</b></i></big><br /></message>
@@ -1431,6 +1459,11 @@
</state>
CHOOSE_STUDENTS1
+ addMessage("<hr width='33%' /><b>Number of assignments printed at the same time: </b>");
+ $paramHash = Apache::lonhelper::getParamHash();
+ $paramHash->{'variable'} = 'NUMBER_TO_PRINT';
+ $helper->declareVar('NUMBER_TO_PRINT');
+ addMessage("<input type='text' name='NUMBER_TO_PRINT.forminput' size='3' value='0' /><hr width='33%' />");
}
# FIXME: That RE should come from a library somewhere.