--- loncom/interface/lonprintout.pm 2005/08/16 10:25:15 1.386
+++ loncom/interface/lonprintout.pm 2006/03/01 11:20:37 1.424
@@ -1,7 +1,7 @@
-# The LearningOnline Network
+# The LearningOnline Network
# Printout
#
-# $Id: lonprintout.pm,v 1.386 2005/08/16 10:25:15 foxr Exp $
+# $Id: lonprintout.pm,v 1.424 2006/03/01 11:20:37 foxr Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -42,7 +42,7 @@ use Apache::lonratedt;
use POSIX qw(strftime);
use Apache::lonlocal;
-my $resources_printed = '';
+my %perm;
#
# Convert a numeric code to letters
@@ -87,11 +87,11 @@ sub letters_to_num {
sub is_valid_numeric_code {
my ($value, $num_digits) = @_;
# Remove leading/trailing whitespace;
- $value =~ s/^\s*//;
- $value =~ s/\s*$//;
+ $value =~ s/^\s*//g;
+ $value =~ s/\s*$//g;
# All digits?
- if ($value =~ /^[0-9]+$/) {
+ if ($value !~ /^[0-9]+$/) {
return "Numeric code $value has invalid characters - must only be digits";
}
if (length($value) != $num_digits) {
@@ -226,6 +226,18 @@ sub latex_header_footer_remove {
$text =~ s/\\documentclass([^&]*)\\begin{document}//;
return $text;
}
+#
+# If necessary, encapsulate text inside
+# a minipage env.
+# necessity is determined by the problem_split param.
+#
+sub encapsulate_minipage {
+ my ($text) = @_;
+ if (!(env{'form.problem.split'} =~ /yes/i)) {
+ $text = '\begin{minipage}{\textwidth}'.$text.'\end{minipage}';
+ }
+ return $text;
+}
sub character_chart {
@@ -433,6 +445,7 @@ sub character_chart {
$result =~ s/&(\#252|uuml);/\\\"{u}/g;
$result =~ s/&(\#253|yacute);/\\\'{y}/g;
$result =~ s/&(\#255|yuml);/\\\"{y}/g;
+ $result =~ s/&\#295;/\\ensuremath\{\\hbar\}/g;
$result =~ s/&\#952;/\\ensuremath\{\\theta\}/g;
#Greek Alphabet
$result =~ s/&(alpha|\#945);/\\ensuremath\{\\alpha\}/g;
@@ -508,6 +521,7 @@ sub character_chart {
$result =~ s/&(prod|\#8719);/\\ensuremath\{\\prod\}/g;
$result =~ s/&(sum|\#8721);/\\ensuremath\{\\sum\}/g;
$result =~ s/&(minus|\#8722);/\\ensuremath\{-\}/g;
+ $result =~ s/–/\\ensuremath\{-\}/g;
$result =~ s/&(lowast|\#8727);/\\ensuremath\{*\}/g;
$result =~ s/&(radic|\#8730);/\\ensuremath\{\\surd\}/g;
$result =~ s/&(prop|\#8733);/\\ensuremath\{\\propto\}/g;
@@ -748,15 +762,13 @@ sub details_for_menu {
sub latex_corrections {
-
- my ($number_of_columns,$result,$selectionmade) = @_;
-
+ my ($number_of_columns,$result,$selectionmade,$answer_mode) = @_;
# $result =~ s/\\includegraphics{/\\includegraphics\[width=\\minipagewidth\]{/g;
$result =~ s/\$number_of_columns/$number_of_columns/g;
- if ($selectionmade ne '1') {
- $result =~ s/(\\end{document})/\\strut\\vspace\*{-4 mm}\\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 $1/;
+ if ($selectionmade eq '1' || $answer_mode eq 'only') {
+ $result =~ s/(\\end{document})/\\strut\\vskip 0 mm\\noindent\\makebox\[\\textwidth\/$number_of_columns\]\[b\]{\\hrulefill}\\newline\\noindent\\tiny Printed from LON-CAPA\\copyright MSU{\\hfill} Licensed under GNU General Public License $1/;
} else {
- $result =~ s/(\\end{document})/\\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 $1/;
+ $result =~ s/(\\end{document})/\\strut\\vspace\*{-4 mm}\\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 $1/;
}
$result =~ s/(\\end{longtable}\s*)(\\strut\\newline\\noindent\\makebox\[\\textwidth\/$number_of_columns\]\[b\]{\\hrulefill})/$2$1/g;
$result =~ s/(\\end{longtable}\s*)\\strut\\newline/$1/g;
@@ -780,7 +792,6 @@ sub latex_corrections {
}
$result =~ s/(\\end{tabular})\s*\\vskip 0 mm/$1/g;
$result =~ s/(\\begin{enumerate})\s*\\noindent/$1/g;
-
return $result;
}
@@ -815,13 +826,15 @@ sub IndexCreation {
sub print_latex_header {
my $mode=shift;
- my $output='\documentclass[letterpaper]{article}';
- if (($mode eq 'batchmode') || (!$env{'request.role.adv'})) {
+ my $output='\documentclass[letterpaper,twoside]{article}';
+ if (($mode eq 'batchmode') || (!$perm{'pav'})) {
$output.='\batchmode';
}
$output.='\newcommand{\keephidden}[1]{}\renewcommand{\deg}{$^{\circ}$}'."\n".
+ '\usepackage{multirow}'."\n".
'\usepackage{longtable}\usepackage{textcomp}\usepackage{makeidx}'."\n".
'\usepackage[dvips]{graphicx}\usepackage{epsfig}'."\n".
+ '\usepackage{wrapfig}'.
'\usepackage{picins}\usepackage{calc}'."\n".
'\newenvironment{choicelist}{\begin{list}{}{\setlength{\rightmargin}{0in}'."\n".
'\setlength{\leftmargin}{0.13in}\setlength{\topsep}{0.05in}'."\n".
@@ -841,16 +854,19 @@ sub print_latex_header {
sub path_to_problem {
my ($urlp,$colwidth)=@_;
+ $urlp=&Apache::lonnet::clutter($urlp);
+
my $newurlp = '';
$colwidth=~s/\s*mm\s*$//;
#characters average about 2 mm in width
if (length($urlp)*2 > $colwidth) {
- my @elements = split '/',$urlp;
+ my @elements = split('/',$urlp);
my $curlength=0;
foreach my $element (@elements) {
+ if ($element eq '') { next; }
if ($curlength+(length($element)*2) > $colwidth) {
- $newurlp .= '|\vskip -1 mm \noindent \verb|';
- $curlength=0;
+ $newurlp .= '|\vskip -1 mm \verb|';
+ $curlength=length($element)*2;
} else {
$curlength+=length($element)*2;
}
@@ -889,11 +905,14 @@ sub get_textwidth {
sub unsupported {
- my ($currentURL,$mode)=@_;
+ my ($currentURL,$mode,$symb)=@_;
if ($mode ne '') {$mode='\\'.$mode}
my $result.= &print_latex_header($mode);
- if ($currentURL=~/\/ext\//) {
- $result.=' \strut \\\\ THIS IS EXTERNAL RESOURCE WITH URL \strut \\\\ '.$currentURL.' ';
+ if ($currentURL=~m|^(/adm/wrapper/)?ext/|) {
+ $currentURL=~s|^(/adm/wrapper/)?ext/|http://|;
+ my $title=&Apache::lonnet::gettitle($symb);
+ $title = &Apache::lonxml::latex_special_symbols($title);
+ $result.=' \strut \\\\ '.$title.' \strut \\\\ '.$currentURL.' ';
} else {
$result.=$currentURL;
}
@@ -903,6 +922,49 @@ sub unsupported {
#
+# List of recently generated print files
+#
+sub recently_generated {
+ my $r=shift;
+ my $prtspool=$r->dir_config('lonPrtDir');
+ my $zip_result;
+ my $pdf_result;
+ opendir(DIR,$prtspool);
+
+ my @files =
+ grep(/^$env{'user.name'}_$env{'user.domain'}_printout_(\d+)_.*\.(pdf|zip)$/,readdir(DIR));
+ closedir(DIR);
+
+ @files = sort {
+ my ($actime) = (stat($prtspool.'/'.$a))[10];
+ my ($bctime) = (stat($prtspool.'/'.$b))[10];
+ return $bctime <=> $actime;
+ } (@files);
+
+ foreach my $filename (@files) {
+ my ($ext) = ($filename =~ m/(pdf|zip)$/);
+ my ($cdev,$cino,$cmode,$cnlink,
+ $cuid,$cgid,$crdev,$csize,
+ $catime,$cmtime,$cctime,
+ $cblksize,$cblocks)=stat($prtspool.'/'.$filename);
+ my $result="".
+ &mt('Generated [_1] ([_2] bytes)',
+ &Apache::lonlocal::locallocaltime($cctime),$csize).
+ '
';
+ if ($ext eq 'pdf') { $pdf_result .= $result; }
+ if ($ext eq 'zip') { $zip_result .= $result; }
+ }
+ if ($zip_result) {
+ $r->print('
'.&mt('Recently generated printout zip files')."
\n"
+ .$zip_result);
+ }
+ if ($pdf_result) {
+ $r->print(''.&mt('Recently generated printouts')."
\n"
+ .$pdf_result);
+ }
+}
+
+#
# Retrieve the hash of page breaks.
#
# Inputs:
@@ -911,21 +973,27 @@ sub unsupported {
# A reference to a page break hash.
#
#
+#use Data::Dumper;
+#sub dump_helper_vars {
+# my ($helper) = @_;
+# my $helpervars = Dumper($helper->{'VARS'});
+# &Apache::lonnet::logthis("Dump of helper vars:\n $helpervars");
+#}
sub get_page_breaks {
my ($helper) = @_;
my %page_breaks;
-
+
foreach my $break (split /\|\|\|/, $helper->{'VARS'}->{'FINISHPAGE'}) {
$page_breaks{$break} = 1;
}
-
return %page_breaks;
}
sub output_data {
my ($r,$helper,$rparmhash) = @_;
my %parmhash = %$rparmhash;
+ my $resources_printed = '';
my $html=&Apache::lonxml::xmlbegin();
my $bodytag=&Apache::loncommon::bodytag('Preparing Printout');
$r->print(<LON-CAPA output for printing
$bodytag
+
Please stand by while processing your print request, this may take some time ...
+
ENDPART
@@ -1026,7 +1096,8 @@ ENDPART
$cleanURL=$currentURL;
}
$selectionmade = 1;
- if ($cleanURL=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {
+ if ($cleanURL!~m|^/adm/|
+ && $cleanURL=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {
my $rndseed=time;
my $texversion='';
if ($helper->{'VARS'}->{'ANSWER_TYPE'} ne 'only') {
@@ -1051,17 +1122,24 @@ ENDPART
&Apache::lonnet::appenv(%moreenv);
&Apache::lonnet::delenv('form.counter');
&Apache::lonxml::init_counter();
+ &Apache::lonxml::store_counter();
$resources_printed .= $currentURL.':';
$texversion.=&Apache::lonnet::ssi($currentURL,%form);
&Apache::lonnet::delenv('form.counter');
&Apache::lonnet::delenv('request.filename');
}
+ # current document with answers.. no need to encap in minipage
+ # since there's only one answer.
+
if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||
($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) {
$form{'problem_split'}=$parmhash{'problem_stream_switch'};
$form{'grade_target'}='answer';
$form{'answer_output_mode'}='tex';
$form{'rndseed'}=$rndseed;
+ if ($helper->{'VARS'}->{'probstatus'} eq 'exam') {
+ $form{'problemtype'}='exam';
+ }
$resources_printed .= $currentURL.':';
my $answer=&Apache::lonnet::ssi($currentURL,%form);
if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {
@@ -1091,7 +1169,8 @@ ENDPART
if ($currentURL=~m/\.page\s*$/) {
($result,$number_of_columns) = &page_cleanup($result);
}
- } elsif ($currentURL=~/\.sequence$/ && $helper->{'VARS'}->{'construction'} eq '1') {
+ } elsif ($cleanURL!~m|^/adm/|
+ && $currentURL=~/\.sequence$/ && $helper->{'VARS'}->{'construction'} eq '1') {
#printing content of sequence from the construction space
my $flag_latex_header_remove = 'NO';
my $rndseed=time;
@@ -1128,10 +1207,14 @@ ENDPART
if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {
$texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/;
} else {
+ # If necessary, encapsulate answer in minipage:
+
$texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
- $texversion.='\vskip 0 mm \noindent\textbf{'.&Apache::lonnet::gettitle($helper->{'VARS'}->{'symb'}).'}\vskip 0 mm ';
- $texversion.=&path_to_problem ($currentURL,$LaTeXwidth);
- $texversion.='\vskip 1 mm '.$answer.'\end{document}';
+ my $body ='\vskip 0 mm \noindent\textbf{'.&Apache::lonnet::gettitle($helper->{'VARS'}->{'symb'}).'}\vskip 0 mm ';
+ $body.=&path_to_problem($urlp,$LaTeXwidth);
+ $body.='\vskip 1 mm '.$answer.'\end{document}';
+ $body = &encapsulate_minipage($body);
+ $texversion.=$body;
}
}
if ($flag_latex_header_remove ne 'NO') {
@@ -1160,7 +1243,8 @@ ENDPART
my $texversion=&Apache::lonnet::ssi($currentURL,%form);
$result .= $texversion;
} else {
- $result.=&unsupported($currentURL,$helper->{'VARS'}->{'LATEX_TYPE'});
+ $result.=&unsupported($currentURL,$helper->{'VARS'}->{'LATEX_TYPE'},
+ $helper->{'VARS'}->{'symb'});
}
} elsif (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems') or
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems_pages') or
@@ -1190,6 +1274,8 @@ ENDPART
my $prevassignment='';
&Apache::lonnet::delenv('form.counter');
&Apache::lonxml::init_counter();
+ &Apache::lonxml::store_counter();
+ my $pbreakresources = keys %page_breaks;
for (my $i=0;$i<=$#master_seq;$i++) {
# Note due to document structure, not allowed to put \newpage
@@ -1200,16 +1286,18 @@ ENDPART
$result.="\\newpage\n";
}
}
- my (undef,undef,$urlp)=&Apache::lonnet::decode_symb($master_seq[$i]);
+ my ($sequence,undef,$urlp)=&Apache::lonnet::decode_symb($master_seq[$i]);
$urlp=&Apache::lonnet::clutter($urlp);
$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
+
+ my $assignment=&Apache::lonxml::latex_special_symbols(&Apache::lonnet::gettitle($sequence),'header'); #title of the assignment which contains this problem
if ($selectionmade==7) {$helper->{VARS}->{'assignment'}=$assignment;}
if ($i==0) {$prevassignment=$assignment;}
my $texversion='';
- if ($urlp=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {
+ if ($urlp!~m|^/adm/|
+ && $urlp=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {
$resources_printed .= $urlp.':';
+ my $pre_counter=$env{'form.counter'};
$texversion.=&Apache::lonnet::ssi($urlp,%form);
if ($urlp=~/\.page$/) {
($texversion,my $number_of_columns_page) = &page_cleanup($texversion);
@@ -1217,11 +1305,9 @@ ENDPART
$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 ($envfile) = ($env{'user.environment'} =~m|/([^/]+)\.id$| );
+ &Apache::lonnet::transfer_profile_to_env($r->dir_config('lonIDsDir'),
+ $envfile);
my $current_counter=$env{'form.counter'};
if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||
($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) {
@@ -1230,6 +1316,7 @@ ENDPART
$answerform{'grade_target'}='answer';
$answerform{'answer_output_mode'}='tex';
$resources_printed .= $urlp.':';
+ &Apache::lonnet::appenv(('form.counter' => $pre_counter));
my $answer=&Apache::lonnet::ssi($urlp,%answerform);
&Apache::lonnet::appenv(('form.counter' => $current_counter));
if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {
@@ -1237,9 +1324,11 @@ ENDPART
} else {
if ($urlp=~/\.(problem|exam|quiz|assess|survey|form|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 $body ='\vskip 0 mm \noindent\textbf{'.&Apache::lonnet::gettitle($master_seq[$i]).'}\vskip 0 mm ';
+ $body .= &path_to_problem ($urlp,$LaTeXwidth);
+ $body .='\vskip 1 mm '.$answer;
+ $body = &encapsulate_minipage($body);
+ $texversion .= $body;
} else {
$texversion='';
}
@@ -1258,7 +1347,11 @@ ENDPART
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 ';
+ if ($numberofcolumns eq '1') {
+ $result .='\newpage \noindent\parbox{\minipagewidth}{\noindent\\lhead{\\textit{\\textbf{'.$name.'}}'.$courseidinfo.' \\hfill \\thepage \\\\ \\textit{'.$assignment.'}}} \vskip 5 mm ';
+ } else {
+ $result .='\newpage \noindent\parbox{\minipagewidth}{\noindent\\fancyhead[LO]{\\textit{\\textbf{'.$name.'}}'.$courseidinfo.' \\hfill \\thepage \\\\ \\textit{'.$assignment.'}}} \vskip 5 mm ';
+ }
}
$result .= $texversion;
$flag_latex_header_remove = 'YES';
@@ -1275,7 +1368,8 @@ ENDPART
$result .= $texversion;
$flag_latex_header_remove = 'YES';
} else {
- $texversion=&unsupported($urlp,$helper->{'VARS'}->{'LATEX_TYPE'});
+ $texversion=&unsupported($urlp,$helper->{'VARS'}->{'LATEX_TYPE'},
+ $master_seq[$i]);
if ($flag_latex_header_remove ne 'NO') {
$texversion = &latex_header_footer_remove($texversion);
} else {
@@ -1363,6 +1457,8 @@ ENDPART
my $code_name=$helper->{'VARS'}->{'ANON_CODE_STORAGE_NAME'};
my $old_name=$helper->{'VARS'}->{'REUSE_OLD_CODES'};
my $single_code = $helper->{'VARS'}->{'SINGLE_CODE'};
+ my $selected_code = $helper->{'VARS'}->{'CODE_SELECTED_FROM_LIST'};
+
my $code_option=$helper->{'VARS'}->{'CODE_OPTION'};
open(FH,$Apache::lonnet::perlvar{'lonTabDir'}.'/scantronformat.tab');
my ($code_type,$code_length)=('letter',6);
@@ -1375,6 +1471,7 @@ ENDPART
}
my %moreenv = ('textwidth' => &get_textwidth($helper,$LaTeXwidth));
$moreenv{'problem_split'} = $parmhash{'problem_stream_switch'};
+ $moreenv{'instructor_comments'}='hide';
my $seed=time+($$<<16)+($$);
my @allcodes;
if ($old_name) {
@@ -1384,14 +1481,17 @@ ENDPART
$code_type=$result{"type\0$old_name"};
@allcodes=split(',',$result{$old_name});
$num_todo=scalar(@allcodes);
+ } elsif ($selected_code) { # Selection value is always numeric.
+ $num_todo = 1;
+ @allcodes = ($selected_code);
} elsif ($single_code) {
+ $num_todo = 1; # Unconditionally one code to do.
# If an alpha code have to convert to numbers so it can be
# converted back to letters again :-)
#
if ($code_type ne 'number') {
$single_code = &letters_to_num($single_code);
- $num_todo = 1;
}
@allcodes = ($single_code);
} else {
@@ -1516,8 +1616,14 @@ ENDPART
}
#-------------------------------------------------------- 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'},$selectionmade);
- $result = &latex_corrections($number_of_columns,$result,$selectionmade);
- for (my $i=1;$i<=$#print_array;$i++) {$print_array[$i] = &latex_corrections($number_of_columns,$print_array[$i],$selectionmade);}
+ $result = &latex_corrections($number_of_columns,$result,$selectionmade,
+ $helper->{'VARS'}->{'ANSWER_TYPE'});
+ for (my $i=1;$i<=$#print_array;$i++) {
+ $print_array[$i] =
+ &latex_corrections($number_of_columns,$print_array[$i],
+ $selectionmade,
+ $helper->{'VARS'}->{'ANSWER_TYPE'});
+ }
#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'} /;
@@ -1600,7 +1706,7 @@ ENDPART
'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' => $perm{'pav'},
'cgi.'.$identifier.'.numberoffiles' => $#print_array,
'cgi.'.$identifier.'.studentnames' => $student_names,
'cgi.'.$identifier.'.backref' => $URLback,);
@@ -1625,7 +1731,7 @@ sub get_CODE {
my $max='1'.'0'x$size;
my $newcode;
while(1) {
- $newcode=sprintf("%06d",int(rand($max)));
+ $newcode=sprintf("%0".$size."d",int(rand($max)));
if (!exists($$all_codes{$newcode})) {
$$all_codes{$newcode}=1;
if ($type eq 'number' ) {
@@ -1654,8 +1760,10 @@ sub print_resources {
#current student, and produces output
&Apache::lonnet::delenv('form.counter');
&Apache::lonxml::init_counter();
-
+ &Apache::lonxml::store_counter();
my %page_breaks = &get_page_breaks($helper);
+ my @format_array = split(/\|/,$helper->{'VARS'}->{'FORMAT'});
+ my $columns_in_format = $format_array[1];
foreach my $curresline (@{$master_seq}) {
if (defined $page_breaks{$curresline}) {
@@ -1668,14 +1776,15 @@ sub print_resources {
($curresline!~ m/\.(problem|exam|quiz|assess|survey|form|library)$/)) ) {
my ($map,$id,$res_url) = &Apache::lonnet::decode_symb($curresline);
if (&Apache::lonnet::allowed('bre',$res_url)) {
- if ($res_url=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {
+ if ($res_url!~m|^ext/|
+ && $res_url=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {
$printed .= $curresline.':';
+ my $pre_counter=$env{'form.counter'};
my $rendered = &Apache::loncommon::get_student_view($curresline,$username,$userdomain,$env{'request.course.id'},'tex',$moreenv);
- my $lonidsdir=$r->dir_config('lonIDsDir');
- my $envfile=$env{'user.environment'};
- $envfile=~/\/([^\/]+)\.id$/;
- $envfile=$1;
- &Apache::lonnet::transfer_profile_to_env($lonidsdir,$envfile);
+ my ($envfile) =
+ ( $env{'user.environment'} =~ m|/([^/]+)\.id$| );
+ &Apache::lonnet::transfer_profile_to_env($r->dir_config('lonIDsDir'),
+ $envfile);
my $current_counter=$env{'form.counter'};
if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||
($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) {
@@ -1683,15 +1792,20 @@ sub print_resources {
my %answerenv = %{$moreenv};
$answerenv{'answer_output_mode'}='tex';
$answerenv{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};
+ &Apache::lonnet::appenv(('form.counter' => $pre_counter));
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/;
} else {
- $rendered=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
- $rendered.='\vskip 0 mm \noindent\textbf{'.&Apache::lonnet::gettitle($curresline).'}\vskip 0 mm ';
- $rendered.=&path_to_problem ($curresline,$LaTeXwidth);
- $rendered.='\vskip 1 mm '.$ansrendered;
+
+
+ my $header =&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
+ my $body ='\vskip 0 mm \noindent\textbf{'.&Apache::lonnet::gettitle($curresline).'}\vskip 0 mm ';
+ $body .=&path_to_problem($res_url,$LaTeXwidth);
+ $body .='\vskip 1 mm '.$ansrendered;
+ $body = &encapsulate_minipage($body);
+ $rendered = $header.$body;
}
}
if ($remove_latex_header eq 'YES') {
@@ -1703,11 +1817,10 @@ sub print_resources {
} elsif ($res_url=~/\/(smppg|syllabus|aboutme|bulletinboard)$/) {
$printed .= $curresline.':';
my $rendered = &Apache::loncommon::get_student_view($curresline,$username,$userdomain,$env{'request.course.id'},'tex',$moreenv);
- my $lonidsdir=$r->dir_config('lonIDsDir');
- my $envfile=$env{'user.environment'};
- $envfile=~/\/([^\/]+)\.id$/;
- $envfile=$1;
- &Apache::lonnet::transfer_profile_to_env($lonidsdir,$envfile);
+ my ($envfile) =
+ ( $env{'user.environment'} =~ m|/([^/]+)\.id$| );
+ &Apache::lonnet::transfer_profile_to_env($r->dir_config('lonIDsDir'),
+ $envfile);
my $current_counter=$env{'form.counter'};
if ($remove_latex_header eq 'YES') {
$rendered = &latex_header_footer_remove($rendered);
@@ -1715,8 +1828,9 @@ sub print_resources {
$rendered =~ s/\\end{document}//;
}
$current_output .= $rendered.'\vskip 0.5mm\noindent\makebox[\textwidth/$number_of_columns][b]{\hrulefill}\strut \vskip 0 mm \strut ';
+
} else {
- my $rendered = &unsupported($res_url,$helper->{'VARS'}->{'LATEX_TYPE'});
+ my $rendered = &unsupported($res_url,$helper->{'VARS'}->{'LATEX_TYPE'},$curresline);
if ($remove_latex_header ne 'NO') {
$rendered = &latex_header_footer_remove($rendered);
} else {
@@ -1734,11 +1848,20 @@ sub print_resources {
if ($usersection ne '') {$courseidinfo.=' - Sec. '.$usersection}
my $currentassignment=&Apache::lonxml::latex_special_symbols($helper->{VARS}->{'assignment'},'header');
if ($current_output=~/\\documentclass/) {
- $current_output =~ s/\\begin{document}/\\setlength{\\topmargin}{1cm} \\begin{document}\\noindent\\parbox{\\minipagewidth}{\\noindent\\lhead{\\textit{\\textbf{$fullname}}$courseidinfo \\hfill \\thepage \\\\ \\textit{$currentassignment}$namepostfix}}\\vskip 5 mm /;
+ if ($columns_in_format == 1) {
+ $current_output =~ s/\\begin{document}/\\setlength{\\topmargin}{1cm} \\begin{document}\\noindent\\parbox{\\minipagewidth}{\\noindent\\lhead{\\textit{\\textbf{$fullname}}$courseidinfo \\hfill \\thepage \\\\ \\textit{$currentassignment}$namepostfix}}\\vskip 5 mm /;
+ } else {
+ $current_output =~ s/\\begin{document}/\\setlength{\\topmargin}{1cm} \\begin{document}\\noindent\\parbox{\\minipagewidth}{\\noindent\\fancyhead[LO]{\\textit{\\textbf{$fullname}}$courseidinfo \\hfill \\thepage \\\\ \\textit{$currentassignment}$namepostfix}}\\vskip 5 mm /;
+
+ }
} else {
my $blankpages = '';
for (my $j=0;$j<$helper->{'VARS'}->{'EMPTY_PAGES'};$j++) {$blankpages.='\clearpage\strut\clearpage';}
- $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\\lhead{\\textit{\\textbf{'.$fullname.'}}'.$courseidinfo.' \\hfill \\thepage \\\\ \\textit{'.$currentassignment.'}'.$namepostfix.'}} \vskip 5 mm '.$current_output;
+ if ($columns_in_format == 1) {
+ $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\\lhead{\\textit{\\textbf{'.$fullname.'}}'.$courseidinfo.' \\hfill \\thepage \\\\ \\textit{'.$currentassignment.'}'.$namepostfix.'}} \vskip 5 mm '.$current_output;
+ } else {
+ $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;
+ }
}
return ($current_output,$fullname, $printed);
@@ -1747,37 +1870,20 @@ sub print_resources {
sub handler {
my $r = shift;
- my $helper;
+
+ &init_perm();
+
-# my $loaderror=&Apache::lonnet::overloaderror($r);
-# if ($loaderror) { return $loaderror; }
-# $loaderror=
-# &Apache::lonnet::overloaderror($r,
-# $env{'course.'.$env{'request.course.id'}.'.home'});
-# if ($loaderror) { return $loaderror; }
-
- my $result = printHelper($r);
- if (!ref($result)) {
- return $result;
+
+ my $helper = printHelper($r);
+ if (!ref($helper)) {
+ return $helper;
}
- $helper = $result;
-# my $key;
-# foreach $key (keys %{$helper->{'VARS'}}) {
-# $r->print(' '.$key.'->'.$helper->{'VARS'}->{$key}.'<-
');
-# }
-# foreach $key (keys %env) {
-# $r->print(' '.$key.'->'.$env{$key}.'<-
');
-# }
-# return OK;
my %parmhash=&Apache::lonnet::coursedescription($env{'request.course.id'});
-# my $key;
-# foreach $key (keys %parmhash) {
-# $r->print(' '.$key.'->'.$parmhash{$key}.'<-
');
-# }
-#
+
# If a figure conversion queue file exists for this user.domain
@@ -1801,7 +1907,21 @@ sub addMessage {
Apache::lonhelper::message->new();
}
-use Data::Dumper;
+
+
+sub init_perm {
+ undef(%perm);
+ $perm{'pav'}=&Apache::lonnet::allowed('pav',$env{'request.course.id'});
+ if (!$perm{'pav'}) {
+ $perm{'pav'}=&Apache::lonnet::allowed('pav',
+ $env{'request.course.id'}.'/'.$env{'request.course.sec'});
+ }
+ $perm{'pfo'}=&Apache::lonnet::allowed('pav',$env{'request.course.id'});
+ if (!$perm{'pfo'}) {
+ $perm{'pfo'}=&Apache::lonnet::allowed('pfo',
+ $env{'request.course.id'}.'/'.$env{'request.course.sec'});
+ }
+}
sub printHelper {
my $r = shift;
@@ -1846,23 +1966,29 @@ sub printHelper {
$helper->declareVar("showallfoils");
# The page breaks can get loaded initially from the course environment:
+ # But we only do this in the initial state so that they are allowed to change.
+ #
- if((!defined($env{"form.CURRENT_STATE"})) ||
- ($env{'form.CURRENT_STATE'} == "START")) {
- $helper->{VARS}->{FINISHPAGE} = ""; # In case they did a back e.g.
- }
-
-
+ # $helper->{VARS}->{FINISHPAGE} = '';
&Apache::loncommon::restore_course_settings('print',
{'pagebreaks' => 'scalar',
'lastprinttype' => 'scalar'});
-
- if("$helper->{VARS}->{PRINT_TYPE}" eq "$env{'form.lastprinttype'}") {
- $helper->{VARS}->{FINISHPAGE} = $env{'form.pagebreaks'};
- }
+ if($helper->{VARS}->{PRINT_TYPE} eq $env{'form.lastprinttype'}) {
+ if (!defined ($env{"form.CURRENT_STATE"})) {
+
+ $helper->{VARS}->{FINISHPAGE} = $env{'form.pagebreaks'};
+ } else {
+ my $state = $env{"form.CURRENT_STATE"};
+ if ($state eq "START") {
+ $helper->{VARS}->{FINISHPAGE} = $env{'form.pagebreaks'};
+ }
+ }
+
+ }
+
# This will persistently load in the data we want from the
# very first screen.
@@ -1880,6 +2006,7 @@ sub printHelper {
if ($env{'form.url'}) {
$helper->{VARS}->{'symb'} = &Apache::lonnet::symbread($helper->{VARS}->{'postdata'});
}
+
}
if ($env{'form.symb'}) {
@@ -1925,9 +2052,6 @@ sub printHelper {
}
my $userCanSeeHidden = Apache::lonnavmaps::advancedUser();
- my $userPriviledged = ($env{'request.role'}=~m/^cc\./ or
- $env{'request.role'}=~m/^in\./ or
- $env{'request.role'}=~m/^ta\./);
Apache::lonhelper::registerHelperTags();
@@ -1969,9 +2093,7 @@ sub printHelper {
$helper->declareVar('SEQUENCE');
- # Useful for debugging: Dump the help vars
-# $r->print(Dumper($helper->{VARS}));
-# $r->print($map);
+
# If we're in a sequence...
if (($helper->{'VARS'}->{'construction'} ne '1') &&
@@ -2012,9 +2134,9 @@ HELPERFRAGMENT
&Apache::lonxml::xmlparse($r, 'helper', $helperFragment);
}
- # If the user is privileged, 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
- if ($userPriviledged &&
+ if ($perm{'pfo'} &&
($helper->{VARS}->{'postdata'}=~/\/res\// || $helper->{VARS}->{'postdata'}=~/\/(syllabus|smppg|aboutme|bulletinboard)$/)) {
push @{$printChoices}, ['Problems from entire course', 'all_problems', 'ALL_PROBLEMS'];
@@ -2047,7 +2169,19 @@ ALL_PROBLEMS
push @{$printChoices}, ["".&mt('Problems')." ".&mt('from')." $sequenceTitle ".&mt('for')." ".&mt('selected students')."", 'problems_for_students', 'CHOOSE_STUDENTS'];
push @{$printChoices}, ["".&mt('Problems')." ".&mt('from')." $sequenceTitle ".&mt('for')." ".&mt('anonymous students')."", 'problems_for_anon', 'CHOOSE_ANON1'];
}
+
+ # resource_selector will hold a few states that:
+ # - Allow resources to be selected for printing.
+ # - Determine pagination between assignments.
+ # - Determine how many assignments should be bundled into a single PDF.
+ # TODO:
+ # Probably good to do things like separate this up into several vars, each
+ # with one state, and use REGEXPs at inclusion time to set state names
+ # and next states for better mix and match capability
+ #
my $resource_selector=<
+ PRINT_FORMATTING
Select resources for the assignment
@@ -2056,6 +2190,9 @@ ALL_PROBLEMS
return $symbFilter;
+
+
+ NUMBER_PER_PDF
How should the results be printed?
Start each student\'s assignment on a new page/column (add a pagefeed after each assignment)
@@ -2063,20 +2200,24 @@ ALL_PROBLEMS
Add two empty pages/column after each student\'s assignment
Add three empty pages/column after each student\'s assignment
+
+
+ PAGESIZE
Number of assignments printed at the same time:
"all"
+
RESOURCE_SELECTOR
&Apache::lonxml::xmlparse($r, 'helper', <
-
+
Select sort order
Sort by section then student
Sort by students across sections.
- $resource_selector
+ $resource_selector
CHOOSE_STUDENTS
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
@@ -2088,6 +2229,25 @@ CHOOSE_STUDENTS
if ($name =~ /^type\0/) { next; }
$namechoice.=''.$name.'';
}
+
+
+ my %code_values;
+ my %codes_to_print;
+ foreach my $key (@names) {
+ %code_values = &Apache::grades::get_codes($key, $cdom, $cnum);
+ foreach my $key (keys(%code_values)) {
+ $codes_to_print{$key} = 1;
+ }
+ }
+
+ my $code_selection = "\n";
+ foreach my $code (sort {uc($a) cmp uc($b)} (keys(%codes_to_print))) {
+ my $choice = $code;
+ if ($code =~ /^[A-Z]+$/) { # Alpha code
+ $choice = &letters_to_num($code);
+ }
+ $code_selection .= ' '.$code."\n";
+ }
open(FH,$Apache::lonnet::perlvar{'lonTabDir'}.'/scantronformat.tab');
my $codechoice='';
foreach my $line () {
@@ -2103,33 +2263,20 @@ CHOOSE_STUDENTS
}
&Apache::lonxml::xmlparse($r, 'helper', <
- PAGESIZE
-
- Number of anonymous assignments to print? |
+ SELECT_PROBLEMS
+ Number of anonymous assignments to print: |
if (((\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'}+0) < 1) &&
!\$helper->{'VARS'}{'REUSE_OLD_CODES'} &&
- !\$helper->{'VARS'}{'SINGLE_CODE'}) {
+ !\$helper->{'VARS'}{'SINGLE_CODE'} &&
+ !\$helper->{'VARS'}{'CODE_SELECTED_FROM_LIST'}) {
return "You need to specify the number of assignments to print";
}
return undef;
|
- Value of CODE to print? |
-
-
- if(!\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'} &&
- !\$helper->{'VARS'}{'REUSE_OLD_CODES'}) {
- return &Apache::lonprintout::is_code_valid(\$helper->{'VARS'}{'SINGLE_CODE'},
- \$helper->{'VARS'}{'CODE_OPTION'});
- } else {
- return undef; # Other forces control us.
- }
-
-
- |
Names to store the CODEs under for later:
|
@@ -2139,15 +2286,31 @@ CHOOSE_STUDENTS
$codechoice
- |
-
+ |
|
+ |
+ Enter a CODE to print: |
+
+
+ if(!\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'} &&
+ !\$helper->{'VARS'}{'REUSE_OLD_CODES'} &&
+ !\$helper->{'VARS'}{'CODE_SELECTED_FROM_LIST'}) {
+ return &Apache::lonprintout::is_code_valid(\$helper->{'VARS'}{'SINGLE_CODE'},
+ \$helper->{'VARS'}{'CODE_OPTION'});
+ } else {
+ return undef; # Other forces control us.
+ }
+
+
+ |
|
Reprint a set of saved CODEs:
+ |
$namechoice
+ |
- $resource_selector
+ $resource_selector
CHOOSE_ANON1
@@ -2158,6 +2321,8 @@ CHOOSE_ANON1
$resource_selector=<
+ PRINT_FORMATTING
Select resources for the assignment
@@ -2166,6 +2331,9 @@ CHOOSE_ANON1
return $symbFilter;
+
+
+ NUMBER_PER_PDF
How should the results be printed?
Start each student\'s assignment on a new page/column (add a pagefeed after each assignment)
@@ -2173,50 +2341,42 @@ CHOOSE_ANON1
Add two empty pages/column after each student\'s assignment
Add three empty pages/column after each student\'s assignment
+
+
+ PAGESIZE
Number of assignments printed at the same time:
"all"
+
RESOURCE_SELECTOR
&Apache::lonxml::xmlparse($r, 'helper', <
-
+
Sort by section then student
Sort by students across sections.
- $resource_selector
+ $resource_selector
CHOOSE_STUDENTS1
&Apache::lonxml::xmlparse($r, 'helper', <
- PAGESIZE
- Number of anonymous assignments to print? |
+ SELECT_RESOURCES
+ Number of anonymous assignments to print: |
if (((\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'}+0) < 1) &&
!\$helper->{'VARS'}{'REUSE_OLD_CODES'} &&
- !\$helper->{'VARS'}{'SINGLE_CODE'}) {
+ !\$helper->{'VARS'}{'SINGLE_CODE'} &&
+ !\$helper->{'VARS'}{'CODE_SELECTED_FROM_LIST'}) {
return "You need to specify the number of assignments to print";
}
return undef;
|
- Value of CODE to print? |
-
-
- if(!\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'} &&
- !\$helper->{'VARS'}{'REUSE_OLD_CODES'}) {
- return &Apache::lonprintout::is_code_valid(\$helper->{'VARS'}{'SINGLE_CODE'},
- \$helper->{'VARS'}{'CODE_OPTION'});
- } else {
- return undef; # Other forces control us.
- }
-
-
- |
Names to store the CODEs under for later:
|
@@ -2226,20 +2386,36 @@ CHOOSE_STUDENTS1
$codechoice
- |
-
+ |
|
+ |
+ Enter a CODE to print: |
+
+
+ if(!\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'} &&
+ !\$helper->{'VARS'}{'REUSE_OLD_CODES'} &&
+ !\$helper->{'VARS'}{'CODE_SELECTED_FROM_LIST'}) {
+ return &Apache::lonprintout::is_code_valid(\$helper->{'VARS'}{'SINGLE_CODE'},
+ \$helper->{'VARS'}{'CODE_OPTION'});
+ } else {
+ return undef; # Other forces control us.
+ }
+
+
+ |
|
Reprint a set of saved CODEs:
+ |
$namechoice
+ |
- $resource_selector
+ $resource_selector
CHOOSE_ANON2
}
# FIXME: That RE should come from a library somewhere.
- if ((((&Apache::lonnet::allowed('bre',$subdir) eq 'F') and ($helper->{VARS}->{'postdata'}=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)/)) or defined $helper->{'VARS'}->{'construction'}) and $env{'request.role.adv'} and $subdir ne $Apache::lonnet::perlvar{'lonDocRoot'}.'/res/') {
+ if ((((&Apache::lonnet::allowed('bre',$subdir) eq 'F') and ($helper->{VARS}->{'postdata'}=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)/)) or defined $helper->{'VARS'}->{'construction'}) and $perm{'pav'} and $subdir ne $Apache::lonnet::perlvar{'lonDocRoot'}.'/res/') {
push @{$printChoices}, ["".&mt('Problems')." ".&mt('from current subdirectory')." $subdir", 'problems_from_directory', 'CHOOSE_FROM_SUBDIR'];
my $f = '$filename';
@@ -2279,7 +2455,8 @@ CHOOSE_FROM_SUBDIR
CHOOSE_FROM_ANY_SEQUENCE
return \$res->is_sequence;
return $urlValue;
-
+ return \$res->hasResource(\$res,sub { return !\$_[0]->is_sequence() },0,0);
+
@@ -2309,7 +2486,7 @@ CHOOSE_FROM_ANY_SEQUENCE
my $startedTable = 0; # have we started an HTML table yet? (need
# to close it later)
- if (($env{'request.role.adv'} and &Apache::lonnet::allowed('vgr',$env{'request.course.id'})) or
+ if (($perm{'pav'} and &Apache::lonnet::allowed('vgr',$env{'request.course.id'})) or
($helper->{VARS}->{'construction'} eq '1')) {
addMessage("
Print: | ");
$paramHash = Apache::lonhelper::getParamHash();
@@ -2325,7 +2502,7 @@ CHOOSE_FROM_ANY_SEQUENCE
$startedTable = 1;
}
- if ($env{'request.role.adv'}) {
+ if ($perm{'pav'}) {
if (!$startedTable) {
addMessage("
LaTeX mode: | ");
$startedTable = 1;
@@ -2376,19 +2553,14 @@ CHOOSE_FROM_ANY_SEQUENCE
Apache::lonhelper::dropdown->new();
addMessage(" | ");
- # If advanced roles, then allow to show all foils.
-
- if ($env{'request.role.adv'}) {
- addMessage(" | ");
- $paramHash = Apache::lonhelper::getParamHash();
- $paramHash->{'multichoice'} = "true";
- $paramHash->{'allowempty'} = "true";
- $paramHash->{'variable'} = "showallfoils";
- $paramHash->{'CHOICES'} = [ ["Show all foils", "1"] ];
- Apache::lonhelper::choices->new();
- addMessage(" | ");
- }
-
+ addMessage(" | ");
+ $paramHash = Apache::lonhelper::getParamHash();
+ $paramHash->{'multichoice'} = "true";
+ $paramHash->{'allowempty'} = "true";
+ $paramHash->{'variable'} = "showallfoils";
+ $paramHash->{'CHOICES'} = [ ["Show all foils", "1"] ];
+ Apache::lonhelper::choices->new();
+ addMessage(" | ");
}
if ($helper->{'VARS'}->{'construction'}) {
@@ -2401,7 +2573,7 @@ CHOOSE_FROM_ANY_SEQUENCE
Use style file: |
- Select style file |
+ Select style file |
Show all foils?
@@ -2411,7 +2583,6 @@ RNDSEED
$helper->{'VARS'}->{'style_file'}=$env{'form.style_file_value'};
}
-
}
@@ -2431,6 +2602,7 @@ RNDSEED
$helper->process();
+
# MANUAL BAILOUT CONDITION:
# If we're in the "final" state, bailout and return to handler
if ($helper->{STATE} eq 'FINAL') {
@@ -2438,7 +2610,9 @@ RNDSEED
}
$r->print($helper->display());
-
+ if ($helper->{STATE} eq 'START') {
+ &recently_generated($r);
+ }
&Apache::lonhelper::unregisterHelperTags();
return OK;
@@ -2543,7 +2717,8 @@ STATEHTML
$result .= " |
|