--- loncom/interface/lonprintout.pm 2009/09/08 10:53:15 1.560.2.3 +++ loncom/interface/lonprintout.pm 2009/10/13 11:01:16 1.560.2.6 @@ -1,17 +1,10 @@ # -# Issues: -# - Need to get the state flow for selected problems/resources for students -# correct -# - Need to do the CODEd stuff. -# - Need to regularize and figure out for each case who puts on the latex -# front matter and make sure it gets done. -# -# + # The LearningOnline Network # Printout # -# $Id: lonprintout.pm,v 1.560.2.3 2009/09/08 10:53:15 foxr Exp $ +# $Id: lonprintout.pm,v 1.560.2.6 2009/10/13 11:01:16 foxr Exp $ # # Copyright Michigan State University Board of Trustees # @@ -99,7 +92,7 @@ sub generate_student_chooser { $sort_choice, $variable, $next_state) = @_; - + &Apache::lonnet::logthis("Student chooser next state: $next_state, this state: $this_state"); my $result = < Select sorting order of printout @@ -155,7 +148,7 @@ sub generate_resource_chooser { $value_func, $start_new_option) = @_; - + &Apache::lonnet::logthis("Top URL = $top_url"); my $result = < $next_state return $filter; CHOOSE_RESOURCES - if ($value_func ne '') { + if ($choice_func ne '') { $result .= "return $choice_func;"; } if ($top_url ne '') { @@ -178,7 +171,87 @@ 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 = < + $next_state +

Fill out one of the forms below

+


+

Generate new CODEd Assignments

+
Number of CODEd assignments to print: + + + 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; + + +
+ Names to save the CODEs under for later: + + +
+ Bubble sheet type: + + + $bubble_types + +
+
+

Print a Specific CODE


+
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. + } + + +
+ $code_selections +
+

Reprint a Set of Saved CODEs

