version 1.254, 2003/10/10 13:38:26
|
version 1.263, 2003/11/10 23:26:42
|
Line 25
|
Line 25
|
# |
# |
# http://www.lon-capa.org/ |
# http://www.lon-capa.org/ |
# |
# |
# (Internal Server Error Handler |
|
# |
|
# (Login Screen |
|
# 5/21/99,5/22,5/25,5/26,5/31,6/2,6/10,7/12,7/14, |
|
# 1/14/00,5/29,5/30,6/1,6/29,7/1,11/9 Gerd Kortemeyer) |
|
# |
|
# 3/1/1 Gerd Kortemeyer) |
|
# |
|
# 3/1 Gerd Kortemeyer |
|
# |
|
# 9/17 Alex Sakharuk |
|
# |
# |
package Apache::lonprintout; |
package Apache::lonprintout; |
|
|
Line 51 use Apache::File();
|
Line 40 use Apache::File();
|
use Apache::lonnavmaps; |
use Apache::lonnavmaps; |
use Apache::lonratedt; |
use Apache::lonratedt; |
use POSIX qw(strftime); |
use POSIX qw(strftime); |
|
use Apache::lonlocal; |
use GDBM_File; |
use GDBM_File; |
|
|
|
|
Line 485 sub page_format_transformation {
|
Line 475 sub page_format_transformation {
|
my ($papersize,$layout,$numberofcolumns,$choice,$text,$assignment,$tableofcontents,$indexlist) = @_; |
my ($papersize,$layout,$numberofcolumns,$choice,$text,$assignment,$tableofcontents,$indexlist) = @_; |
my ($textwidth,$textheight,$oddoffset,$evenoffset,$topmargin); |
my ($textwidth,$textheight,$oddoffset,$evenoffset,$topmargin); |
$assignment=&Apache::lonxml::latex_special_symbols($assignment,'header'); |
$assignment=&Apache::lonxml::latex_special_symbols($assignment,'header'); |
if ($numberofcolumns != 1) { |
($textwidth,$textheight,$oddoffset,$evenoffset,$topmargin) = &page_format($papersize,$layout,$numberofcolumns,$topmargin); |
($textwidth,$textheight,$oddoffset,$evenoffset,$topmargin) = &page_format($papersize,$layout,$numberofcolumns,$topmargin); |
|
} else { |
|
($textwidth,$textheight,$oddoffset,$evenoffset) = ($ENV{'form.width'},$ENV{'form.height'},$ENV{'form.leftmargin'},$ENV{'form.leftmargin'}); |
|
} |
|
my $name = &get_name(); |
my $name = &get_name(); |
my $courseidinfo = &get_course(); |
my $courseidinfo = &get_course(); |
if (defined($courseidinfo)) { $courseidinfo=' - '.$courseidinfo } |
if (defined($courseidinfo)) { $courseidinfo=' - '.$courseidinfo } |
Line 715 ENDPART
|
Line 701 ENDPART
|
if ($helper->{'VARS'}->{'ANSWER_TYPE'} ne 'only') { |
if ($helper->{'VARS'}->{'ANSWER_TYPE'} ne 'only') { |
my %moreenv; |
my %moreenv; |
$moreenv{'request.filename'}=$currentURL; |
$moreenv{'request.filename'}=$currentURL; |
|
if ($helper->{'VARS'}->{'style_file'}=~/\w/) {$moreenv{'construction_space_style'}=$helper->{'VARS'}->{'style_file'};} |
my %form; |
my %form; |
$form{'grade_target'}='tex'; |
$form{'grade_target'}='tex'; |
$form{'textwidth'}=$LaTeXwidth; |
$form{'textwidth'}=$LaTeXwidth; |
Line 825 ENDPART
|
Line 812 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 ($currentURL=~/\/smppg$/) { |
|
my %form; |
|
$form{'grade_target'}='tex'; |
|
$form{'textwidth'}=$LaTeXwidth; |
|
$form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'}; |
|
my $texversion=&Apache::lonnet::ssi($currentURL,%form); |
|
$result .= $texversion; |
} else { |
} else { |
$result.='\documentclass[letterpaper]{article}\usepackage{calc}\begin{document}Printout of this type of document is currently not supported: '; |
$result.='\documentclass[letterpaper]{article}\usepackage{calc}\begin{document}Printout of this type of document is currently not supported: '; |
if ($currentURL=~/\/(aboutme|syllabus|bulletinboard|smppg)$/) { |
if ($currentURL=~/\/(aboutme|syllabus|bulletinboard|smppg)$/) { |
Line 850 ENDPART
|
Line 844 ENDPART
|
my $flag_page_in_sequence = 'NO'; |
my $flag_page_in_sequence = 'NO'; |
my @master_seq=split /\|\|\|/, $helper->{'VARS'}->{'RESOURCES'}; |
my @master_seq=split /\|\|\|/, $helper->{'VARS'}->{'RESOURCES'}; |
my $prevassignment=''; |
my $prevassignment=''; |
&Apache::lonnet::delenv('form.counter'); |
|
&Apache::lonxml::init_counter(); |
&Apache::lonxml::init_counter(); |
for (my $i=0;$i<=$#master_seq;$i++) { |
for (my $i=0;$i<=$#master_seq;$i++) { |
my (undef,undef,$urlp)=&Apache::lonnet::decode_symb($master_seq[$i]); |
my (undef,undef,$urlp)=&Apache::lonnet::decode_symb($master_seq[$i]); |
Line 869 ENDPART
|
Line 862 ENDPART
|
my $assignment=&Apache::lonxml::latex_special_symbols(&Apache::lonnet::gettitle($sequence),'header'); #tittle of the assignment which contains this problem |
my $assignment=&Apache::lonxml::latex_special_symbols(&Apache::lonnet::gettitle($sequence),'header'); #tittle of the assignment which contains this problem |
if ($i==0) {$prevassignment=$assignment;} |
if ($i==0) {$prevassignment=$assignment;} |
#&Apache::lonnet::logthis("Trying to get $urlp with symb $master_seq[$i]"); |
#&Apache::lonnet::logthis("Trying to get $urlp with symb $master_seq[$i]"); |
my $texversion=&Apache::lonnet::ssi($urlp,%form); |
my $texversion.=&Apache::lonnet::ssi($urlp,%form); |
if ($urlp=~/\.page$/) { |
if ($urlp=~/\.page$/) { |
($texversion,my $number_of_columns_page) = &page_cleanup($texversion); |
($texversion,my $number_of_columns_page) = &page_cleanup($texversion); |
if ($number_of_columns_page > $number_of_columns) {$number_of_columns=$number_of_columns_page;} |
if ($number_of_columns_page > $number_of_columns) {$number_of_columns=$number_of_columns_page;} |
$texversion =~ s/\\end{document}\d*/\\end{document}/; |
$texversion =~ s/\\end{document}\d*/\\end{document}/; |
$flag_page_in_sequence = 'YES'; |
$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') || |
if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') || |
($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) { |
($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) { |
my %form; |
my %form; |
$form{'grade_target'}='answer'; |
$form{'grade_target'}='answer'; |
$form{'answer_output_mode'}='tex'; |
$form{'answer_output_mode'}='tex'; |
my $answer=&Apache::lonnet::ssi($urlp,%form); |
my $answer=&Apache::lonnet::ssi($urlp,%form); |
|
&Apache::lonnet::appenv(('form.counter' => $current_counter)); |
if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') { |
if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') { |
$texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/; |
$texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/; |
} else { |
} else { |
Line 947 ENDPART
|
Line 947 ENDPART
|
if (&Apache::lonnet::allowed('bre',$res_url)) { |
if (&Apache::lonnet::allowed('bre',$res_url)) { |
my $rendered = &Apache::loncommon::get_student_view($curresline,$username,$userdomain, |
my $rendered = &Apache::loncommon::get_student_view($curresline,$username,$userdomain, |
$ENV{'request.course.id'},'tex'); |
$ENV{'request.course.id'},'tex'); |
|
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') || |
if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') || |
($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) { |
($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) { |
my %form; |
my %form; |
$form{'answer_output_mode'}='tex'; |
$form{'answer_output_mode'}='tex'; |
$form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'}; |
$form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'}; |
my $ansrendered = &Apache::loncommon::get_student_answers($curresline,$username,$userdomain,$ENV{'request.course.id'},%form); |
my $ansrendered = &Apache::loncommon::get_student_answers($curresline,$username,$userdomain,$ENV{'request.course.id'},%form); |
|
&Apache::lonnet::appenv(('form.counter' => $current_counter)); |
if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') { |
if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') { |
$rendered=~s/(\\keephidden{ENDOFPROBLEM})/$ansrendered$1/; |
$rendered=~s/(\\keephidden{ENDOFPROBLEM})/$ansrendered$1/; |
} else { |
} else { |
Line 986 ENDPART
|
Line 993 ENDPART
|
&Apache::lonnet::delenv('form.counter'); |
&Apache::lonnet::delenv('form.counter'); |
&Apache::lonxml::init_counter(); |
&Apache::lonxml::init_counter(); |
&Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state, |
&Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state, |
'last student '.$fullname); |
&mt('last student').' '.$fullname); |
} |
} |
&Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); |
&Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); |
$result .= '\end{document}'; |
$result .= '\end{document}'; |
Line 1068 ENDPART
|
Line 1075 ENDPART
|
$result = &latex_corrections($number_of_columns,$result); |
$result = &latex_corrections($number_of_columns,$result); |
#changes page's parameters for the one column output |
#changes page's parameters for the one column output |
if ($numberofcolumns == 1) { |
if ($numberofcolumns == 1) { |
$result =~ s/\\textwidth= 9cm/\\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 25\.9cm/\\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 = -0\.57in/\\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 = -0\.57in/\\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'} /; |
} |
|
if ($helper->{'VARS'}->{'TABLE_CONTENTS'} eq 'yes') {$selectionmade*=10;} |
|
if ($helper->{'VARS'}->{'TABLE_INDEX'} eq 'yes') { |
|
if ($selectionmade<10) {$selectionmade*=100;} else {$selectionmade*=10;} |
|
} |
} |
if ($ENV{'request.role.adv'}) {$selectionmade*=10000;} |
|
#-- writing .tex file in prtspool |
#-- writing .tex file in prtspool |
my $temp_file; |
my $temp_file; |
my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout_".time."_".rand(10000000).".tex"; |
my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout_".time."_".rand(10000000).".tex"; |
unless ($temp_file = Apache::File->new('>'.$filename)) { |
unless ($temp_file = Apache::File->new('>'.$filename)) { |
$r->log_error("Couldn't open $filename for output $!"); |
$r->log_error("Couldn't open $filename for output $!"); |
return SERVER_ERROR; |
return SERVER_ERROR; |
} |
} |
|
|
|
my $identifier = &Apache::loncommon::get_cgi_id(); |
|
&Apache::lonnet::appenv('cgi.'.$identifier.'.file' => $filename, |
|
'cgi.'.$identifier.'.layout' => $laystyle, |
|
'cgi.'.$identifier.'.numcol' => $numberofcolumns, |
|
'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'}); |
|
|
print $temp_file $result; |
print $temp_file $result; |
|
|
$r->print(<<FINALEND); |
$r->print(<<FINALEND); |
<meta http-equiv="Refresh" content="0; url=/cgi-bin/printout.pl?$filename&$laystyle&$numberofcolumns&$selectionmade"> |
<meta http-equiv="Refresh" content="0; url=/cgi-bin/printout.pl?$identifier"> |
</body> |
</body> |
</html> |
</html> |
FINALEND |
FINALEND |
Line 1183 sub printHelper {
|
Line 1195 sub printHelper {
|
$helper->declareVar('filename'); |
$helper->declareVar('filename'); |
$helper->declareVar('construction'); |
$helper->declareVar('construction'); |
$helper->declareVar('assignment'); |
$helper->declareVar('assignment'); |
|
$helper->declareVar('style_file'); |
|
|
# This will persistently load in the data we want from the |
# This will persistently load in the data we want from the |
# very first screen. |
# very first screen. |
Line 1531 CHOOSE_FROM_ANY_SEQUENCE
|
Line 1544 CHOOSE_FROM_ANY_SEQUENCE
|
<defaultvalue> |
<defaultvalue> |
return $helper->{VARS}->{'curseed'}; |
return $helper->{VARS}->{'curseed'}; |
</defaultvalue> |
</defaultvalue> |
</string> |
</string> |
|
<message></td></tr><tr><td align="right">Use style file: </td><td></message> |
|
<string variable="style_file" size="25" maxlength="50"> |
|
</string> |
<message></td></tr></message> |
<message></td></tr></message> |
RNDSEED |
RNDSEED |
&Apache::lonxml::xmlparse($r, 'helper', $xmlfrag); |
&Apache::lonxml::xmlparse($r, 'helper', $xmlfrag); |