Diff for /loncom/interface/lonprintout.pm between versions 1.560.2.3 and 1.561

version 1.560.2.3, 2009/09/08 10:53:15 version 1.561, 2009/09/22 14:28:50
Line 1 Line 1
 #  
 #  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  # The LearningOnline Network
 # Printout  # Printout
 #  #
Line 36 Line 26
 #  #
 #  #
 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 83  my $ssi_retry_count = 5; # Some arbitrar Line 74  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) = @_;  
   
     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)  = @_;  
   
       
     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 ($value_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;  
 }  
   
   
 #-----------------------------------------------------------------------  
   
   
 # 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 1194  sub page_format_transformation { Line 1086  sub page_format_transformation {
   
     if ($selectionmade eq '4') {      if ($selectionmade eq '4') {
  if ($choice eq 'all_problems') {   if ($choice eq 'all_problems') {
     $assignment='Problems from the Whole Course';              $assignment=&mt('Problems from the Whole Course');
  } else {   } else {
     $assignment='Resources from the Whole Course';              $assignment=&mt('Resources from the Whole Course');
  }   }
     } else {      } else {
  $assignment=&Apache::lonxml::latex_special_symbols($assignment,'header');   $assignment=&Apache::lonxml::latex_special_symbols($assignment,'header');
Line 1451  sub print_page_in_course { Line 1343  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 1521  sub print_page_in_course { Line 1413  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 1543  sub print_page_in_course { Line 1438  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 1578  sub print_page_in_course { Line 1473  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 1673  sub recently_generated { Line 1560  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 2075  ENDPART Line 1962  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 2085  ENDPART Line 1970  ENDPART
   
   
         #-- produce an output string          #-- produce an output string
  if (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems')  or   if ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems') {
     ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems_in_page') ) {  
     $selectionmade = 2;      $selectionmade = 2;
  } elsif (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems_pages') or   } elsif ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems_pages') {
  ($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 2131  ENDPART Line 2012  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 2143  ENDPART Line 2024  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::("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 2175  ENDPART Line 2050  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 2221  ENDPART Line 2095  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 3054  sub printHelper { Line 2927  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 3063  sub printHelper { Line 2934  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 3125  sub printHelper { Line 2996  sub printHelper {
     "' variable='FINISHPAGE' />";      "' variable='FINISHPAGE' />";
     }      }
   
     # If not construction space user can print the components of a page:      if (($helper->{'VARS'}->{'construction'} ne '1' ) &&
   
     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},           push @{$printChoices}, [&mt('Selected [_1]Problems[_2] from folder [_3]','<b>','</b>','<b><i>'.$sequenceTitle.'</i></b>'), 'map_problems', 'CHOOSE_PROBLEMS'];
     [&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>'),           push @{$printChoices}, [&mt('Selected [_1]Resources[_2] from folder [_3]','<b>','</b>','<b><i>'.$sequenceTitle.'</i></b>'), 'map_problems_pages', 'CHOOSE_PROBLEMS_HTML'];
  'map_problems_pages',   
  'CHOOSE_PROBLEMS_HTML'];          my $helperFragment = <<HELPERFRAGMENT;
  &Apache::lonnet::logthis("Map url : $map");    <state name="CHOOSE_PROBLEMS" title="Select Problem(s) to print">
         my $helperFragment = &generate_resource_chooser('CHOOSE_PROBLEMS',      <resource variable="RESOURCES" multichoice="1" toponly='1' addstatus="1"
  'Select Problem(s) to print',                closeallpages="1">
  'multichoice="1" toponly="1" addstatus="1" closeallpages="1"',        <nextstate>PAGESIZE</nextstate>
  'RESOURCES',        <filterfunc>return $isProblem;</filterfunc>
  'PAGESIZE',        <mapurl>$map</mapurl>
  $map,        <valuefunc>return $symbFilter;</valuefunc>
  $isProblem, '',        $start_new_option
  $symbFilter,        </resource>
  $start_new_option);      </state>
  $helperFragment .= &generate_resource_chooser('CHOOSE_PROBLEMS_HTML',  
       'Select Resource(s) to print',    <state name="CHOOSE_PROBLEMS_HTML" title="Select Resource(s) to print">
        'multichoice="1" toponly="1" addstatus="1" closeallpages="1"',      <resource variable="RESOURCES" multichoice="1" toponly='1' addstatus="1"
       'RESOURCES',                closeallpages="1">
       'PAGESIZE',        <nextstate>PAGESIZE</nextstate>
       $map,        <filterfunc>return $isNotMap;</filterfunc>
       $isNotMap, '',        <mapurl>$map</mapurl>
       $symbFilter,        <valuefunc>return $symbFilter;</valuefunc>
       $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  &&
         ($post_data=~/\/res\// || $post_data =~/\/(syllabus|smppg|aboutme|bulletinboard)$/)) {           ($helper->{VARS}->{'postdata'}=~/\/res\// || $helper->{VARS}->{'postdata'}=~/\/(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'];
 my $suffixXml = <<ALL_PROBLEMS;           &Apache::lonxml::xmlparse($r, 'helper', <<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 3231  my $suffixXml = <<ALL_PROBLEMS; Line 3078  my $suffixXml = <<ALL_PROBLEMS;
       <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'];
     # If we were looking at a page, allow a selection of problems from the page      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'];
     # 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', 'CHOOSE_STUDENTS'];  
  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', 'CHOOSE_ANON1'];  
     }  
     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 3294  ALL_PROBLEMS Line 3098  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= &generate_resource_chooser('SELECT_PROBLEMS',   my $resource_selector=<<RESOURCE_SELECTOR;
   'Select resources to print',      <state name="SELECT_PROBLEMS" title="Select resources to print">
   'multichoice="1" addstatus="1" closeallpages="1"',      $randomly_ordered_warning
   'RESOURCES',   
   'PRINT_FORMATTING',     <nextstate>PRINT_FORMATTING</nextstate> 
   '',     <message><br /><big><i><b>Select resources for the assignment</b></i></big><br /></message>
   $isProblem, , $symbFilter,      <resource variable="RESOURCES" multichoice="1" addstatus="1" 
   $start_new_option);                closeallpages="1">
  $resource_selector .=  <<RESOURCE_SELECTOR;        <filterfunc>return $isProblem;</filterfunc>
         <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 3323  ALL_PROBLEMS Line 3132  ALL_PROBLEMS
     </state>      </state>
 RESOURCE_SELECTOR  RESOURCE_SELECTOR
   
 # Generate student choosers.          &Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_STUDENTS);
     <state name="CHOOSE_STUDENTS" title="Select Students and Resources">
         <message><b>Select sorting order of printout</b> </message>
       <choices variable='student_sort'>
         <choice computer='0'>Sort by section then student</choice>
  &Apache::lonxml::xmlparse($r, 'helper',         <choice computer='1'>Sort by students across sections.</choice>
   &generate_student_chooser('CHOOSE_STUDENTS',      </choices>
     'student_sort',        <message><br /><hr /><br /> </message>
     'STUDENTS',        <student multichoice='1' variable="STUDENTS" nextstate="SELECT_PROBLEMS" coursepersonnel="1"/>
     'SELECT_PROBLEMS'));    </state>
  &Apache::lonxml::xmlparse($r, 'helper', $resource_selector);      $resource_selector
   CHOOSE_STUDENTS
   
  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 3459  CHOOSE_ANON1 Line 3269  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 3469  CHOOSE_ANON1 Line 3280  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>

Removed from v.1.560.2.3  
changed lines
  Added in v.1.561


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>