version 1.415, 2006/01/17 18:39:50
|
version 1.427, 2006/03/08 22:28:29
|
Line 226 sub latex_header_footer_remove {
|
Line 226 sub latex_header_footer_remove {
|
$text =~ s/\\documentclass([^&]*)\\begin{document}//; |
$text =~ s/\\documentclass([^&]*)\\begin{document}//; |
return $text; |
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 { |
sub character_chart { |
Line 751 sub details_for_menu {
|
Line 763 sub details_for_menu {
|
|
|
sub latex_corrections { |
sub latex_corrections { |
my ($number_of_columns,$result,$selectionmade,$answer_mode) = @_; |
my ($number_of_columns,$result,$selectionmade,$answer_mode) = @_; |
|
|
# $result =~ s/\\includegraphics{/\\includegraphics\[width=\\minipagewidth\]{/g; |
# $result =~ s/\\includegraphics{/\\includegraphics\[width=\\minipagewidth\]{/g; |
$result =~ s/\$number_of_columns/$number_of_columns/g; |
$result =~ s/\$number_of_columns/$number_of_columns/g; |
if ($selectionmade eq '1' || $answer_mode eq 'only') { |
if ($selectionmade eq '1' || $answer_mode eq 'only') { |
Line 781 sub latex_corrections {
|
Line 792 sub latex_corrections {
|
} |
} |
$result =~ s/(\\end{tabular})\s*\\vskip 0 mm/$1/g; |
$result =~ s/(\\end{tabular})\s*\\vskip 0 mm/$1/g; |
$result =~ s/(\\begin{enumerate})\s*\\noindent/$1/g; |
$result =~ s/(\\begin{enumerate})\s*\\noindent/$1/g; |
|
|
return $result; |
return $result; |
} |
} |
|
|
Line 963 sub recently_generated {
|
Line 973 sub recently_generated {
|
# A reference to a page break hash. |
# 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 { |
sub get_page_breaks { |
my ($helper) = @_; |
my ($helper) = @_; |
my %page_breaks; |
my %page_breaks; |
|
|
foreach my $break (split /\|\|\|/, $helper->{'VARS'}->{'FINISHPAGE'}) { |
foreach my $break (split /\|\|\|/, $helper->{'VARS'}->{'FINISHPAGE'}) { |
$page_breaks{$break} = 1; |
$page_breaks{$break} = 1; |
} |
} |
|
|
return %page_breaks; |
return %page_breaks; |
} |
} |
|
|
Line 1113 ENDPART
|
Line 1128 ENDPART
|
&Apache::lonnet::delenv('form.counter'); |
&Apache::lonnet::delenv('form.counter'); |
&Apache::lonnet::delenv('request.filename'); |
&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') || |
if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') || |
($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) { |
($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) { |
$form{'problem_split'}=$parmhash{'problem_stream_switch'}; |
$form{'problem_split'}=$parmhash{'problem_stream_switch'}; |
Line 1189 ENDPART
|
Line 1207 ENDPART
|
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 { |
|
# If necessary, encapsulate answer in minipage: |
|
|
$texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'}); |
$texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'}); |
$texversion.='\vskip 0 mm \noindent\textbf{'.&Apache::lonnet::gettitle($helper->{'VARS'}->{'symb'}).'}\vskip 0 mm '; |
my $body ='\vskip 0 mm \noindent\textbf{'.&Apache::lonnet::gettitle($helper->{'VARS'}->{'symb'}).'}\vskip 0 mm '; |
$texversion.=&path_to_problem($urlp,$LaTeXwidth); |
$body.=&path_to_problem($urlp,$LaTeXwidth); |
$texversion.='\vskip 1 mm '.$answer.'\end{document}'; |
$body.='\vskip 1 mm '.$answer.'\end{document}'; |
|
$body = &encapsulate_minipage($body); |
|
$texversion.=$body; |
} |
} |
} |
} |
if ($flag_latex_header_remove ne 'NO') { |
if ($flag_latex_header_remove ne 'NO') { |
Line 1253 ENDPART
|
Line 1275 ENDPART
|
&Apache::lonnet::delenv('form.counter'); |
&Apache::lonnet::delenv('form.counter'); |
&Apache::lonxml::init_counter(); |
&Apache::lonxml::init_counter(); |
&Apache::lonxml::store_counter(); |
&Apache::lonxml::store_counter(); |
|
my $pbreakresources = keys %page_breaks; |
for (my $i=0;$i<=$#master_seq;$i++) { |
for (my $i=0;$i<=$#master_seq;$i++) { |
|
|
# Note due to document structure, not allowed to put \newpage |
# Note due to document structure, not allowed to put \newpage |
Line 1301 ENDPART
|
Line 1324 ENDPART
|
} else { |
} else { |
if ($urlp=~/\.(problem|exam|quiz|assess|survey|form|library)$/) { |
if ($urlp=~/\.(problem|exam|quiz|assess|survey|form|library)$/) { |
$texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'}); |
$texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'}); |
$texversion.='\vskip 0 mm \noindent\textbf{'.&Apache::lonnet::gettitle($master_seq[$i]).'}\vskip 0 mm '; |
my $body ='\vskip 0 mm \noindent\textbf{'.&Apache::lonnet::gettitle($master_seq[$i]).'}\vskip 0 mm '; |
$texversion.=&path_to_problem ($urlp,$LaTeXwidth); |
$body .= &path_to_problem ($urlp,$LaTeXwidth); |
$texversion.='\vskip 1 mm '.$answer; |
$body .='\vskip 1 mm '.$answer; |
|
$body = &encapsulate_minipage($body); |
|
$texversion .= $body; |
} else { |
} else { |
$texversion=''; |
$texversion=''; |
} |
} |
Line 1322 ENDPART
|
Line 1347 ENDPART
|
my $courseidinfo = &get_course(); |
my $courseidinfo = &get_course(); |
if (defined($courseidinfo)) { $courseidinfo=' - '.$courseidinfo } |
if (defined($courseidinfo)) { $courseidinfo=' - '.$courseidinfo } |
$prevassignment=$assignment; |
$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; |
$result .= $texversion; |
$flag_latex_header_remove = 'YES'; |
$flag_latex_header_remove = 'YES'; |
Line 1410 ENDPART
|
Line 1439 ENDPART
|
$person,$type, |
$person,$type, |
\%moreenv,\@master_seq, |
\%moreenv,\@master_seq, |
$flag_latex_header_remove, |
$flag_latex_header_remove, |
$LaTeXwidth, |
$LaTeXwidth); |
$number_of_columns); |
|
$resources_printed .= ":"; |
$resources_printed .= ":"; |
$print_array[$i].=$output; |
$print_array[$i].=$output; |
$student_names[$i].=$person.':'.$fullname.'_END_'; |
$student_names[$i].=$person.':'.$fullname.'_END_'; |
Line 1443 ENDPART
|
Line 1471 ENDPART
|
} |
} |
my %moreenv = ('textwidth' => &get_textwidth($helper,$LaTeXwidth)); |
my %moreenv = ('textwidth' => &get_textwidth($helper,$LaTeXwidth)); |
$moreenv{'problem_split'} = $parmhash{'problem_stream_switch'}; |
$moreenv{'problem_split'} = $parmhash{'problem_stream_switch'}; |
|
$moreenv{'instructor_comments'}='hide'; |
my $seed=time+($$<<16)+($$); |
my $seed=time+($$<<16)+($$); |
my @allcodes; |
my @allcodes; |
if ($old_name) { |
if ($old_name) { |
Line 1716 sub get_CODE {
|
Line 1745 sub get_CODE {
|
|
|
sub print_resources { |
sub print_resources { |
my ($r,$helper,$person,$type,$moreenv,$master_seq,$remove_latex_header, |
my ($r,$helper,$person,$type,$moreenv,$master_seq,$remove_latex_header, |
$LaTeXwidth,$number_of_columns)=@_; |
$LaTeXwidth)=@_; |
my $current_output = ''; |
my $current_output = ''; |
my $printed = ''; |
my $printed = ''; |
my ($username,$userdomain,$usersection) = split /:/,$person; |
my ($username,$userdomain,$usersection) = split /:/,$person; |
Line 1733 sub print_resources {
|
Line 1762 sub print_resources {
|
&Apache::lonxml::init_counter(); |
&Apache::lonxml::init_counter(); |
&Apache::lonxml::store_counter(); |
&Apache::lonxml::store_counter(); |
my %page_breaks = &get_page_breaks($helper); |
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}) { |
foreach my $curresline (@{$master_seq}) { |
if (defined $page_breaks{$curresline}) { |
if (defined $page_breaks{$curresline}) { |
Line 1767 sub print_resources {
|
Line 1798 sub print_resources {
|
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 { |
$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($res_url,$LaTeXwidth); |
my $header =&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'}); |
$rendered.='\vskip 1 mm '.$ansrendered; |
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') { |
if ($remove_latex_header eq 'YES') { |
Line 1792 sub print_resources {
|
Line 1827 sub print_resources {
|
} else { |
} else { |
$rendered =~ s/\\end{document}//; |
$rendered =~ s/\\end{document}//; |
} |
} |
$current_output .= $rendered.'\vskip 0.5mm\noindent\makebox[\textwidth/'.$number_of_columns.'][b]{\hrulefill}\strut \vskip 0 mm \strut '; |
$current_output .= $rendered.'\vskip 0.5mm\noindent\makebox[\textwidth/$number_of_columns][b]{\hrulefill}\strut \vskip 0 mm \strut '; |
|
|
} else { |
} else { |
my $rendered = &unsupported($res_url,$helper->{'VARS'}->{'LATEX_TYPE'},$curresline); |
my $rendered = &unsupported($res_url,$helper->{'VARS'}->{'LATEX_TYPE'},$curresline); |
if ($remove_latex_header ne 'NO') { |
if ($remove_latex_header ne 'NO') { |
Line 1812 sub print_resources {
|
Line 1848 sub print_resources {
|
if ($usersection ne '') {$courseidinfo.=' - Sec. '.$usersection} |
if ($usersection ne '') {$courseidinfo.=' - Sec. '.$usersection} |
my $currentassignment=&Apache::lonxml::latex_special_symbols($helper->{VARS}->{'assignment'},'header'); |
my $currentassignment=&Apache::lonxml::latex_special_symbols($helper->{VARS}->{'assignment'},'header'); |
if ($current_output=~/\\documentclass/) { |
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 { |
} else { |
my $blankpages = ''; |
my $blankpages = ''; |
for (my $j=0;$j<$helper->{'VARS'}->{'EMPTY_PAGES'};$j++) {$blankpages.='\clearpage\strut\clearpage';} |
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); |
return ($current_output,$fullname, $printed); |
|
|
Line 1828 sub handler {
|
Line 1873 sub handler {
|
|
|
&init_perm(); |
&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 $helper = printHelper($r); |
my $helper = printHelper($r); |
if (!ref($helper)) { |
if (!ref($helper)) { |
return $helper; |
return $helper; |
} |
} |
|
|
# my $key; |
|
# foreach $key (keys %{$helper->{'VARS'}}) { |
|
# $r->print(' '.$key.'->'.$helper->{'VARS'}->{$key}.'<-<br />'); |
|
# } |
|
# foreach $key (keys %env) { |
|
# $r->print(' '.$key.'->'.$env{$key}.'<-<br />'); |
|
# } |
|
# return OK; |
|
|
|
my %parmhash=&Apache::lonnet::coursedescription($env{'request.course.id'}); |
my %parmhash=&Apache::lonnet::coursedescription($env{'request.course.id'}); |
|
|
# my $key; |
|
# foreach $key (keys %parmhash) { |
|
# $r->print(' '.$key.'->'.$parmhash{$key}.'<-<br />'); |
|
# } |
|
# |
|
|
|
|
|
# If a figure conversion queue file exists for this user.domain |
# If a figure conversion queue file exists for this user.domain |
Line 1879 sub addMessage {
|
Line 1907 sub addMessage {
|
Apache::lonhelper::message->new(); |
Apache::lonhelper::message->new(); |
} |
} |
|
|
use Data::Dumper; |
|
|
|
sub init_perm { |
sub init_perm { |
undef(%perm); |
undef(%perm); |
Line 1941 sub printHelper {
|
Line 1969 sub printHelper {
|
# But we only do this in the initial state so that they are allowed to change. |
# But we only do this in the initial state so that they are allowed to change. |
# |
# |
|
|
$helper->{VARS}->{FINISHPAGE} = ''; |
# $helper->{VARS}->{FINISHPAGE} = ''; |
|
|
&Apache::loncommon::restore_course_settings('print', |
&Apache::loncommon::restore_course_settings('print', |
{'pagebreaks' => 'scalar', |
{'pagebreaks' => 'scalar', |
Line 1960 sub printHelper {
|
Line 1988 sub printHelper {
|
} |
} |
|
|
} |
} |
|
|
|
|
# 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 1978 sub printHelper {
|
Line 2006 sub printHelper {
|
if ($env{'form.url'}) { |
if ($env{'form.url'}) { |
$helper->{VARS}->{'symb'} = &Apache::lonnet::symbread($helper->{VARS}->{'postdata'}); |
$helper->{VARS}->{'symb'} = &Apache::lonnet::symbread($helper->{VARS}->{'postdata'}); |
} |
} |
|
|
} |
} |
|
|
if ($env{'form.symb'}) { |
if ($env{'form.symb'}) { |
Line 2064 sub printHelper {
|
Line 2093 sub printHelper {
|
|
|
$helper->declareVar('SEQUENCE'); |
$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 we're in a sequence... |
if (($helper->{'VARS'}->{'construction'} ne '1') && |
if (($helper->{'VARS'}->{'construction'} ne '1') && |
Line 2142 ALL_PROBLEMS
|
Line 2169 ALL_PROBLEMS
|
push @{$printChoices}, ["<b>".&mt('Problems')."</b> ".&mt('from')." <b><i>$sequenceTitle</i></b> ".&mt('for')." <b>".&mt('selected students')."</b>", 'problems_for_students', 'CHOOSE_STUDENTS']; |
push @{$printChoices}, ["<b>".&mt('Problems')."</b> ".&mt('from')." <b><i>$sequenceTitle</i></b> ".&mt('for')." <b>".&mt('selected students')."</b>", 'problems_for_students', 'CHOOSE_STUDENTS']; |
push @{$printChoices}, ["<b>".&mt('Problems')."</b> ".&mt('from')." <b><i>$sequenceTitle</i></b> ".&mt('for')." <b>".&mt('anonymous students')."</b>", 'problems_for_anon', 'CHOOSE_ANON1']; |
push @{$printChoices}, ["<b>".&mt('Problems')."</b> ".&mt('from')." <b><i>$sequenceTitle</i></b> ".&mt('for')." <b>".&mt('anonymous students')."</b>", '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=<<RESOURCE_SELECTOR; |
my $resource_selector=<<RESOURCE_SELECTOR; |
|
<state name="SELECT_PROBLEMS" title="Select resources to print"> |
|
<nextstate>PRINT_FORMATTING</nextstate> |
<message><br /><big><i><b>Select resources for the assignment</b></i></big><br /></message> |
<message><br /><big><i><b>Select resources for the assignment</b></i></big><br /></message> |
<resource variable="RESOURCES" multichoice="1" addstatus="1" |
<resource variable="RESOURCES" multichoice="1" addstatus="1" |
closeallpages="1"> |
closeallpages="1"> |
Line 2151 ALL_PROBLEMS
|
Line 2190 ALL_PROBLEMS
|
<valuefunc>return $symbFilter;</valuefunc> |
<valuefunc>return $symbFilter;</valuefunc> |
<option text='New Page' variable='FINISHPAGE' /> |
<option text='New Page' variable='FINISHPAGE' /> |
</resource> |
</resource> |
|
</state> |
|
<state name="PRINT_FORMATTING" title="How should results be printed?"> |
|
<nextstate>NUMBER_PER_PDF</nextstate> |
<message><br /><big><i><b>How should the results be printed?</b></i></big><br /></message> |
<message><br /><big><i><b>How should the results be printed?</b></i></big><br /></message> |
<choices variable="EMPTY_PAGES"> |
<choices variable="EMPTY_PAGES"> |
<choice computer='0'>Start each student\'s assignment on a new page/column (add a pagefeed after each assignment)</choice> |
<choice computer='0'>Start each student\'s assignment on a new page/column (add a pagefeed after each assignment)</choice> |
Line 2158 ALL_PROBLEMS
|
Line 2200 ALL_PROBLEMS
|
<choice computer='2'>Add two empty pages/column after each student\'s assignment</choice> |
<choice computer='2'>Add two empty pages/column after each student\'s assignment</choice> |
<choice computer='3'>Add three empty pages/column after each student\'s assignment</choice> |
<choice computer='3'>Add three empty pages/column after each student\'s assignment</choice> |
</choices> |
</choices> |
|
</state> |
|
<state name="NUMBER_PER_PDF" title="Number printed at once"> |
|
<nextstate>PAGESIZE</nextstate> |
<message><hr width='33%' /><b>Number of assignments printed at the same time: </b></message> |
<message><hr width='33%' /><b>Number of assignments printed at the same time: </b></message> |
<string variable="NUMBER_TO_PRINT" maxlength="5" size="5"><defaultvalue>"all"</defaultvalue></string> |
<string variable="NUMBER_TO_PRINT" maxlength="5" size="5"><defaultvalue>"all"</defaultvalue></string> |
|
</state> |
RESOURCE_SELECTOR |
RESOURCE_SELECTOR |
|
|
&Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_STUDENTS); |
&Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_STUDENTS); |
<state name="CHOOSE_STUDENTS" title="Select Students and Resources"> |
<state name="CHOOSE_STUDENTS" title="Select Students and Resources"> |
<student multichoice='1' variable="STUDENTS" nextstate="PAGESIZE" coursepersonnel="1"/> |
|
<message><b>Select sort order</b> </message> |
<message><b>Select sort order</b> </message> |
<choices variable='student_sort'> |
<choices variable='student_sort'> |
<choice computer='0'>Sort by section then student</choice> |
<choice computer='0'>Sort by section then student</choice> |
<choice computer='1'>Sort by students across sections.</choice> |
<choice computer='1'>Sort by students across sections.</choice> |
</choices> |
</choices> |
$resource_selector |
<student multichoice='1' variable="STUDENTS" nextstate="SELECT_PROBLEMS" coursepersonnel="1"/> |
</state> |
</state> |
|
$resource_selector |
CHOOSE_STUDENTS |
CHOOSE_STUDENTS |
|
|
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
Line 2217 CHOOSE_STUDENTS
|
Line 2263 CHOOSE_STUDENTS
|
} |
} |
&Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_ANON1); |
&Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_ANON1); |
<state name="CHOOSE_ANON1" title="Select Students and Resources"> |
<state name="CHOOSE_ANON1" title="Select Students and Resources"> |
<nextstate>PAGESIZE</nextstate> |
<nextstate>SELECT_PROBLEMS</nextstate> |
<message><table><tr><td><b>Number of anonymous assignments to print:</b></td><td></message> |
<message><table><tr><td><b>Number of anonymous assignments to print:</b></td><td></message> |
<string variable="NUMBER_TO_PRINT_TOTAL" maxlength="5" size="5"> |
<string variable="NUMBER_TO_PRINT_TOTAL" maxlength="5" size="5"> |
<validator> |
<validator> |
Line 2263 CHOOSE_STUDENTS
|
Line 2309 CHOOSE_STUDENTS
|
</dropdown> |
</dropdown> |
<message></td></tr></table></message> |
<message></td></tr></table></message> |
<message><hr width='33%' /></message> |
<message><hr width='33%' /></message> |
$resource_selector |
|
</state> |
</state> |
|
$resource_selector |
CHOOSE_ANON1 |
CHOOSE_ANON1 |
|
|
|
|
Line 2275 CHOOSE_ANON1
|
Line 2321 CHOOSE_ANON1
|
|
|
|
|
$resource_selector=<<RESOURCE_SELECTOR; |
$resource_selector=<<RESOURCE_SELECTOR; |
|
<state name="SELECT_RESOURCES" title="Select Resources"> |
|
<nextstate>PRINT_FORMATTING</nextstate> |
<message><br /><big><i><b>Select resources for the assignment</b></i></big><br /></message> |
<message><br /><big><i><b>Select resources for the assignment</b></i></big><br /></message> |
<resource variable="RESOURCES" multichoice="1" addstatus="1" |
<resource variable="RESOURCES" multichoice="1" addstatus="1" |
closeallpages="1"> |
closeallpages="1"> |
Line 2283 CHOOSE_ANON1
|
Line 2331 CHOOSE_ANON1
|
<valuefunc>return $symbFilter;</valuefunc> |
<valuefunc>return $symbFilter;</valuefunc> |
<option text='Newpage' variable='FINISHPAGE' /> |
<option text='Newpage' variable='FINISHPAGE' /> |
</resource> |
</resource> |
|
</state> |
|
<state name="PRINT_FORMATTING" title="Format of the print job"> |
|
<nextstate>NUMBER_PER_PDF</nextstate> |
<message><br /><big><i><b>How should the results be printed?</b></i></big><br /></message> |
<message><br /><big><i><b>How should the results be printed?</b></i></big><br /></message> |
<choices variable="EMPTY_PAGES"> |
<choices variable="EMPTY_PAGES"> |
<choice computer='0'>Start each student\'s assignment on a new page/column (add a pagefeed after each assignment)</choice> |
<choice computer='0'>Start each student\'s assignment on a new page/column (add a pagefeed after each assignment)</choice> |
Line 2290 CHOOSE_ANON1
|
Line 2341 CHOOSE_ANON1
|
<choice computer='2'>Add two empty pages/column after each student\'s assignment</choice> |
<choice computer='2'>Add two empty pages/column after each student\'s assignment</choice> |
<choice computer='3'>Add three empty pages/column after each student\'s assignment</choice> |
<choice computer='3'>Add three empty pages/column after each student\'s assignment</choice> |
</choices> |
</choices> |
|
</state> |
|
<state name="NUMBER_PER_PDF title="Number assingnments per pdf"> |
|
<nextstate>PAGESIZE</nextstate> |
<message><hr width='33%' /><b>Number of assignments printed at the same time: </b></message> |
<message><hr width='33%' /><b>Number of assignments printed at the same time: </b></message> |
<string variable="NUMBER_TO_PRINT" maxlength="5" size="5"><defaultvalue>"all"</defaultvalue></string> |
<string variable="NUMBER_TO_PRINT" maxlength="5" size="5"><defaultvalue>"all"</defaultvalue></string> |
|
</state> |
RESOURCE_SELECTOR |
RESOURCE_SELECTOR |
|
|
&Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_STUDENTS1); |
&Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_STUDENTS1); |
<state name="CHOOSE_STUDENTS1" title="Select Students and Resources"> |
<state name="CHOOSE_STUDENTS1" title="Select Students and Resources"> |
<student multichoice='1' variable="STUDENTS" nextstate="PAGESIZE" coursepersonnel="1" /> |
|
<choices variable='student_sort'> |
<choices variable='student_sort'> |
<choice computer='0'>Sort by section then student</choice> |
<choice computer='0'>Sort by section then student</choice> |
<choice computer='1'>Sort by students across sections.</choice> |
<choice computer='1'>Sort by students across sections.</choice> |
</choices> |
</choices> |
|
<student multichoice='1' variable="STUDENTS" nextstate="SELECT_RESOURCES" coursepersonnel="1" /> |
|
|
$resource_selector |
|
</state> |
</state> |
|
$resource_selector |
CHOOSE_STUDENTS1 |
CHOOSE_STUDENTS1 |
|
|
&Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_ANON2); |
&Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_ANON2); |
<state name="CHOOSE_ANON2" title="Select Students and Resources"> |
<state name="CHOOSE_ANON2" title="Select Students and Resources"> |
<nextstate>PAGESIZE</nextstate> |
<nextstate>SELECT_RESOURCES</nextstate> |
<message><table><tr><td><b>Number of anonymous assignments to print:</b></td><td></message> |
<message><table><tr><td><b>Number of anonymous assignments to print:</b></td><td></message> |
<string variable="NUMBER_TO_PRINT_TOTAL" maxlength="5" size="5"> |
<string variable="NUMBER_TO_PRINT_TOTAL" maxlength="5" size="5"> |
<validator> |
<validator> |
Line 2354 CHOOSE_STUDENTS1
|
Line 2409 CHOOSE_STUDENTS1
|
</dropdown> |
</dropdown> |
<message></td></tr></table></message> |
<message></td></tr></table></message> |
<message><hr width='33%' /></message> |
<message><hr width='33%' /></message> |
$resource_selector |
|
</state> |
</state> |
|
$resource_selector |
CHOOSE_ANON2 |
CHOOSE_ANON2 |
} |
} |
|
|
Line 2547 RNDSEED
|
Line 2602 RNDSEED
|
|
|
$helper->process(); |
$helper->process(); |
|
|
|
|
# MANUAL BAILOUT CONDITION: |
# MANUAL BAILOUT CONDITION: |
# If we're in the "final" state, bailout and return to handler |
# If we're in the "final" state, bailout and return to handler |
if ($helper->{STATE} eq 'FINAL') { |
if ($helper->{STATE} eq 'FINAL') { |