--- loncom/interface/lonprintout.pm 2004/04/22 22:59:11 1.293
+++ loncom/interface/lonprintout.pm 2004/05/10 14:25:02 1.301
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Printout
#
-# $Id: lonprintout.pm,v 1.293 2004/04/22 22:59:11 albertel Exp $
+# $Id: lonprintout.pm,v 1.301 2004/05/10 14:25:02 sakharuk Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -672,6 +672,20 @@ sub get_textwidth {
return $textwidth;
}
+
+sub unsupported {
+ my $currentURL=shift;
+ my $result.='\documentclass[letterpaper]{article}\usepackage{calc}\begin{document}Printout of this type of document is currently not supported: ';
+ if ($currentURL=~/\/ext\//) {
+ $result.=' \strut \\\\ THIS IS EXTERNAL RESOURCE WITH URL \strut \\\\ '.$currentURL.' ';
+ } else {
+ $result.=$currentURL;
+ }
+ $result.= '\vskip 0.5mm\noindent\makebox[\textwidth/$number_of_columns][b]{\hrulefill} \end{document}';
+ return $result;
+}
+
+
sub output_data {
my ($r,$helper,$rparmhash) = @_;
my %parmhash = %$rparmhash;
@@ -860,29 +874,31 @@ ENDPART
}
if ($helper->{VARS}->{'construction'} eq '1') {$result=~s/(\\begin{document})/$1 \\fbox\{RANDOM SEED IS $rndseed\} /;}
$result .= '\end{document}';
- } elsif ($currentURL=~/\/smppg$/) {
+ } elsif ($currentURL=~/\/(smppg|syllabus|aboutme|bulletinboard)$/) {
my %form;
$form{'grade_target'}='tex';
$form{'textwidth'}=&get_textwidth($helper,$LaTeXwidth);
$form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};
+ if ($currentURL=~/\/syllabus$/) {$currentURL=~s/\/res//;}
my $texversion=&Apache::lonnet::ssi($currentURL,%form);
$result .= $texversion;
} else {
- $result.='\documentclass[letterpaper]{article}\usepackage{calc}\begin{document}Printout of this type of document is currently not supported: ';
- if ($currentURL=~/\/(aboutme|syllabus|bulletinboard|smppg)$/) {
- $result.=$1;
- } elsif ($currentURL=~/\/ext\//) {
- $result.=' \strut \\\\ THIS IS EXTERNAL RESOURCE WITH URL \strut \\\\ '.$currentURL.' ';
- } else {
- $result.=$currentURL;
- }
- $result.=' \end{document}'
+ $result.=&unsupported($currentURL);
}
} elsif (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems') or
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems_pages') or
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_problems') or
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'select_sequences')) {
#-- produce an output string
+ if ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems') {
+ $selectionmade = 2;
+ } elsif ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems_pages') {
+ $selectionmade = 3;
+ } elsif ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_problems') {
+ $selectionmade = 4;
+ } elsif ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'select_sequences') {
+ $selectionmade = 7;
+ }
my %form=();
$form{'grade_target'}='tex';
$form{'textwidth'}=&get_textwidth($helper,$LaTeXwidth);
@@ -897,71 +913,88 @@ ENDPART
for (my $i=0;$i<=$#master_seq;$i++) {
my (undef,undef,$urlp)=&Apache::lonnet::decode_symb($master_seq[$i]);
$urlp=&Apache::lonnet::clutter($urlp);
- if ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems') {
- $selectionmade = 2;
- } elsif ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems_pages') {
- $selectionmade = 3;
- } elsif ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_problems') {
- $selectionmade = 4;
- } elsif ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'select_sequences') {
- $selectionmade = 7;
- }
$form{'symb'}=$master_seq[$i];
my ($sequence)=&Apache::lonnet::decode_symb($master_seq[$i]);
my $assignment=&Apache::lonxml::latex_special_symbols(&Apache::lonnet::gettitle($sequence),'header'); #tittle of the assignment which contains this problem
if ($selectionmade==7) {$helper->{VARS}->{'assignment'}=$assignment;}
if ($i==0) {$prevassignment=$assignment;}
#&Apache::lonnet::logthis("Trying to get $urlp with symb $master_seq[$i]");
- my $texversion.=&Apache::lonnet::ssi($urlp,%form);
- if ($urlp=~/\.page$/) {
- ($texversion,my $number_of_columns_page) = &page_cleanup($texversion);
- if ($number_of_columns_page > $number_of_columns) {$number_of_columns=$number_of_columns_page;}
- $texversion =~ s/\\end{document}\d*/\\end{document}/;
- $flag_page_in_sequence = 'YES';
- }
- my $lonidsdir=$r->dir_config('lonIDsDir');
- my $envfile=$ENV{'user.environment'};
- $envfile=~/\/([^\/]+)\.id$/;
- $envfile=$1;
- &Apache::lonnet::transfer_profile_to_env($lonidsdir,$envfile);
- my $current_counter=$ENV{'form.counter'};
- if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||
- ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) {
- my %form;
- $form{'grade_target'}='answer';
- $form{'answer_output_mode'}='tex';
- my $answer=&Apache::lonnet::ssi($urlp,%form);
- &Apache::lonnet::appenv(('form.counter' => $current_counter));
- if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {
- $texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/;
- } else {
- if ($urlp=~/\.(problem|exam|quiz|library)$/) {
- $texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
- $texversion.='\vskip 0 mm \noindent\textbf{'.&Apache::lonnet::gettitle($urlp).'}\vskip 0 mm ';
- $texversion.=&path_to_problem ($urlp,$LaTeXwidth);
- $texversion.='\vskip 1 mm '.$answer;
+ my $texversion='';
+ if ($urlp=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {
+ $texversion.=&Apache::lonnet::ssi($urlp,%form);
+ if ($urlp=~/\.page$/) {
+ ($texversion,my $number_of_columns_page) = &page_cleanup($texversion);
+ if ($number_of_columns_page > $number_of_columns) {$number_of_columns=$number_of_columns_page;}
+ $texversion =~ s/\\end{document}\d*/\\end{document}/;
+ $flag_page_in_sequence = 'YES';
+ }
+ my $lonidsdir=$r->dir_config('lonIDsDir');
+ my $envfile=$ENV{'user.environment'};
+ $envfile=~/\/([^\/]+)\.id$/;
+ $envfile=$1;
+ &Apache::lonnet::transfer_profile_to_env($lonidsdir,$envfile);
+ my $current_counter=$ENV{'form.counter'};
+ if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||
+ ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) {
+ my %form;
+ $form{'grade_target'}='answer';
+ $form{'answer_output_mode'}='tex';
+ my $answer=&Apache::lonnet::ssi($urlp,%form);
+ &Apache::lonnet::appenv(('form.counter' => $current_counter));
+ if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {
+ $texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/;
} else {
- $texversion='';
+ if ($urlp=~/\.(problem|exam|quiz|library)$/) {
+ $texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
+ $texversion.='\vskip 0 mm \noindent\textbf{'.&Apache::lonnet::gettitle($urlp).'}\vskip 0 mm ';
+ $texversion.=&path_to_problem ($urlp,$LaTeXwidth);
+ $texversion.='\vskip 1 mm '.$answer;
+ } else {
+ $texversion='';
+ }
}
}
- }
- if ($flag_latex_header_remove ne 'NO') {
- $texversion = &latex_header_footer_remove($texversion);
+ if ($flag_latex_header_remove ne 'NO') {
+ $texversion = &latex_header_footer_remove($texversion);
+ } else {
+ $texversion =~ s/\\end{document}//;
+ }
+ if ($helper->{'VARS'}->{'TABLE_INDEX'} eq 'yes') {
+ $texversion=&IndexCreation($texversion,$urlp);
+ }
+ if (($selectionmade == 4) and ($assignment ne $prevassignment)) {
+ my $name = &get_name();
+ my $courseidinfo = &get_course();
+ if (defined($courseidinfo)) { $courseidinfo=' - '.$courseidinfo }
+ $prevassignment=$assignment;
+ $result .='\newpage \noindent\parbox{\minipagewidth}{\noindent\\lhead{\\textit{\\textbf{'.$name.'}}'.$courseidinfo.' \\hfill \\thepage \\\\ \\textit{'.$assignment.'}}} \vskip -5 mm ';
+ }
+ $result .= $texversion;
+ $flag_latex_header_remove = 'YES';
+ } elsif ($urlp=~/\/(smppg|syllabus|aboutme|bulletinboard)$/) {
+ my %form;
+ $form{'grade_target'}='tex';
+ $form{'textwidth'}=&get_textwidth($helper,$LaTeXwidth);
+ $form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};
+ if ($urlp=~/\/syllabus$/) {$urlp=~s/\/res//;}
+ my $texversion=&Apache::lonnet::ssi($urlp,%form);
+ if ($flag_latex_header_remove ne 'NO') {
+ $texversion = &latex_header_footer_remove($texversion);
+ } else {
+ $texversion =~ s/\\end{document}/\\vskip 0\.5mm\\noindent\\makebox\[\\textwidth\/\$number_of_columns\]\[b\]\{\\hrulefill\}/;
+ }
+ $result .= $texversion;
+ $flag_latex_header_remove = 'YES';
} else {
- $texversion =~ s/\\end{document}//;
- }
- if ($helper->{'VARS'}->{'TABLE_INDEX'} eq 'yes') {
- $texversion=&IndexCreation($texversion,$urlp);
- }
- if (($selectionmade == 4) and ($assignment ne $prevassignment)) {
- my $name = &get_name();
- my $courseidinfo = &get_course();
- if (defined($courseidinfo)) { $courseidinfo=' - '.$courseidinfo }
- $prevassignment=$assignment;
- $result .='\newpage \noindent\parbox{\minipagewidth}{\noindent\\lhead{\\textit{\\textbf{'.$name.'}}'.$courseidinfo.' \\hfill \\thepage \\\\ \\textit{'.$assignment.'}}} \vskip -5 mm ';
- }
- $result .= $texversion;
- $flag_latex_header_remove = 'YES';
+ $texversion=&unsupported($urlp);
+ if ($flag_latex_header_remove ne 'NO') {
+ $texversion = &latex_header_footer_remove($texversion);
+ } else {
+ $texversion =~ s/\\end{document}//;
+ }
+ $result .= $texversion;
+ $flag_latex_header_remove = 'YES';
+ }
}
&Apache::lonnet::delenv('form.counter');
if ($flag_page_in_sequence eq 'YES') {$result =~ s/\\usepackage{calc}/\\usepackage{calc}\\usepackage{longtable}/;}
@@ -1009,9 +1042,13 @@ ENDPART
my $old_name=$helper->{'VARS'}->{'REUSE_OLD_CODES'};
my @master_seq=split /\|\|\|/, $helper->{'VARS'}->{'RESOURCES'};
my ($type) = split(/_/,$helper->{'VARS'}->{'PRINT_TYPE'});
+ my $number_per_page=$helper->{'VARS'}->{'NUMBER_TO_PRINT'};
+ if ($number_per_page eq '0' || $number_per_page eq 'all') {
+ $number_per_page=$num_todo;
+ }
my $flag_latex_header_remove = 'NO';
my %moreenv = ('textwidth' => &get_textwidth($helper,$LaTeXwidth));
- my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r,'Print Status','Class Print Status',$num_todo,'inline');
+ my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r,'Print Status','Class Print Status',$num_todo,'inline','75');
my $seed=time+($$<<16)+($$);
my @allcodes;
if ($old_name) {
@@ -1019,6 +1056,7 @@ ENDPART
@allcodes=split(',',$result{$old_name});
} else {
my %allcodes;
+ srand($seed);
for (my $i=0;$i<$num_todo;$i++) {
$moreenv{'CODE'}=&get_CODE(\%allcodes,$i,$seed,'6');
}
@@ -1029,17 +1067,18 @@ ENDPART
}
@allcodes=keys(%allcodes);
}
- my $i=0;
+ my $count=0;
foreach my $code (sort(@allcodes)) {
+ my $file_num=int($count/$number_per_page);
$moreenv{'CODE'}=&num_to_letters($code);
my ($output,$fullname)=
&print_resources($r,$helper,'anonymous',$type,\%moreenv,
\@master_seq,$flag_latex_header_remove);
- $print_array[$i].=$output;
+ $print_array[$file_num].=$output;
&Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,
&mt('last assignment').' '.$fullname);
$flag_latex_header_remove = 'YES';
- $i++;
+ $count++;
}
&Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
$result .= $print_array[0].' \end{document}';
@@ -1219,7 +1258,6 @@ sub num_to_letters {
sub get_CODE {
my ($all_codes,$num,$seed,$size)=@_;
my $max='1'.'0'x$size;
- srand($seed);
my $newcode;
while(1) {
$newcode=sprintf("%06d",int(rand($max)));
@@ -1583,6 +1621,7 @@ CHOOSE_STUDENTS
my @names=&Apache::lonnet::getkeys('CODEs',$cdom,$cnum);
my $namechoice='';
foreach my $name (@names) {
+ if ($name =~ /^error: 2 /) { next; }
$namechoice.=''.$name.'';
}
&Apache::lonxml::xmlparse($r, 'helper', <
-
How many Anonymous exams to print?
+ PAGESIZE
+
Number of anonymous assignments to print?
+
Names to store the CODEs under for later:
+
+
+ Reprint a set of saved CODEs:
+
+ $namechoice
+
$resource_selector