+ Select saved CODEs: + + + $saved_codes + +
+ +CHOOSE_ANON1 + return $result; +} #----------------------------------------------------------------------- @@ -2153,7 +2226,7 @@ ENDPART $texversion.=&ssi_with_retries($urlp, $ssi_retry_count, %form); &Apache::lonnet::logthis("texversion so far: $texversion"); if ($urlp=~/\.page$/) { - &Apache::lonnet::("Special page actions"); + &Apache::lonnet::logthis("Special page actions"); ($texversion,my $number_of_columns_page) = &page_cleanup($texversion); if ($number_of_columns_page > $number_of_columns) {$number_of_columns=$number_of_columns_page;} $texversion =~ s/\\end{document}\d*/\\end{document}/; @@ -2197,7 +2270,9 @@ ENDPART } if ($flag_latex_header_remove ne 'NO') { + &Apache::lonnet::logthis("Removing header/footer 1"); $texversion = &latex_header_footer_remove($texversion); + &Apache::lonnet::logthis("With h/f removed we have: $texversion"); } else { $texversion =~ s/\\end{document}//; } @@ -2234,6 +2309,7 @@ ENDPART } if ($flag_latex_header_remove ne 'NO') { + &Apache::lonnet::logthis("Removing header & footer 2"); $texversion = &latex_header_footer_remove($texversion); } else { $texversion =~ s/\\end{document}/\\vskip 0\.5mm\\noindent\\makebox\[\\textwidth\/\$number_of_columns\]\[b\]\{\\hrulefill\}/; @@ -2261,6 +2337,7 @@ ENDPART $texversion=&unsupported($urlp,$helper->{'VARS'}->{'LATEX_TYPE'}, $master_seq[$i]); if ($flag_latex_header_remove ne 'NO') { + &Apache::lonnet::logthis("Removing header/footer 3"); $texversion = &latex_header_footer_remove($texversion); } else { $texversion =~ s/\\end{document}//; @@ -2278,6 +2355,7 @@ ENDPART } $result .= '\end{document}'; } 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 'resources_for_students')){ @@ -2285,6 +2363,7 @@ ENDPART #-- prints assignments for whole class or for selected students my $type; 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') ) { $selectionmade=5; $type='problems'; @@ -2322,9 +2401,11 @@ ENDPART $helper->{'VARS'}->{'NUMBER_TO_PRINT'} = $#students+1; } my @master_seq=split /\|\|\|/, $helper->{'VARS'}->{'RESOURCES'}; + &Apache::lonnet::logthis("RESOURCES: ". $helper->{'VARS'}->{'RESOURCES'}); #loop over students - my $flag_latex_header_remove = 'NO'; + + my $flag_latex_header_remove = 'NO'; my %moreenv; $moreenv{'instructor_comments'}='hide'; $moreenv{'textwidth'}=&get_textwidth($helper,$LaTeXwidth); @@ -2372,6 +2453,7 @@ ENDPART &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); $result .= $print_array[0].' \end{document}'; } 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') ) { my $cdom =$env{'course.'.$env{'request.course.id'}.'.domain'}; my $cnum =$env{'course.'.$env{'request.course.id'}.'.num'}; @@ -2523,6 +2605,7 @@ ENDPART $newurlp=&path_to_problem($newurlp,$LaTeXwidth); $texversion =~ s/(\\begin{minipage}{\\textwidth})/$1 $newurlp/; if ($flag_latex_header_remove ne 'NO') { + &Apache::lonnet::logthis("Removing header/footer: 4"); $texversion = &latex_header_footer_remove($texversion); } else { $texversion =~ s/\\end{document}//; @@ -2727,9 +2810,10 @@ sub print_resources { # so we will just rely on prntout.pl to strip ENDOFSTUDENTSTAMP from the # postscript. Each ENDOFSTUDENTSTAMP will go on a line by itself. # - + &Apache::lonnet::logthis("In print_resources"); foreach my $curresline (@{$master_seq}) { + &Apache::lonnet::logthis("Res: $curresline"); if (defined $page_breaks{$curresline}) { if($i != 0) { $current_output.= "\\newpage\n"; @@ -2747,7 +2831,7 @@ sub print_resources { &Apache::lonxml::remember_problem_counter(); 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') || ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) { # Use a copy of the hash so we don't pervert it on future loop passes. @@ -2775,13 +2859,14 @@ sub print_resources { $rendered = $header.$body; } } - + &Apache::lonnet::logthis("After preprending header: $rendered"); if ($helper->{'VARS'}->{'PRINT_ANNOTATIONS'} eq 'yes') { my $url = &Apache::lonnet::clutter($res_url); my $annotation = &annotate($url); $rendered =~ s/(\\keephidden{ENDOFPROBLEM})/$annotation$1/; } if ($remove_latex_header eq 'YES') { + &Apache::lonnet::logthis("Removing header/footer: 5"); $rendered = &latex_header_footer_remove($rendered); } else { $rendered =~ s/\\end{document}//; @@ -2796,6 +2881,7 @@ sub print_resources { $annotation =~ s/(\\end{document})/$annotation$1/; } if ($remove_latex_header eq 'YES') { + &Apache::lonnet::logthis("Removing header/footer: 6"); $rendered = &latex_header_footer_remove($rendered); } else { $rendered =~ s/\\end{document}//; @@ -2805,12 +2891,14 @@ sub print_resources { my $url = &Apache::lonnet::clutter($res_url); my $rendered = &include_pdf($url); if ($remove_latex_header ne 'NO') { + &Apache::lonnet::logthis("Removing header/footer: 7"); $rendered = &latex_header_footer_remove($rendered); } $current_output .= $rendered; } else { my $rendered = &unsupported($res_url,$helper->{'VARS'}->{'LATEX_TYPE'},$curresline); if ($remove_latex_header ne 'NO') { + &Apache::lonnet::logthis("Removing header/footer: 8"); $rendered = &latex_header_footer_remove($rendered); } else { $rendered =~ s/\\end{document}//; @@ -3151,7 +3239,7 @@ sub printHelper { } my $helperFragment = &generate_resource_chooser('CHOOSE_PROBLEMS_PAGE', 'Select Problem(s) to print', - "multichoice='1' toponly='1', addstatus='1' closeallpages='1'", + "multichoice='1' toponly='1' addstatus='1' closeallpages='1'", 'RESOURCES', 'PAGESIZE', $url, @@ -3248,7 +3336,7 @@ ALL_PROBLEMS 'RESOURCES', 'PAGESIZE', '', - $isNotMap,,$symbFilter, + $isNotMap,'',$symbFilter, $start_new_option) . &generate_resource_chooser('ALL_PROBLEMS_STUDENTS', 'Select Problem(s) to print', @@ -3256,7 +3344,7 @@ ALL_PROBLEMS 'RESOURCES', 'STUDENTS1', '', - $isProblemOrMap, , $symbFilter, + $isProblemOrMap,'' , $symbFilter, $start_new_option) . $suffixXml ); @@ -3269,10 +3357,10 @@ ALL_PROBLEMS if ($page_ispage) { push @{$printChoices}, [&mt('Selected [_1]Problems[_2] from page [_3] for [_4]selected people[_5]', '', '', ''.$page_title.'', '', ''), - 'problems_for_students', 'CHOOSE_STUDENTS']; + 'problems_for_students_from_page', 'CHOOSE_TGT_STUDENTS_PAGE']; push @{$printChoices}, [&mt('Selected [_1]Problems[_2] from page [_3] for [_4]CODEd assignments[_5]', '', '', ''.$page_title.'', '', ''), - 'problems_for_anon', 'CHOOSE_ANON1']; + 'problems_for_anon_page', 'CHOOSE_ANON1_PAGE']; } push @{$printChoices}, [&mt('Selected [_1]Problems[_2] from folder [_3] for [_4]selected people[_5]', '','',''.$sequenceTitle.'','',''), @@ -3322,12 +3410,25 @@ ALL_PROBLEMS 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. +# Generate student choosers. + &Apache::lonxml::xmlparse($r, 'helper', + &generate_student_chooser('CHOOSE_TGT_STUDENTS_PAGE', + 'student_sort', + 'STUDENTS', + 'CHOOSE_STUDENTS_PAGE')); &Apache::lonxml::xmlparse($r, 'helper', &generate_student_chooser('CHOOSE_STUDENTS', 'student_sort', @@ -3391,63 +3492,32 @@ RESOURCE_SELECTOR if ($codechoice eq '') { $codechoice='Default'; } - &Apache::lonxml::xmlparse($r, 'helper', < - SELECT_PROBLEMS -

