version 1.560, 2009/08/03 11:01:14
|
version 1.560.2.6, 2009/10/13 11:01:16
|
Line 1
|
Line 1
|
|
# |
|
|
|
|
# The LearningOnline Network |
# The LearningOnline Network |
# Printout |
# Printout |
# |
# |
Line 26
|
Line 29
|
# |
# |
# |
# |
package Apache::lonprintout; |
package Apache::lonprintout; |
|
|
use strict; |
use strict; |
use Apache::Constants qw(:common :http); |
use Apache::Constants qw(:common :http); |
use Apache::lonxml; |
use Apache::lonxml; |
Line 74 my $ssi_retry_count = 5; # Some arbitrar
|
Line 76 my $ssi_retry_count = 5; # Some arbitrar
|
|
|
my $font_size = 'normalsize'; # Default is normalsize... |
my $font_size = 'normalsize'; # Default is normalsize... |
|
|
|
#---------------------------- Helper helpers. ------------------------- |
|
|
|
# Returns the text needd for a student chooser. |
|
# that text must still be parsed by the helper xml parser. |
|
# Parameters: |
|
# this_state - State name of the chooser. |
|
# sort_choice - variable to hold the sorting choice. |
|
# variable - Name of variable to hold students. |
|
# next_state - State after chooser. |
|
|
|
|
|
sub generate_student_chooser { |
|
my ($this_state, |
|
$sort_choice, |
|
$variable, |
|
$next_state) = @_; |
|
&Apache::lonnet::logthis("Student chooser next state: $next_state, this state: $this_state"); |
|
my $result = <<CHOOSE_STUDENTS; |
|
<state name="$this_state" title="Select Students and Resources"> |
|
<message><b>Select sorting order of printout</b> </message> |
|
|
|
<choices variable="$sort_choice"> |
|
<choice computer='0'>Sort by section then student</choice> |
|
<choice computer='1'>Sort by students across sections.</choice> |
|
</choices> |
|
|
|
<message><br /><hr /><br /> </message> |
|
<student multichoice='1' |
|
variable="$variable" |
|
nextstate="$next_state" |
|
coursepersonnel="1" /> |
|
</state> |
|
|
|
CHOOSE_STUDENTS |
|
|
|
return $result; |
|
} |
|
|
|
# Generate the text needed for a resource chooser given the top level of |
|
# the sequence/page |
|
# |
|
# Parameters: |
|
# this_state - State name of the chooser. |
|
# prompt_text - Text to use to prompt user. |
|
# resource_options - Resource tag options e.g. |
|
# "multichoice='1', toponly='1', addstatus='1'" |
|
# that control the selection and appearance of the |
|
# resource selector. |
|
# variable - Name of the variable to hold the choice |
|
# next_state - Name of the next state the helper should transition |
|
# to |
|
# top_url - Top level URL within which to make the selector. |
|
# If empty the top level sequence is shown. |
|
# filter - How to filter the resources. |
|
# value_func - <valuefunc> function. |
|
# choice_func - If not empty generates a <choicefunc> with this function. |
|
# start_new_option |
|
# - Fragment appended after valuefunc. |
|
# |
|
# |
|
sub generate_resource_chooser { |
|
my ($this_state, |
|
$prompt_text, |
|
$resource_options, |
|
$variable, |
|
$next_state, |
|
$top_url, |
|
$filter, |
|
$choice_func, |
|
$value_func, |
|
$start_new_option) = @_; |
|
|
|
&Apache::lonnet::logthis("Top URL = $top_url"); |
|
my $result = <<CHOOSE_RESOURCES; |
|
<state name="$this_state" title="$prompt_text"> |
|
<resource variable="$variable" $resource_options |
|
closeallpages="1"> |
|
<nextstate>$next_state</nextstate> |
|
<filterfunc>return $filter;</filterfunc> |
|
CHOOSE_RESOURCES |
|
if ($choice_func ne '') { |
|
$result .= "<choicefunc>return $choice_func;</choicefunc>"; |
|
} |
|
if ($top_url ne '') { |
|
$result .= "<mapurl>$top_url</mapurl>"; |
|
} |
|
$result .= <<CHOOSE_RESOURCES; |
|
<valuefunc>return $value_func;</valuefunc> |
|
$start_new_option |
|
</resource> |
|
</state> |
|
CHOOSE_RESOURCES |
|
|
|
return $result; |
|
} |
|
# |
|
# Generate the helper XML for a code choice helper dialog: |
|
# |
|
# Paramters: |
|
# $helper - Reference to the helper. |
|
# $state - Name of the state for the chooser. |
|
# $next_state - Name fo the state to follow the chooser. |
|
# $bubble_types - Populates the bubble sheet type dropt down. |
|
# $code_selections - Provides set of code choices that have been used |
|
# $saved_codes - Provides the list of saved codes. |
|
# |
|
# Returns; |
|
# The Xml of the code chooser. |
|
# |
|
sub generate_code_selector { |
|
my ($helper, |
|
$state, |
|
$next_state, |
|
$bubble_types, |
|
$code_selections, |
|
$saved_codes) = @_; # Unpack the parameters. |
|
|
|
my $result = <<CHOOSE_ANON1; |
|
<state name="$state" title="Specify CODEd Assignments"> |
|
<nextstate>$next_state</nextstate> |
|
<message><h4>Fill out one of the forms below</h4></message> |
|
<message><br /><hr /> <br /></message> |
|
<message><h3>Generate new CODEd Assignments</h3></message> |
|
<message><table><tr><td><b>Number of CODEd assignments to print:</b></td><td></message> |
|
<string variable="NUMBER_TO_PRINT_TOTAL" maxlength="5" size="5"> |
|
<validator> |
|
if (((\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'}+0) < 1) && |
|
!\$helper->{'VARS'}{'REUSE_OLD_CODES'} && |
|
!\$helper->{'VARS'}{'SINGLE_CODE'} && |
|
!\$helper->{'VARS'}{'CODE_SELECTED_FROM_LIST'}) { |
|
return "You need to specify the number of assignments to print"; |
|
} |
|
return undef; |
|
</validator> |
|
</string> |
|
<message></td></tr><tr><td></message> |
|
<message><b>Names to save the CODEs under for later:</b></message> |
|
<message></td><td></message> |
|
<string variable="ANON_CODE_STORAGE_NAME" maxlength="50" size="20" /> |
|
<message></td></tr><tr><td></message> |
|
<message><b>Bubble sheet type:</b></message> |
|
<message></td><td></message> |
|
<dropdown variable="CODE_OPTION" multichoice="0" allowempty="0"> |
|
$bubble_types |
|
</dropdown> |
|
<message></td></tr><tr><td colspan="2"></td></tr><tr><td></message> |
|
<message></td></tr><tr><td></table></message> |
|
<message><br /><hr /><h3>Print a Specific CODE </h3><br /><table></message> |
|
<message><tr><td><b>Enter a CODE to print:</b></td><td></message> |
|
<string variable="SINGLE_CODE" size="10"> |
|
<validator> |
|
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. |
|
} |
|
</validator> |
|
</string> |
|
<message></td></tr><tr><td></message> |
|
$code_selections |
|
<message></td></tr></table></message> |
|
<message><hr /><h3>Reprint a Set of Saved CODEs</h3><table><tr><td></message> |
|
<message><b>Select saved CODEs:</b></message> |
|
<message></td><td></message> |
|
<dropdown variable="REUSE_OLD_CODES"> |
|
$saved_codes |
|
</dropdown> |
|
<message></td></tr></table></message> |
|
</state> |
|
CHOOSE_ANON1 |
|
|
|
return $result; |
|
} |
|
|
|
#----------------------------------------------------------------------- |
|
|
|
|
# Fetch the contents of a resource, uninterpreted. |
# Fetch the contents of a resource, uninterpreted. |
# This is used here to fetch a latex file to be included |
# This is used here to fetch a latex file to be included |
Line 1343 sub print_page_in_course {
|
Line 1524 sub print_page_in_course {
|
|
|
|
|
if ($mode ne '') {$mode='\\'.$mode} |
if ($mode ne '') {$mode='\\'.$mode} |
my $result.= &print_latex_header($mode); |
my $result = &print_latex_header($mode); |
if ($currentURL=~m|^(/adm/wrapper/)?ext/|) { |
if ($currentURL=~m|^(/adm/wrapper/)?ext/|) { |
$currentURL=~s|^(/adm/wrapper/)?ext/|http://|; |
$currentURL=~s|^(/adm/wrapper/)?ext/|http://|; |
my $title=&Apache::lonnet::gettitle($symb); |
my $title=&Apache::lonnet::gettitle($symb); |
Line 1413 sub print_page_in_course {
|
Line 1594 sub print_page_in_course {
|
|
|
my $texversion = &ssi_with_retries($urlp, $ssi_retry_count, %form); |
my $texversion = &ssi_with_retries($urlp, $ssi_retry_count, %form); |
|
|
# There seems to be an extraneous \vskip 1mm \\\\ : |
|
|
|
$texversion =~ s/^\\vskip 1mm \\\\\\\\//; |
|
|
|
# current document with answers.. no need to encap in minipage |
# current document with answers.. no need to encap in minipage |
# since there's only one answer. |
# since there's only one answer. |
Line 1438 sub print_page_in_course {
|
Line 1616 sub print_page_in_course {
|
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 { |
$texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'}); |
$texversion= &print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'}); |
if ($helper->{'VARS'}->{'construction'} ne '1') { |
if ($helper->{'VARS'}->{'construction'} ne '1') { |
my $title = &Apache::lonnet::gettitle($helper->{'VARS'}->{'symb'}); |
my $title = &Apache::lonnet::gettitle($helper->{'VARS'}->{'symb'}); |
$title = &Apache::lonxml::latex_special_symbols($title); |
$title = &Apache::lonxml::latex_special_symbols($title); |
Line 1473 sub print_page_in_course {
|
Line 1651 sub print_page_in_course {
|
$texversion=~s/(\\addcontentsline\{toc\}\{subsection\}\{[^\}]*\})/$1 URL: \\verb|$currentURL| \\strut\\\\\\strut /; |
$texversion=~s/(\\addcontentsline\{toc\}\{subsection\}\{[^\}]*\})/$1 URL: \\verb|$currentURL| \\strut\\\\\\strut /; |
|
|
} |
} |
|
$texversion = &latex_header_footer_remove($texversion); |
|
|
|
# the first remaining line is a comment from londefdef the second |
|
# line seems to be an extraneous \vskip 1mm \\\\ : |
|
# (imperfect removal from header_footer_remove? |
|
|
|
$texversion =~ s/\\vskip 1mm \\\\\\\\//; |
|
|
$result .= $texversion; |
$result .= $texversion; |
if ($currentURL=~m/\.page\s*$/) { |
if ($currentURL=~m/\.page\s*$/) { |
($result,$numberofcolumns) = &page_cleanup($result); |
($result,$numberofcolumns) = &page_cleanup($result); |
Line 1560 sub recently_generated {
|
Line 1746 sub recently_generated {
|
# A reference to a page break hash. |
# A reference to a page break hash. |
# |
# |
# |
# |
#use Data::Dumper; |
use Data::Dumper; |
#sub dump_helper_vars { |
#sub dump_helper_vars { |
# my ($helper) = @_; |
# my ($helper) = @_; |
# my $helpervars = Dumper($helper->{'VARS'}); |
# my $helpervars = Dumper($helper->{'VARS'}); |
Line 1962 ENDPART
|
Line 2148 ENDPART
|
$helper->{'VARS'}->{'symb'}); |
$helper->{'VARS'}->{'symb'}); |
} |
} |
} elsif (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems') or |
} elsif (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems') or |
|
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems_in_page') or |
|
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_resources_in_page') or |
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems_pages') or |
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems_pages') or |
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_problems') or |
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_problems') or |
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_resources') or # BUGBUG |
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_resources') or # BUGBUG |
Line 1970 ENDPART
|
Line 2158 ENDPART
|
|
|
|
|
#-- produce an output string |
#-- produce an output string |
if ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems') { |
if (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems') or |
|
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems_in_page') ) { |
$selectionmade = 2; |
$selectionmade = 2; |
} elsif ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems_pages') { |
} elsif (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems_pages') or |
|
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_resources_in_page')) |
|
{ |
|
&Apache::lonnet::logthis("Selectionmade => 3"); |
$selectionmade = 3; |
$selectionmade = 3; |
} elsif (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_problems') |
} elsif (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_problems') |
) { |
) { |
Line 2012 ENDPART
|
Line 2204 ENDPART
|
$result.="\\newpage\n"; |
$result.="\\newpage\n"; |
} |
} |
} |
} |
my ($sequence,$middle_thingy,$urlp)=&Apache::lonnet::decode_symb($master_seq[$i]); |
my ($sequence,$middle_thingy,$urlp)=&Apache::lonnet::decode_symb($master_seq[$i]); |
$urlp=&Apache::lonnet::clutter($urlp); |
$urlp=&Apache::lonnet::clutter($urlp); |
$form{'symb'}=$master_seq[$i]; |
$form{'symb'}=$master_seq[$i]; |
|
|
|
&Apache::lonnet::logthis("Element $i Sequence $sequence Middle $middle_thingy URLP $urlp"); |
my $assignment=&Apache::lonxml::latex_special_symbols(&Apache::lonnet::gettitle($sequence),'header'); #title 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 ($selectionmade==7) {$helper->{VARS}->{'assignment'}=$assignment;} |
Line 2024 ENDPART
|
Line 2216 ENDPART
|
my $texversion=''; |
my $texversion=''; |
if ($urlp!~m|^/adm/| |
if ($urlp!~m|^/adm/| |
&& $urlp=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) { |
&& $urlp=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) { |
|
&Apache::lonnet::logthis("Problem"); |
$resources_printed .= $urlp.':'; |
$resources_printed .= $urlp.':'; |
&Apache::lonxml::remember_problem_counter(); |
&Apache::lonxml::remember_problem_counter(); |
|
&Apache::lonnet::logthis("Fetching tex for $urlp"); |
|
my $debug = Dumper(%form); |
|
&Apache::lonnet::logthis("Form: $debug"); |
|
|
$texversion.=&ssi_with_retries($urlp, $ssi_retry_count, %form); |
$texversion.=&ssi_with_retries($urlp, $ssi_retry_count, %form); |
|
&Apache::lonnet::logthis("texversion so far: $texversion"); |
if ($urlp=~/\.page$/) { |
if ($urlp=~/\.page$/) { |
|
&Apache::lonnet::logthis("Special page actions"); |
($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}/; |
Line 2050 ENDPART
|
Line 2248 ENDPART
|
$texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/; |
$texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/; |
} else { |
} else { |
if ($urlp=~/\.(problem|exam|quiz|assess|survey|form|library)$/) { |
if ($urlp=~/\.(problem|exam|quiz|assess|survey|form|library)$/) { |
|
&Apache::lonnet::logthis("problem printing"); |
$texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'}); |
$texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'}); |
$texversion =~ s/\\begin{document}//; |
$texversion =~ s/\\begin{document}//; |
my $title = &Apache::lonnet::gettitle($master_seq[$i]); |
my $title = &Apache::lonnet::gettitle($master_seq[$i]); |
Line 2071 ENDPART
|
Line 2270 ENDPART
|
} |
} |
|
|
if ($flag_latex_header_remove ne 'NO') { |
if ($flag_latex_header_remove ne 'NO') { |
|
&Apache::lonnet::logthis("Removing header/footer 1"); |
$texversion = &latex_header_footer_remove($texversion); |
$texversion = &latex_header_footer_remove($texversion); |
|
&Apache::lonnet::logthis("With h/f removed we have: $texversion"); |
} else { |
} else { |
$texversion =~ s/\\end{document}//; |
$texversion =~ s/\\end{document}//; |
} |
} |
Line 2095 ENDPART
|
Line 2296 ENDPART
|
} |
} |
} |
} |
$result .= $texversion; |
$result .= $texversion; |
|
&Apache::lonnet::logthis("About to set rem header true with $result"); |
$flag_latex_header_remove = 'YES'; |
$flag_latex_header_remove = 'YES'; |
} elsif ($urlp=~/\/(smppg|syllabus|aboutme|bulletinboard)$/) { |
} elsif ($urlp=~/\/(smppg|syllabus|aboutme|bulletinboard)$/) { |
$form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'}; |
$form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'}; |
Line 2107 ENDPART
|
Line 2309 ENDPART
|
} |
} |
|
|
if ($flag_latex_header_remove ne 'NO') { |
if ($flag_latex_header_remove ne 'NO') { |
|
&Apache::lonnet::logthis("Removing header & footer 2"); |
$texversion = &latex_header_footer_remove($texversion); |
$texversion = &latex_header_footer_remove($texversion); |
} else { |
} else { |
$texversion =~ s/\\end{document}/\\vskip 0\.5mm\\noindent\\makebox\[\\textwidth\/\$number_of_columns\]\[b\]\{\\hrulefill\}/; |
$texversion =~ s/\\end{document}/\\vskip 0\.5mm\\noindent\\makebox\[\\textwidth\/\$number_of_columns\]\[b\]\{\\hrulefill\}/; |
Line 2134 ENDPART
|
Line 2337 ENDPART
|
$texversion=&unsupported($urlp,$helper->{'VARS'}->{'LATEX_TYPE'}, |
$texversion=&unsupported($urlp,$helper->{'VARS'}->{'LATEX_TYPE'}, |
$master_seq[$i]); |
$master_seq[$i]); |
if ($flag_latex_header_remove ne 'NO') { |
if ($flag_latex_header_remove ne 'NO') { |
|
&Apache::lonnet::logthis("Removing header/footer 3"); |
$texversion = &latex_header_footer_remove($texversion); |
$texversion = &latex_header_footer_remove($texversion); |
} else { |
} else { |
$texversion =~ s/\\end{document}//; |
$texversion =~ s/\\end{document}//; |
Line 2151 ENDPART
|
Line 2355 ENDPART
|
} |
} |
$result .= '\end{document}'; |
$result .= '\end{document}'; |
} elsif (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'problems_for_students') || |
} elsif (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'problems_for_students') || |
|
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'problems_for_students_from_page') || |
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_problems_students') || |
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_problems_students') || |
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'resources_for_students')){ |
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'resources_for_students')){ |
|
|
Line 2158 ENDPART
|
Line 2363 ENDPART
|
#-- prints assignments for whole class or for selected students |
#-- prints assignments for whole class or for selected students |
my $type; |
my $type; |
if (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'problems_for_students') || |
if (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'problems_for_students') || |
|
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'problems_for_students_from_page') || |
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_problems_students') ) { |
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_problems_students') ) { |
$selectionmade=5; |
$selectionmade=5; |
$type='problems'; |
$type='problems'; |
Line 2195 ENDPART
|
Line 2401 ENDPART
|
$helper->{'VARS'}->{'NUMBER_TO_PRINT'} = $#students+1; |
$helper->{'VARS'}->{'NUMBER_TO_PRINT'} = $#students+1; |
} |
} |
my @master_seq=split /\|\|\|/, $helper->{'VARS'}->{'RESOURCES'}; |
my @master_seq=split /\|\|\|/, $helper->{'VARS'}->{'RESOURCES'}; |
|
&Apache::lonnet::logthis("RESOURCES: ". $helper->{'VARS'}->{'RESOURCES'}); |
|
|
#loop over students |
#loop over students |
my $flag_latex_header_remove = 'NO'; |
|
|
my $flag_latex_header_remove = 'NO'; |
my %moreenv; |
my %moreenv; |
$moreenv{'instructor_comments'}='hide'; |
$moreenv{'instructor_comments'}='hide'; |
$moreenv{'textwidth'}=&get_textwidth($helper,$LaTeXwidth); |
$moreenv{'textwidth'}=&get_textwidth($helper,$LaTeXwidth); |
Line 2245 ENDPART
|
Line 2453 ENDPART
|
&Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); |
&Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); |
$result .= $print_array[0].' \end{document}'; |
$result .= $print_array[0].' \end{document}'; |
} elsif (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'problems_for_anon') || |
} elsif (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'problems_for_anon') || |
|
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'problems_for_anon_page') || |
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'resources_for_anon') ) { |
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'resources_for_anon') ) { |
my $cdom =$env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $cdom =$env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $cnum =$env{'course.'.$env{'request.course.id'}.'.num'}; |
my $cnum =$env{'course.'.$env{'request.course.id'}.'.num'}; |
Line 2396 ENDPART
|
Line 2605 ENDPART
|
$newurlp=&path_to_problem($newurlp,$LaTeXwidth); |
$newurlp=&path_to_problem($newurlp,$LaTeXwidth); |
$texversion =~ s/(\\begin{minipage}{\\textwidth})/$1 $newurlp/; |
$texversion =~ s/(\\begin{minipage}{\\textwidth})/$1 $newurlp/; |
if ($flag_latex_header_remove ne 'NO') { |
if ($flag_latex_header_remove ne 'NO') { |
|
&Apache::lonnet::logthis("Removing header/footer: 4"); |
$texversion = &latex_header_footer_remove($texversion); |
$texversion = &latex_header_footer_remove($texversion); |
} else { |
} else { |
$texversion =~ s/\\end{document}//; |
$texversion =~ s/\\end{document}//; |
Line 2600 sub print_resources {
|
Line 2810 sub print_resources {
|
# so we will just rely on prntout.pl to strip ENDOFSTUDENTSTAMP from the |
# so we will just rely on prntout.pl to strip ENDOFSTUDENTSTAMP from the |
# postscript. Each ENDOFSTUDENTSTAMP will go on a line by itself. |
# postscript. Each ENDOFSTUDENTSTAMP will go on a line by itself. |
# |
# |
|
&Apache::lonnet::logthis("In print_resources"); |
|
|
foreach my $curresline (@{$master_seq}) { |
foreach my $curresline (@{$master_seq}) { |
|
&Apache::lonnet::logthis("Res: $curresline"); |
if (defined $page_breaks{$curresline}) { |
if (defined $page_breaks{$curresline}) { |
if($i != 0) { |
if($i != 0) { |
$current_output.= "\\newpage\n"; |
$current_output.= "\\newpage\n"; |
Line 2620 sub print_resources {
|
Line 2831 sub print_resources {
|
&Apache::lonxml::remember_problem_counter(); |
&Apache::lonxml::remember_problem_counter(); |
|
|
my $rendered = &get_student_view_with_retries($curresline,$ssi_retry_count,$username,$userdomain,$env{'request.course.id'},'tex',$moreenv); |
my $rendered = &get_student_view_with_retries($curresline,$ssi_retry_count,$username,$userdomain,$env{'request.course.id'},'tex',$moreenv); |
|
&Apache::lonnet::logthis("student view: $rendered"); |
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')) { |
# Use a copy of the hash so we don't pervert it on future loop passes. |
# Use a copy of the hash so we don't pervert it on future loop passes. |
Line 2648 sub print_resources {
|
Line 2859 sub print_resources {
|
$rendered = $header.$body; |
$rendered = $header.$body; |
} |
} |
} |
} |
|
&Apache::lonnet::logthis("After preprending header: $rendered"); |
if ($helper->{'VARS'}->{'PRINT_ANNOTATIONS'} eq 'yes') { |
if ($helper->{'VARS'}->{'PRINT_ANNOTATIONS'} eq 'yes') { |
my $url = &Apache::lonnet::clutter($res_url); |
my $url = &Apache::lonnet::clutter($res_url); |
my $annotation = &annotate($url); |
my $annotation = &annotate($url); |
$rendered =~ s/(\\keephidden{ENDOFPROBLEM})/$annotation$1/; |
$rendered =~ s/(\\keephidden{ENDOFPROBLEM})/$annotation$1/; |
} |
} |
if ($remove_latex_header eq 'YES') { |
if ($remove_latex_header eq 'YES') { |
|
&Apache::lonnet::logthis("Removing header/footer: 5"); |
$rendered = &latex_header_footer_remove($rendered); |
$rendered = &latex_header_footer_remove($rendered); |
} else { |
} else { |
$rendered =~ s/\\end{document}//; |
$rendered =~ s/\\end{document}//; |
Line 2669 sub print_resources {
|
Line 2881 sub print_resources {
|
$annotation =~ s/(\\end{document})/$annotation$1/; |
$annotation =~ s/(\\end{document})/$annotation$1/; |
} |
} |
if ($remove_latex_header eq 'YES') { |
if ($remove_latex_header eq 'YES') { |
|
&Apache::lonnet::logthis("Removing header/footer: 6"); |
$rendered = &latex_header_footer_remove($rendered); |
$rendered = &latex_header_footer_remove($rendered); |
} else { |
} else { |
$rendered =~ s/\\end{document}//; |
$rendered =~ s/\\end{document}//; |
Line 2678 sub print_resources {
|
Line 2891 sub print_resources {
|
my $url = &Apache::lonnet::clutter($res_url); |
my $url = &Apache::lonnet::clutter($res_url); |
my $rendered = &include_pdf($url); |
my $rendered = &include_pdf($url); |
if ($remove_latex_header ne 'NO') { |
if ($remove_latex_header ne 'NO') { |
|
&Apache::lonnet::logthis("Removing header/footer: 7"); |
$rendered = &latex_header_footer_remove($rendered); |
$rendered = &latex_header_footer_remove($rendered); |
} |
} |
$current_output .= $rendered; |
$current_output .= $rendered; |
} 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') { |
|
&Apache::lonnet::logthis("Removing header/footer: 8"); |
$rendered = &latex_header_footer_remove($rendered); |
$rendered = &latex_header_footer_remove($rendered); |
} else { |
} else { |
$rendered =~ s/\\end{document}//; |
$rendered =~ s/\\end{document}//; |
Line 2927 sub printHelper {
|
Line 3142 sub printHelper {
|
$subdir = substr($helper->{VARS}->{'filename'}, |
$subdir = substr($helper->{VARS}->{'filename'}, |
0, rindex($helper->{VARS}->{'filename'}, '/') + 1); |
0, rindex($helper->{VARS}->{'filename'}, '/') + 1); |
} else { |
} else { |
|
# From course space: |
|
|
if ($symb ne '') { |
if ($symb ne '') { |
($map, $id, $url) = &Apache::lonnet::decode_symb($symb); |
($map, $id, $url) = &Apache::lonnet::decode_symb($symb); |
$helper->{VARS}->{'postdata'} = |
$helper->{VARS}->{'postdata'} = |
Line 2934 sub printHelper {
|
Line 3151 sub printHelper {
|
} else { |
} else { |
$url = $helper->{VARS}->{'postdata'}; |
$url = $helper->{VARS}->{'postdata'}; |
$is_published=1; # From resource space. |
$is_published=1; # From resource space. |
|
&Apache::lonnet::logthis("Resource url $url"); |
} |
} |
$url = &Apache::lonnet::clutter($url); |
$url = &Apache::lonnet::clutter($url); |
|
|
if (!$resourceTitle) { # if the resource doesn't have a title, use the filename |
if (!$resourceTitle) { # if the resource doesn't have a title, use the filename |
my $postdata = $helper->{VARS}->{'postdata'}; |
my $postdata = $helper->{VARS}->{'postdata'}; |
$resourceTitle = substr($postdata, rindex($postdata, '/') + 1); |
$resourceTitle = substr($postdata, rindex($postdata, '/') + 1); |
Line 2996 sub printHelper {
|
Line 3213 sub printHelper {
|
"' variable='FINISHPAGE' />"; |
"' variable='FINISHPAGE' />"; |
} |
} |
|
|
if (($helper->{'VARS'}->{'construction'} ne '1' ) && |
# If not construction space user can print the components of a page: |
|
|
|
my $page_ispage; |
|
my $page_title; |
|
if (!$helper->{VARS}->{'construction'}) { |
|
my $varspostdata = $helper->{VARS}->{'postdata'}; |
|
my $varsassignment = $helper->{VARS}->{'assignment'}; |
|
my $page_navmap = Apache::lonnavmaps::navmap->new(); |
|
my @page_resources = $page_navmap->retrieveResources($url); |
|
if(defined($page_resources[0])) { |
|
$page_ispage = $page_resources[0]->is_page(); |
|
$page_title = $page_resources[0]->title(); |
|
my $resourcesymb = $page_resources[0]->symb(); |
|
my ($pagemap, $pageid, $pageurl) = &Apache::lonnet::decode_symb($symb); |
|
if ($page_ispage) { |
|
push @{$printChoices}, |
|
[&mt('Selected [_1]Problems[_2] from page [_3]', '<b>', '</b>', '<b><i>'.$page_title.'</i></b>'), |
|
'map_problems_in_page', |
|
'CHOOSE_PROBLEMS_PAGE']; |
|
push @{$printChoices}, |
|
[&mt('Selected [_1]Resources[_2] from page [_3]', '<b>', '</b>', '<b><i>'.$page_title.'</i></b>'), |
|
'map_resources_in_page', |
|
'CHOOSE_RESOURCES_PAGE']; |
|
} |
|
my $helperFragment = &generate_resource_chooser('CHOOSE_PROBLEMS_PAGE', |
|
'Select Problem(s) to print', |
|
"multichoice='1' toponly='1' addstatus='1' closeallpages='1'", |
|
'RESOURCES', |
|
'PAGESIZE', |
|
$url, |
|
$isProblem, '', $symbFilter, |
|
$start_new_option); |
|
|
|
|
|
$helperFragment .= &generate_resource_chooser('CHOOSE_RESOURCES_PAGE', |
|
'Select Resource(s) to print', |
|
'multichoice="1" toponly="1" addstatus="1" closeallpages="1"', |
|
'RESOURCES', |
|
'PAGESIZE', |
|
$url, |
|
$isNotMap, '', $symbFilter, |
|
$start_new_option); |
|
|
|
|
|
|
|
|
|
|
|
&Apache::lonxml::xmlparse($r, 'helper', $helperFragment); |
|
|
|
} |
|
} |
|
|
|
if (($helper->{'VAR'}->{'construction'} ne '1' ) && |
$helper->{VARS}->{'postdata'} && |
$helper->{VARS}->{'postdata'} && |
$helper->{VARS}->{'assignment'}) { |
$helper->{VARS}->{'assignment'}) { |
# Allow problems from sequence |
# Allow problems from sequence |
push @{$printChoices}, [&mt('Selected [_1]Problems[_2] from folder [_3]','<b>','</b>','<b><i>'.$sequenceTitle.'</i></b>'), 'map_problems', 'CHOOSE_PROBLEMS']; |
push @{$printChoices}, |
|
[&mt('Selected [_1]Problems[_2] from folder [_3]','<b>','</b>','<b><i>'.$sequenceTitle.'</i></b>'), |
|
'map_problems', |
|
'CHOOSE_PROBLEMS']; |
# Allow all resources from sequence |
# Allow all resources from sequence |
push @{$printChoices}, [&mt('Selected [_1]Resources[_2] from folder [_3]','<b>','</b>','<b><i>'.$sequenceTitle.'</i></b>'), 'map_problems_pages', 'CHOOSE_PROBLEMS_HTML']; |
push @{$printChoices}, [&mt('Selected [_1]Resources[_2] from folder [_3]','<b>','</b>','<b><i>'.$sequenceTitle.'</i></b>'), |
|
'map_problems_pages', |
my $helperFragment = <<HELPERFRAGMENT; |
'CHOOSE_PROBLEMS_HTML']; |
<state name="CHOOSE_PROBLEMS" title="Select Problem(s) to print"> |
&Apache::lonnet::logthis("Map url : $map"); |
<resource variable="RESOURCES" multichoice="1" toponly='1' addstatus="1" |
my $helperFragment = &generate_resource_chooser('CHOOSE_PROBLEMS', |
closeallpages="1"> |
'Select Problem(s) to print', |
<nextstate>PAGESIZE</nextstate> |
'multichoice="1" toponly="1" addstatus="1" closeallpages="1"', |
<filterfunc>return $isProblem;</filterfunc> |
'RESOURCES', |
<mapurl>$map</mapurl> |
'PAGESIZE', |
<valuefunc>return $symbFilter;</valuefunc> |
$map, |
$start_new_option |
$isProblem, '', |
</resource> |
$symbFilter, |
</state> |
$start_new_option); |
|
$helperFragment .= &generate_resource_chooser('CHOOSE_PROBLEMS_HTML', |
<state name="CHOOSE_PROBLEMS_HTML" title="Select Resource(s) to print"> |
'Select Resource(s) to print', |
<resource variable="RESOURCES" multichoice="1" toponly='1' addstatus="1" |
'multichoice="1" toponly="1" addstatus="1" closeallpages="1"', |
closeallpages="1"> |
'RESOURCES', |
<nextstate>PAGESIZE</nextstate> |
'PAGESIZE', |
<filterfunc>return $isNotMap;</filterfunc> |
$map, |
<mapurl>$map</mapurl> |
$isNotMap, '', |
<valuefunc>return $symbFilter;</valuefunc> |
$symbFilter, |
$start_new_option |
$start_new_option); |
</resource> |
|
</state> |
|
HELPERFRAGMENT |
|
|
|
&Apache::lonxml::xmlparse($r, 'helper', $helperFragment); |
&Apache::lonxml::xmlparse($r, 'helper', $helperFragment); |
} |
} |
|
|
# If the user has pfo (print for others) allow them to print all |
# If the user has pfo (print for others) allow them to print all |
# problems and resources in the entire course, optionally for selected students |
# problems and resources in the entire course, optionally for selected students |
|
my $post_data = $helper->{VARS}->{'postdata'}; |
if ($perm{'pfo'} && !$is_published && |
if ($perm{'pfo'} && !$is_published && |
($helper->{VARS}->{'postdata'}=~/\/res\// || $helper->{VARS}->{'postdata'}=~/\/(syllabus|smppg|aboutme|bulletinboard)$/)) { |
($post_data=~/\/res\// || $post_data =~/\/(syllabus|smppg|aboutme|bulletinboard)$/)) { |
|
|
push @{$printChoices}, [&mtn('Selected <b>Problems</b> from <b>entire course</b>'), 'all_problems', 'ALL_PROBLEMS']; |
push @{$printChoices}, [&mtn('Selected <b>Problems</b> from <b>entire course</b>'), 'all_problems', 'ALL_PROBLEMS']; |
push @{$printChoices}, [&mtn('Selected <b>Resources</b> from <b>entire course</b>'), 'all_resources', 'ALL_RESOURCES']; |
push @{$printChoices}, [&mtn('Selected <b>Resources</b> from <b>entire course</b>'), 'all_resources', 'ALL_RESOURCES']; |
push @{$printChoices}, [&mtn('Selected <b>Problems</b> from <b>entire course</b> for <b>selected people</b>'), 'all_problems_students', 'ALL_PROBLEMS_STUDENTS']; |
push @{$printChoices}, [&mtn('Selected <b>Problems</b> from <b>entire course</b> for <b>selected people</b>'), 'all_problems_students', 'ALL_PROBLEMS_STUDENTS']; |
&Apache::lonxml::xmlparse($r, 'helper', <<ALL_PROBLEMS); |
my $suffixXml = <<ALL_PROBLEMS; |
<state name="ALL_PROBLEMS" title="Select Problem(s) to print"> |
|
<resource variable="RESOURCES" toponly='0' multichoice="1" |
|
suppressEmptySequences='0' addstatus="1" closeallpages="1"> |
|
<nextstate>PAGESIZE</nextstate> |
|
<filterfunc>return $isProblemOrMap;</filterfunc> |
|
<choicefunc>return $isNotMap;</choicefunc> |
|
<valuefunc>return $symbFilter;</valuefunc> |
|
$start_new_option |
|
</resource> |
|
</state> |
|
<state name="ALL_RESOURCES" title="Select Resource(s) to print"> |
|
<resource variable="RESOURCES" toponly='0' multichoice='1' |
|
suppressEmptySequences='0' addstatus='1' closeallpages='1'> |
|
<nextstate>PAGESIZE</nextstate> |
|
<filterfunc>return $isNotMap; </filterfunc> |
|
<valuefunc>return $symbFilter;</valuefunc> |
|
$start_new_option |
|
</resource> |
|
</state> |
|
<state name="ALL_PROBLEMS_STUDENTS" title="Select Problem(s) to print"> |
|
<resource variable="RESOURCES" toponly='0' multichoice="1" |
|
suppressEmptySequences='0' addstatus="1" closeallpages="1"> |
|
<nextstate>STUDENTS1</nextstate> |
|
<filterfunc>return $isProblemOrMap;</filterfunc> |
|
<choicefunc>return $isNotMap;</choicefunc> |
|
<valuefunc>return $symbFilter;</valuefunc> |
|
$start_new_option |
|
</resource> |
|
</state> |
|
<state name="STUDENTS1" title="Select People"> |
<state name="STUDENTS1" title="Select People"> |
<message><b>Select sorting order of printout</b> </message> |
<message><b>Select sorting order of printout</b> </message> |
<choices variable='student_sort'> |
<choices variable='student_sort'> |
Line 3078 HELPERFRAGMENT
|
Line 3319 HELPERFRAGMENT
|
<message><br /><hr /><br /> </message> |
<message><br /><hr /><br /> </message> |
<student multichoice='1' variable="STUDENTS" nextstate="PRINT_FORMATTING" coursepersonnel="1"/> |
<student multichoice='1' variable="STUDENTS" nextstate="PRINT_FORMATTING" coursepersonnel="1"/> |
</state> |
</state> |
|
|
ALL_PROBLEMS |
ALL_PROBLEMS |
|
&Apache::lonxml::xmlparse($r, 'helper', |
|
&generate_resource_chooser('ALL_PROBLEMS', |
|
'SelectProblem(s) to print', |
|
'multichoice="1" suppressEmptySequences="0" addstatus="1" closeallpages="1"', |
|
'RESOURCES', |
|
'PAGESIZE', |
|
'', |
|
$isProblemOrMap, $isNotMap, |
|
$symbFilter, |
|
$start_new_option) . |
|
&generate_resource_chooser('ALL_RESOURCES', |
|
'Select Resource(s) to print', |
|
" toponly='0' multichoice='1' suppressEmptySequences='0' addstatus='1' closeallpages='1'", |
|
'RESOURCES', |
|
'PAGESIZE', |
|
'', |
|
$isNotMap,'',$symbFilter, |
|
$start_new_option) . |
|
&generate_resource_chooser('ALL_PROBLEMS_STUDENTS', |
|
'Select Problem(s) to print', |
|
'toponly="0" multichoice="1" suppressEmptySequences="0" addstatus="1" closeallpages="1"', |
|
'RESOURCES', |
|
'STUDENTS1', |
|
'', |
|
$isProblemOrMap,'' , $symbFilter, |
|
$start_new_option) . |
|
$suffixXml |
|
); |
|
|
if ($helper->{VARS}->{'assignment'}) { |
if ($helper->{VARS}->{'assignment'}) { |
push @{$printChoices}, [&mt('Selected [_1]Problems[_2] from folder [_3] for [_4]selected people[_5]','<b>','</b>','<b><i>'.$sequenceTitle.'</i></b>','<b>','</b>'), 'problems_for_students', 'CHOOSE_STUDENTS']; |
|
push @{$printChoices}, [&mt('Selected [_1]Problems[_2] from folder [_3] for [_4]CODEd assignments[_5]','<b>','</b>','<b><i>'.$sequenceTitle.'</i></b>','<b>','</b>'), 'problems_for_anon', 'CHOOSE_ANON1']; |
# If we were looking at a page, allow a selection of problems from the page |
|
# either for selected students or for coded assignments. |
|
|
|
if ($page_ispage) { |
|
push @{$printChoices}, [&mt('Selected [_1]Problems[_2] from page [_3] for [_4]selected people[_5]', |
|
'<b>', '</b>', '<b><i>'.$page_title.'</i></b>', '<b>', '</b>'), |
|
'problems_for_students_from_page', 'CHOOSE_TGT_STUDENTS_PAGE']; |
|
push @{$printChoices}, [&mt('Selected [_1]Problems[_2] from page [_3] for [_4]CODEd assignments[_5]', |
|
'<b>', '</b>', '<b><i>'.$page_title.'</i></b>', '<b>', '</b>'), |
|
'problems_for_anon_page', 'CHOOSE_ANON1_PAGE']; |
|
} |
|
push @{$printChoices}, [&mt('Selected [_1]Problems[_2] from folder [_3] for [_4]selected people[_5]', |
|
'<b>','</b>','<b><i>'.$sequenceTitle.'</i></b>','<b>','</b>'), |
|
'problems_for_students', 'CHOOSE_STUDENTS']; |
|
push @{$printChoices}, [&mt('Selected [_1]Problems[_2] from folder [_3] for [_4]CODEd assignments[_5]', |
|
'<b>','</b>','<b><i>'.$sequenceTitle.'</i></b>','<b>','</b>'), |
|
'problems_for_anon', 'CHOOSE_ANON1']; |
} |
} |
|
|
my $randomly_ordered_warning = |
my $randomly_ordered_warning = |
Line 3098 ALL_PROBLEMS
|
Line 3382 ALL_PROBLEMS
|
# with one state, and use REGEXPs at inclusion time to set state names |
# with one state, and use REGEXPs at inclusion time to set state names |
# and next states for better mix and match capability |
# and next states for better mix and match capability |
# |
# |
my $resource_selector=<<RESOURCE_SELECTOR; |
my $resource_selector= &generate_resource_chooser('SELECT_PROBLEMS', |
<state name="SELECT_PROBLEMS" title="Select resources to print"> |
'Select resources to print', |
$randomly_ordered_warning |
'multichoice="1" addstatus="1" closeallpages="1"', |
|
'RESOURCES', |
<nextstate>PRINT_FORMATTING</nextstate> |
'PRINT_FORMATTING', |
<message><br /><big><i><b>Select resources for the assignment</b></i></big><br /></message> |
'', |
<resource variable="RESOURCES" multichoice="1" addstatus="1" |
$isProblem, , $symbFilter, |
closeallpages="1"> |
$start_new_option); |
<filterfunc>return $isProblem;</filterfunc> |
$resource_selector .= <<RESOURCE_SELECTOR; |
<mapurl>$map</mapurl> |
|
<valuefunc>return $symbFilter;</valuefunc> |
|
$start_new_option |
|
</resource> |
|
</state> |
|
<state name="PRINT_FORMATTING" title="How should results be printed?"> |
<state name="PRINT_FORMATTING" title="How should results be printed?"> |
<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"> |
Line 3131 ALL_PROBLEMS
|
Line 3410 ALL_PROBLEMS
|
</choices> |
</choices> |
</state> |
</state> |
RESOURCE_SELECTOR |
RESOURCE_SELECTOR |
|
$resource_selector .= &generate_resource_chooser('CHOOSE_STUDENTS_PAGE', |
|
'Select Problem(s) to print', |
|
"multichoice='1' addstatus='1' closeallpages ='1'", |
|
'RESOURCES', |
|
'PRINT_FORMATTING', |
|
$url, |
|
$isProblem, '', $symbFilter, |
|
$start_new_option); |
|
|
|
|
|
# Generate student choosers. |
|
|
|
|
&Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_STUDENTS); |
|
<state name="CHOOSE_STUDENTS" title="Select Students and Resources"> |
&Apache::lonxml::xmlparse($r, 'helper', |
<message><b>Select sorting order of printout</b> </message> |
&generate_student_chooser('CHOOSE_TGT_STUDENTS_PAGE', |
<choices variable='student_sort'> |
'student_sort', |
<choice computer='0'>Sort by section then student</choice> |
'STUDENTS', |
<choice computer='1'>Sort by students across sections.</choice> |
'CHOOSE_STUDENTS_PAGE')); |
</choices> |
&Apache::lonxml::xmlparse($r, 'helper', |
<message><br /><hr /><br /> </message> |
&generate_student_chooser('CHOOSE_STUDENTS', |
<student multichoice='1' variable="STUDENTS" nextstate="SELECT_PROBLEMS" coursepersonnel="1"/> |
'student_sort', |
</state> |
'STUDENTS', |
$resource_selector |
'SELECT_PROBLEMS')); |
CHOOSE_STUDENTS |
&Apache::lonxml::xmlparse($r, 'helper', $resource_selector); |
|
|
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
Line 3201 CHOOSE_STUDENTS
|
Line 3492 CHOOSE_STUDENTS
|
if ($codechoice eq '') { |
if ($codechoice eq '') { |
$codechoice='<choice computer="default">Default</choice>'; |
$codechoice='<choice computer="default">Default</choice>'; |
} |
} |
&Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_ANON1); |
my $anon1 = &generate_code_selector($helper, |
<state name="CHOOSE_ANON1" title="Specify CODEd Assignments"> |
'CHOOSE_ANON1', |
<nextstate>SELECT_PROBLEMS</nextstate> |
'SELECT_PROBLEMS', |
<message><h4>Fill out one of the forms below</h4></message> |
$codechoice, |
<message><br /><hr /> <br /></message> |
$code_selection, |
<message><h3>Generate new CODEd Assignments</h3></message> |
$namechoice) . $resource_selector; |
<message><table><tr><td><b>Number of CODEd assignments to print:</b></td><td></message> |
|
<string variable="NUMBER_TO_PRINT_TOTAL" maxlength="5" size="5"> |
|
<validator> |
&Apache::lonxml::xmlparse($r, 'helper',$anon1); |
if (((\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'}+0) < 1) && |
|
!\$helper->{'VARS'}{'REUSE_OLD_CODES'} && |
my $anon_page = &generate_code_selector($helper, |
!\$helper->{'VARS'}{'SINGLE_CODE'} && |
'CHOOSE_ANON1_PAGE', |
!\$helper->{'VARS'}{'CODE_SELECTED_FROM_LIST'}) { |
'SELECT_PROBLEMS_PAGE', |
return "You need to specify the number of assignments to print"; |
$codechoice, |
} |
$code_selection, |
return undef; |
$namechoice) . |
</validator> |
&generate_resource_chooser('SELECT_PROBLEMS_PAGE', |
</string> |
'Select Problem(s) to print', |
<message></td></tr><tr><td></message> |
"multichoice='1' addstatus='1' closeallpages ='1'", |
<message><b>Names to save the CODEs under for later:</b></message> |
'RESOURCES', |
<message></td><td></message> |
'PRINT_FORMATTING', |
<string variable="ANON_CODE_STORAGE_NAME" maxlength="50" size="20" /> |
$url, |
<message></td></tr><tr><td></message> |
$isProblem, '', $symbFilter, |
<message><b>Bubble sheet type:</b></message> |
$start_new_option); |
<message></td><td></message> |
&Apache::lonnet::logthis('XML for anonpage: '.$anon_page); |
<dropdown variable="CODE_OPTION" multichoice="0" allowempty="0"> |
&Apache::lonxml::xmlparse($r, 'helper', $anon_page); |
$codechoice |
|
</dropdown> |
|
<message></td></tr><tr><td colspan="2"></td></tr><tr><td></message> |
|
<message></td></tr><tr><td></table></message> |
|
<message><br /><hr /><h3>Print a Specific CODE </h3><br /><table></message> |
|
<message><tr><td><b>Enter a CODE to print:</b></td><td></message> |
|
<string variable="SINGLE_CODE" size="10"> |
|
<validator> |
|
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. |
|
} |
|
</validator> |
|
</string> |
|
<message></td></tr><tr><td></message> |
|
$code_selection |
|
<message></td></tr></table></message> |
|
<message><hr /><h3>Reprint a Set of Saved CODEs</h3><table><tr><td></message> |
|
<message><b>Select saved CODEs:</b></message> |
|
<message></td><td></message> |
|
<dropdown variable="REUSE_OLD_CODES"> |
|
$namechoice |
|
</dropdown> |
|
<message></td></tr></table></message> |
|
</state> |
|
$resource_selector |
|
CHOOSE_ANON1 |
|
|
|
|
|
if ($helper->{VARS}->{'assignment'}) { |
if ($helper->{VARS}->{'assignment'}) { |
Line 3269 CHOOSE_ANON1
|
Line 3529 CHOOSE_ANON1
|
$resource_selector=<<RESOURCE_SELECTOR; |
$resource_selector=<<RESOURCE_SELECTOR; |
<state name="SELECT_RESOURCES" title="Select Resources"> |
<state name="SELECT_RESOURCES" title="Select Resources"> |
$randomly_ordered_warning |
$randomly_ordered_warning |
|
|
<nextstate>PRINT_FORMATTING</nextstate> |
<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" |
Line 3280 CHOOSE_ANON1
|
Line 3539 CHOOSE_ANON1
|
$start_new_option |
$start_new_option |
</resource> |
</resource> |
</state> |
</state> |
|
|
<state name="PRINT_FORMATTING" title="Format of the print job"> |
<state name="PRINT_FORMATTING" title="Format of the print job"> |
<nextstate>NUMBER_PER_PDF</nextstate> |
<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> |