version 1.438, 2006/05/24 10:49:04
|
version 1.452, 2006/06/30 21:37:05
|
Line 42 use Apache::lonratedt;
|
Line 42 use Apache::lonratedt;
|
use POSIX qw(strftime); |
use POSIX qw(strftime); |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Carp; |
use Carp; |
|
use lib '/home/httpd/lib/perl/'; |
|
use LONCAPA; |
|
|
my %perm; |
my %perm; |
|
|
Line 700 sub get_name {
|
Line 702 sub get_name {
|
if (!defined($udom)) { $udom=$env{'user.domain'}; } |
if (!defined($udom)) { $udom=$env{'user.domain'}; } |
my $plainname=&Apache::loncommon::plainname($uname,$udom); |
my $plainname=&Apache::loncommon::plainname($uname,$udom); |
if ($plainname=~/^\s*$/) { $plainname=$uname.'@'.$udom; } |
if ($plainname=~/^\s*$/) { $plainname=$uname.'@'.$udom; } |
$plainname=&Apache::lonxml::latex_special_symbols($plainname,'header'); |
# $plainname=&Apache::lonxml::latex_special_symbols($plainname,'header'); |
|
$plainname = &escape_LaTeX($plainname); |
return $plainname; |
return $plainname; |
} |
} |
|
|
sub get_course { |
sub get_course { |
my $courseidinfo; |
my $courseidinfo; |
if (defined($env{'request.course.id'})) { |
if (defined($env{'request.course.id'})) { |
$courseidinfo = &Apache::lonxml::latex_special_symbols(&Apache::lonnet::unescape($env{'course.'.$env{'request.course.id'}.'.description'}),'header'); |
$courseidinfo = &Apache::lonxml::latex_special_symbols(&unescape($env{'course.'.$env{'request.course.id'}.'.description'}),'header'); |
} |
} |
return $courseidinfo; |
return $courseidinfo; |
} |
} |
Line 1259 ENDPART
|
Line 1262 ENDPART
|
} |
} |
if ($helper->{VARS}->{'construction'} eq '1') {$result=~s/(\\begin{document})/$1 \\fbox\{RANDOM SEED IS $rndseed\} /;} |
if ($helper->{VARS}->{'construction'} eq '1') {$result=~s/(\\begin{document})/$1 \\fbox\{RANDOM SEED IS $rndseed\} /;} |
$result .= '\end{document}'; |
$result .= '\end{document}'; |
} elsif ($cleanURL=~/\/(smppg|syllabus|aboutme|bulletinboard)$/) { |
} elsif ($cleanURL=~/\/(smppg|grppg|syllabus|aboutme|bulletinboard)$/) { |
$form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'}; |
$form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'}; |
if ($currentURL=~/\/syllabus$/) {$currentURL=~s/\/res//;} |
if ($currentURL=~/\/syllabus$/) {$currentURL=~s/\/res//;} |
$resources_printed .= $currentURL.':'; |
$resources_printed .= $currentURL.':'; |
Line 1377 ENDPART
|
Line 1380 ENDPART
|
} |
} |
$result .= $texversion; |
$result .= $texversion; |
$flag_latex_header_remove = 'YES'; |
$flag_latex_header_remove = 'YES'; |
} elsif ($urlp=~/\/(smppg|syllabus|aboutme|bulletinboard)$/) { |
} elsif ($urlp=~/\/(smppg|grppg|syllabus|aboutme|bulletinboard)$/) { |
$form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'}; |
$form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'}; |
if ($urlp=~/\/syllabus$/) {$urlp=~s/\/res//;} |
if ($urlp=~/\/syllabus$/) {$urlp=~s/\/res//;} |
$resources_printed .= $urlp.':'; |
$resources_printed .= $urlp.':'; |
Line 1559 ENDPART
|
Line 1562 ENDPART
|
} |
} |
my @master_seq=split /\|\|\|/, $helper->{'VARS'}->{'RESOURCES'}; |
my @master_seq=split /\|\|\|/, $helper->{'VARS'}->{'RESOURCES'}; |
my ($type) = split(/_/,$helper->{'VARS'}->{'PRINT_TYPE'}); |
my ($type) = split(/_/,$helper->{'VARS'}->{'PRINT_TYPE'}); |
|
&adjust_number_to_print($helper); |
my $number_per_page=$helper->{'VARS'}->{'NUMBER_TO_PRINT'}; |
my $number_per_page=$helper->{'VARS'}->{'NUMBER_TO_PRINT'}; |
if ($number_per_page eq '0' || $number_per_page eq 'all') { |
if ($number_per_page eq '0' || $number_per_page eq 'all') { |
$number_per_page=$num_todo; |
$number_per_page=$num_todo; |
Line 1670 ENDPART
|
Line 1674 ENDPART
|
$selectionmade, |
$selectionmade, |
$helper->{'VARS'}->{'ANSWER_TYPE'}); |
$helper->{'VARS'}->{'ANSWER_TYPE'}); |
} |
} |
&Apache::lonnet::logthis("Resetting page e.g. height -> $helper->{'VARS'}->{'pagesize.height'}"); |
if ($numberofcolumns == 1) { |
&Apache::lonnet::logthis("Before: $result \n--------------------------\n"); |
$result =~ s/\\textwidth\s*=\s*-?\d*\.?\d*\s*(cm|mm|in)/\\textwidth= $helper->{'VARS'}->{'pagesize.width'} $helper->{'VARS'}->{'pagesize.widthunit'} /; |
$result =~ s/\\textwidth\s*=\s*-?\d*\.?\d*\s*(cm|mm|in)/\\textwidth= $helper->{'VARS'}->{'pagesize.width'} $helper->{'VARS'}->{'pagesize.widthunit'} /; |
$result =~ s/\\textheight\s*=?\s*-?\d*\.?\d*\s*(cm|mm|in)/\\textheight $helper->{'VARS'}->{'pagesize.height'} $helper->{'VARS'}->{'pagesize.heightunit'} /; |
$result =~ s/\\textheight\s*=?\s*-?\d*\.?\d*\s*(cm|mm|in)/\\textheight $helper->{'VARS'}->{'pagesize.height'} $helper->{'VARS'}->{'pagesize.heightunit'} /; |
$result =~ s/\\evensidemargin\s*=\s*-?\d*\.?\d*\s*(cm|mm|in)/\\evensidemargin= $helper->{'VARS'}->{'pagesize.lmargin'} $helper->{'VARS'}->{'pagesize.lmarginunit'} /; |
$result =~ s/\\evensidemargin\s*=\s*-?\d*\.?\d*\s*(cm|mm|in)/\\evensidemargin= $helper->{'VARS'}->{'pagesize.lmargin'} $helper->{'VARS'}->{'pagesize.lmarginunit'} /; |
$result =~ s/\\oddsidemargin\s*=\s*-?\d*\.?\d*\s*(cm|mm|in)/\\oddsidemargin= $helper->{'VARS'}->{'pagesize.lmargin'} $helper->{'VARS'}->{'pagesize.lmarginunit'} /; |
$result =~ s/\\oddsidemargin\s*=\s*-?\d*\.?\d*\s*(cm|mm|in)/\\oddsidemargin= $helper->{'VARS'}->{'pagesize.lmargin'} $helper->{'VARS'}->{'pagesize.lmarginunit'} /; |
} |
|
|
&Apache::lonnet::logthis("After: $result \n----------------------------------\n"); |
|
|
|
#-- writing .tex file in prtspool |
#-- writing .tex file in prtspool |
my $temp_file; |
my $temp_file; |
Line 1733 ENDPART
|
Line 1735 ENDPART
|
my $URLback=''; #link to original document |
my $URLback=''; #link to original document |
if ($helper->{'VARS'}->{'construction'} ne '1') { |
if ($helper->{'VARS'}->{'construction'} ne '1') { |
#prints published resource |
#prints published resource |
$URLback=&Apache::lonnet::escape('/adm/flip?postdata=return:'); |
$URLback=&escape('/adm/flip?postdata=return:'); |
} else { |
} else { |
#prints resource from the construction space |
#prints resource from the construction space |
$URLback='/'.$helper->{'VARS'}->{'filename'}; |
$URLback='/'.$helper->{'VARS'}->{'filename'}; |
Line 1802 sub print_resources {
|
Line 1804 sub print_resources {
|
$namepostfix="\\\\Name: "; |
$namepostfix="\\\\Name: "; |
$fullname = "CODE - ".$moreenv->{'CODE'}; |
$fullname = "CODE - ".$moreenv->{'CODE'}; |
} |
} |
|
# Fullname may have special latex characters that need \ prefixing: |
|
# |
|
|
my $i = 0; |
my $i = 0; |
#goes through all resources, checks if they are available for |
#goes through all resources, checks if they are available for |
#current student, and produces output |
#current student, and produces output |
Line 1810 sub print_resources {
|
Line 1815 sub print_resources {
|
my %page_breaks = &get_page_breaks($helper); |
my %page_breaks = &get_page_breaks($helper); |
my @format_array = split(/\|/,$helper->{'VARS'}->{'FORMAT'}); |
my @format_array = split(/\|/,$helper->{'VARS'}->{'FORMAT'}); |
my $columns_in_format = $format_array[1]; |
my $columns_in_format = $format_array[1]; |
|
# |
|
# end each student with a |
|
# Special that allows the post processor to even out the page |
|
# counts later. Nasty problem this... it would be really |
|
# nice to put the special in as a postscript comment |
|
# e.g. \special{ps:\ENDOFSTUDENTSTAMP} unfortunately, |
|
# The special gets passed the \ and dvips puts it in the output file |
|
# so we will just rely on prntout.pl to strip ENDOFSTUDENTSTAMP from the |
|
# postscript. Each ENDOFSTUDENTSTAMP will go on a line by itself. |
|
# |
|
|
foreach my $curresline (@{$master_seq}) { |
foreach my $curresline (@{$master_seq}) { |
if (defined $page_breaks{$curresline}) { |
if (defined $page_breaks{$curresline}) { |
Line 1860 sub print_resources {
|
Line 1875 sub print_resources {
|
$rendered =~ s/\\end{document}//; |
$rendered =~ s/\\end{document}//; |
} |
} |
$current_output .= $rendered; |
$current_output .= $rendered; |
} elsif ($res_url=~/\/(smppg|syllabus|aboutme|bulletinboard)$/) { |
} elsif ($res_url=~/\/(smppg|grppg|syllabus|aboutme|bulletinboard)$/) { |
$printed .= $curresline.':'; |
$printed .= $curresline.':'; |
my $rendered = &Apache::loncommon::get_student_view($curresline,$username,$userdomain,$env{'request.course.id'},'tex',$moreenv); |
my $rendered = &Apache::loncommon::get_student_view($curresline,$username,$userdomain,$env{'request.course.id'},'tex',$moreenv); |
|
|
Line 1905 sub print_resources {
|
Line 1920 sub print_resources {
|
$current_output = '\strut\vspace*{-6 mm}\\newline\\noindent\\makebox[\\textwidth/$number_of_columns][b]{\\hrulefill}\vspace*{-2 mm}\\newline\\noindent{\\tiny Printed from LON-CAPA\\copyright MSU{\\hfill} Licensed under GNU General Public License }\\newpage '.$blankpages.'\setcounter{page}{1}\noindent\parbox{\minipagewidth}{\noindent\\fancyhead[LO]{\\textit{\\textbf{'.$fullname.'}}'.$courseidinfo.' \\hfill \\thepage \\\\ \\textit{'.$currentassignment.'}'.$namepostfix.'}} \vskip 5 mm '.$current_output; |
$current_output = '\strut\vspace*{-6 mm}\\newline\\noindent\\makebox[\\textwidth/$number_of_columns][b]{\\hrulefill}\vspace*{-2 mm}\\newline\\noindent{\\tiny Printed from LON-CAPA\\copyright MSU{\\hfill} Licensed under GNU General Public License }\\newpage '.$blankpages.'\setcounter{page}{1}\noindent\parbox{\minipagewidth}{\noindent\\fancyhead[LO]{\\textit{\\textbf{'.$fullname.'}}'.$courseidinfo.' \\hfill \\thepage \\\\ \\textit{'.$currentassignment.'}'.$namepostfix.'}} \vskip 5 mm '.$current_output; |
} |
} |
} |
} |
|
# |
|
# Close the student bracketing. |
|
# |
|
$current_output .= "\n\\special{ps:ENDOFSTUDENTSTAMP}\n"; |
return ($current_output,$fullname, $printed); |
return ($current_output,$fullname, $printed); |
|
|
} |
} |
Line 2179 HELPERFRAGMENT
|
Line 2198 HELPERFRAGMENT
|
# If the user has pfo (print for otheres) allow them to print all |
# If the user has pfo (print for otheres) allow them to print all |
# problems and resources in the entier course, optionally for selected students |
# problems and resources in the entier course, optionally for selected students |
if ($perm{'pfo'} && |
if ($perm{'pfo'} && |
($helper->{VARS}->{'postdata'}=~/\/res\// || $helper->{VARS}->{'postdata'}=~/\/(syllabus|smppg|aboutme|bulletinboard)$/)) { |
($helper->{VARS}->{'postdata'}=~/\/res\// || $helper->{VARS}->{'postdata'}=~/\/(syllabus|smppg|grppg|aboutme|bulletinboard)$/)) { |
|
|
push @{$printChoices}, ['<b>Problems</b> from <b>entire course</b>', 'all_problems', 'ALL_PROBLEMS']; |
push @{$printChoices}, ['<b>Problems</b> from <b>entire course</b>', 'all_problems', 'ALL_PROBLEMS']; |
push @{$printChoices}, ['<b>Resources</b> from <b>entire course</b>', 'all_resources', 'ALL_RESOURCES']; |
push @{$printChoices}, ['<b>Resources</b> from <b>entire course</b>', 'all_resources', 'ALL_RESOURCES']; |
Line 2247 ALL_PROBLEMS
|
Line 2266 ALL_PROBLEMS
|
<choice computer="all">All assignments in a single PDF file</choice> |
<choice computer="all">All assignments in a single PDF file</choice> |
<choice computer="sections">Each PDF contains exactly one section</choice> |
<choice computer="sections">Each PDF contains exactly one section</choice> |
<choice computer="oneper">Each PDF contains exactly one assignment</choice> |
<choice computer="oneper">Each PDF contains exactly one assignment</choice> |
<choice computer="usenumber" relatedvalue="NUMBER_TO_PRINT" relateddefault="all"> |
<choice computer="usenumber" relatedvalue="NUMBER_TO_PRINT"> |
Specify Number:</choice> |
Specify the number of assignments per PDF:</choice> |
</choices> |
</choices> |
</state> |
</state> |
RESOURCE_SELECTOR |
RESOURCE_SELECTOR |
Line 2286 CHOOSE_STUDENTS
|
Line 2305 CHOOSE_STUDENTS
|
} |
} |
} |
} |
|
|
my $code_selection = "<choice></choice>\n"; |
my $code_selection; |
foreach my $code (sort {uc($a) cmp uc($b)} (keys(%codes_to_print))) { |
foreach my $code (sort {uc($a) cmp uc($b)} (keys(%codes_to_print))) { |
my $choice = $code; |
my $choice = $code; |
if ($code =~ /^[A-Z]+$/) { # Alpha code |
if ($code =~ /^[A-Z]+$/) { # Alpha code |
Line 2296 CHOOSE_STUDENTS
|
Line 2315 CHOOSE_STUDENTS
|
} |
} |
if (%codes_to_print) { |
if (%codes_to_print) { |
$code_selection .=' |
$code_selection .=' |
<exec> |
<message><b>Choose single code from list</b></message> |
push(@{$state->{CHOICES}},@{$helper->{DATA}{ALL_CODE_CHOICES}}); |
<message></td><td></message> |
</exec> |
<dropdown variable="CODE_SELECTED_FROM_LIST" multichoice="0" allowempty="0"> |
|
<choice></choice> |
|
<exec> |
|
push(@{$state->{CHOICES}},@{$helper->{DATA}{ALL_CODE_CHOICES}}); |
|
</exec> |
|
</dropdown> |
|
<message></td></tr><tr><td colspan="2"><hr width=\'33%\' /></td></tr><tr><td></message> |
'.$/; |
'.$/; |
|
|
} |
} |
|
|
|
|
Line 2357 CHOOSE_STUDENTS
|
Line 2383 CHOOSE_STUDENTS
|
</validator> |
</validator> |
</string> |
</string> |
<message></td></tr><tr><td colspan="2"><hr width='33%' /></td></tr><tr><td></message> |
<message></td></tr><tr><td colspan="2"><hr width='33%' /></td></tr><tr><td></message> |
<message><b>Choose single code from list</b></message> |
|
<message></td><td></message> |
|
<choices variable="CODE_SELECTED_FROM_LIST" multichoice="0" allowempty="0"> |
|
$code_selection |
$code_selection |
</choices> |
|
<message></td></tr><tr><td colspan="2"><hr width='33%' /></td></tr><tr><td></message> |
|
<message><b>Reprint a set of saved CODEs:</b></message> |
<message><b>Reprint a set of saved CODEs:</b></message> |
<message></td><td></message> |
<message></td><td></message> |
<dropdown variable="REUSE_OLD_CODES"> |
<dropdown variable="REUSE_OLD_CODES"> |
Line 2408 CHOOSE_ANON1
|
Line 2431 CHOOSE_ANON1
|
<choice computer="all">All assignments in a single PDF file</choice> |
<choice computer="all">All assignments in a single PDF file</choice> |
<choice computer="sections">Each PDF contains exactly one section</choice> |
<choice computer="sections">Each PDF contains exactly one section</choice> |
<choice computer="oneper">Each PDF contains exactly one assignment</choice> |
<choice computer="oneper">Each PDF contains exactly one assignment</choice> |
<choice computer="usenumber" relatedvalue="NUMBER_TO_PRINT" relateddefault="all"> |
<choice computer="usenumber" relatedvalue="NUMBER_TO_PRINT"> |
Specify Number:</choice> |
Specify the number of assignments per PDF:</choice> |
</choices> |
</choices> |
</state> |
</state> |
RESOURCE_SELECTOR |
RESOURCE_SELECTOR |
Line 2468 CHOOSE_STUDENTS1
|
Line 2491 CHOOSE_STUDENTS1
|
</validator> |
</validator> |
</string> |
</string> |
<message></td></tr><tr><td colspan="2"><hr width='33%' /></td></tr><tr><td></message> |
<message></td></tr><tr><td colspan="2"><hr width='33%' /></td></tr><tr><td></message> |
<message><b>Choose single code from list</b></message> |
|
<message></td><td></message> |
|
<dropdown variable="CODE_SELECTED_FROM_LIST" multichoice="0" allowempty="0"> |
|
$code_selection |
$code_selection |
</dropdown> |
|
<message></td></tr><tr><td colspan="2"><hr width='33%' /></td></tr><tr><td></message> |
|
<message><b>Reprint a set of saved CODEs:</b></message> |
<message><b>Reprint a set of saved CODEs:</b></message> |
<message></td><td></message> |
<message></td><td></message> |
<dropdown variable="REUSE_OLD_CODES"> |
<dropdown variable="REUSE_OLD_CODES"> |
Line 2936 sub preprocess {
|
Line 2954 sub preprocess {
|
my $helper = Apache::lonhelper::getHelper(); |
my $helper = Apache::lonhelper::getHelper(); |
|
|
my $format = $helper->{VARS}->{$self->{'formatvar'}}; |
my $format = $helper->{VARS}->{$self->{'formatvar'}}; |
# if (substr($format, 2, 1) ne '1') { |
if (substr($format, 2, 1) ne '1') { |
# $helper->changeState($self->{NEXTSTATE}); |
$helper->changeState($self->{NEXTSTATE}); |
# } |
} |
|
|
return 1; |
return 1; |
} |
} |