Fill out one of the forms below

-


-

Generate new CODEd Assignments

-
Number of CODEd assignments to print: - - - 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; - - -
- Names to save the CODEs under for later: - - -
- Bubble sheet type: - - - $codechoice - -
-
-

Print a Specific CODE


-
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. - } - - -
- $code_selection -
-

Reprint a Set of Saved CODEs

- Select saved CODEs: - - - $namechoice - -
- - $resource_selector -CHOOSE_ANON1 + my $anon1 = &generate_code_selector($helper, + 'CHOOSE_ANON1', + 'SELECT_PROBLEMS', + $codechoice, + $code_selection, + $namechoice) . $resource_selector; + + + &Apache::lonxml::xmlparse($r, 'helper',$anon1); + + my $anon_page = &generate_code_selector($helper, + 'CHOOSE_ANON1_PAGE', + 'SELECT_PROBLEMS_PAGE', + $codechoice, + $code_selection, + $namechoice) . + &generate_resource_chooser('SELECT_PROBLEMS_PAGE', + 'Select Problem(s) to print', + "multichoice='1' addstatus='1' closeallpages ='1'", + 'RESOURCES', + 'PRINT_FORMATTING', + $url, + $isProblem, '', $symbFilter, + $start_new_option); + &Apache::lonnet::logthis('XML for anonpage: '.$anon_page); + &Apache::lonxml::xmlparse($r, 'helper', $anon_page); if ($helper->{VARS}->{'assignment'}) {