--- loncom/interface/lonprintout.pm 2005/07/05 18:15:25 1.377
+++ loncom/interface/lonprintout.pm 2005/07/26 10:50:32 1.380
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Printout
#
-# $Id: lonprintout.pm,v 1.377 2005/07/05 18:15:25 albertel Exp $
+# $Id: lonprintout.pm,v 1.380 2005/07/26 10:50:32 foxr Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -998,13 +998,15 @@ ENDPART
if((($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||
($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) &&
($urlp=~/\.(problem|exam|quiz|assess|survey|form|library|page)$/)) {
- $form{'grade_target'}='answer';
- $form{'answer_output_mode'}='tex';
- $form{'rndseed'}=$rndseed;
- $form{'problem_split'}=$parmhash{'problem_stream_switch'};
+ # Don't permanently modify %$form...
+ my %answerform = %form;
+ $answerform{'grade_target'}='answer';
+ $answerform{'answer_output_mode'}='tex';
+ $answerform{'rndseed'}=$rndseed;
+ $answerform{'problem_split'}=$parmhash{'problem_stream_switch'};
if ($urlp=~/\/res\//) {$env{'request.state'}='published';}
$resources_printed .= $urlp.':';
- my $answer=&Apache::lonnet::ssi($urlp,%form);
+ my $answer=&Apache::lonnet::ssi($urlp,%answerform);
if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {
$texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/;
} else {
@@ -1105,10 +1107,12 @@ ENDPART
my $current_counter=$env{'form.counter'};
if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||
($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) {
- $form{'grade_target'}='answer';
- $form{'answer_output_mode'}='tex';
+ # Don't permanently pervert the %form hash
+ my %answerform = %form;
+ $answerform{'grade_target'}='answer';
+ $answerform{'answer_output_mode'}='tex';
$resources_printed .= $urlp.':';
- my $answer=&Apache::lonnet::ssi($urlp,%form);
+ my $answer=&Apache::lonnet::ssi($urlp,%answerform);
&Apache::lonnet::appenv(('form.counter' => $current_counter));
if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {
$texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/;
@@ -1312,12 +1316,14 @@ ENDPART
my $texversion=&Apache::lonnet::ssi($urlp,%form);
if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||
($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) {
- $form{'grade_target'}='answer';
- $form{'answer_output_mode'}='tex';
- $form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};
- $form{'rndseed'}=$rndseed;
+ # Don't permanently pervert %form:
+ my %answerform = %form;
+ $answerform{'grade_target'}='answer';
+ $answerform{'answer_output_mode'}='tex';
+ $answerform{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};
+ $answerform{'rndseed'}=$rndseed;
$resources_printed .= $urlp.':';
- my $answer=&Apache::lonnet::ssi($urlp,%form);
+ my $answer=&Apache::lonnet::ssi($urlp,%answerform);
if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {
$texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/;
} else {
@@ -1373,7 +1379,7 @@ ENDPART
#-- writing .tex file in prtspool
my $temp_file;
my $identifier = &Apache::loncommon::get_cgi_id();
- my $filename = "/home/httpd/prtspool/$env{'user.name'}_$env{'user.domain'}_printout_".$identifier.".tex";
+ my $filename = "/home/httpd/prtspool/$env{'user.name'}_$env{'user.domain'}_printout_$identifier.tex";
if (!($#print_array>0)) {
unless ($temp_file = Apache::File->new('>'.$filename)) {
$r->log_error("Couldn't open $filename for output $!");
@@ -1396,7 +1402,8 @@ ENDPART
my $temp_file;
my $newfilename=$filename;
my $num=$i+1;
- $newfilename =~s/\.tex$/_$num\.tex/;
+ $newfilename =~s/\.tex$//;
+ $newfilename=sprintf("%s_%03d.tex",$newfilename, $num);
unless ($temp_file = Apache::File->new('>'.$newfilename)) {
$r->log_error("Couldn't open $newfilename for output $!");
return SERVER_ERROR;
@@ -1526,9 +1533,11 @@ sub print_resources {
my $current_counter=$env{'form.counter'};
if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||
($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) {
- $moreenv->{'answer_output_mode'}='tex';
- $moreenv->{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};
- my $ansrendered = &Apache::loncommon::get_student_answers($curresline,$username,$userdomain,$env{'request.course.id'},%{$moreenv});
+ # Use a copy of the hash so we don't pervert it on future loop passes.
+ my %answerenv = %{$moreenv};
+ $answerenv{'answer_output_mode'}='tex';
+ $answerenv{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};
+ my $ansrendered = &Apache::loncommon::get_student_answers($curresline,$username,$userdomain,$env{'request.course.id'},%answerenv);
&Apache::lonnet::appenv(('form.counter' => $current_counter));
if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {
$rendered=~s/(\\keephidden{ENDOFPROBLEM})/$ansrendered$1/;
@@ -2192,11 +2201,11 @@ CHOOSE_FROM_ANY_SEQUENCE
Use style file: |
- Select style file |
- |
+ Select style file
Show all foils?
+ |
RNDSEED
&Apache::lonxml::xmlparse($r, 'helper', $xmlfrag);
$helper->{'VARS'}->{'style_file'}=$env{'form.style_file_value'};