Diff for /loncom/interface/lonprintout.pm between versions 1.560.2.1 and 1.560.2.2

version 1.560.2.1, 2009/08/17 10:48:28 version 1.560.2.2, 2009/08/25 10:57:18
Line 26 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 74  my $ssi_retry_count = 5; # Some arbitrar Line 73  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;
   }
   
   #-----------------------------------------------------------------------
   
   
 # 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 1382  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 1452  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 1474  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 1509  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 1604  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 2018  ENDPART Line 2062  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];
   
Line 2033  ENDPART Line 2077  ENDPART
  &Apache::lonnet::logthis("Problem");   &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");   &Apache::lonnet::logthis("texversion so far: $texversion");
  if ($urlp=~/\.page$/) {   if ($urlp=~/\.page$/) {
Line 3007  sub printHelper { Line 3055  sub printHelper {
     "<option text='".&mt('Start new page<br />before selected').      "<option text='".&mt('Start new page<br />before selected').
     "' variable='FINISHPAGE' />";      "' variable='FINISHPAGE' />";
     }      }
     # some debugging:  
     {      # 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 $varspostdata = $helper->{VARS}->{'postdata'};
  my $varsassignment = $helper->{VARS}->{'assignment'};   my $varsassignment = $helper->{VARS}->{'assignment'};
  my $debugnavmap    = Apache::lonnavmaps::navmap->new();   my $page_navmap         = Apache::lonnavmaps::navmap->new();
  my @dbgresources      = $debugnavmap->retrieveResources($url);   my @page_resources      = $page_navmap->retrieveResources($url);
  if(defined($dbgresources[0])) {   if(defined($page_resources[0])) {
  my $debugispage    = $dbgresources[0]->is_page();   $page_ispage       = $page_resources[0]->is_page();
  my $debugtitle     = $dbgresources[0]->title();   $page_title     = $page_resources[0]->title();
  my $resourcesymb   = $dbgresources[0]->symb();   my $resourcesymb   = $page_resources[0]->symb();
  my ($pagemap, $pageid, $pageurl) = &Apache::lonnet::decode_symb($symb);   my ($pagemap, $pageid, $pageurl) = &Apache::lonnet::decode_symb($symb);
  &Apache::lonnet::logthis("post: $varspostdata ass: $varsassignment is page: $debugispage");   if ($page_ispage) {
  if ($debugispage) {  
     push @{$printChoices},       push @{$printChoices}, 
     [&mt('Selected [_1]Problems[_2] from page [_3]', '<b>', '</b>', '<b><i>'.$debugtitle.'</i></b>'),       [&mt('Selected [_1]Problems[_2] from page [_3]', '<b>', '</b>', '<b><i>'.$page_title.'</i></b>'), 
      'map_problems_in_page',        'map_problems_in_page', 
      'CHOOSE_PROBLEMS_PAGE'];       'CHOOSE_PROBLEMS_PAGE'];
     push @{$printChoices},       push @{$printChoices}, 
          [&mt('Selected [_1]Resources[_2] from page [_3]', '<b>', '</b>', '<b><i>'.$debugtitle.'</i></b>'),            [&mt('Selected [_1]Resources[_2] from page [_3]', '<b>', '</b>', '<b><i>'.$page_title.'</i></b>'), 
   'map_resources_in_page',     'map_resources_in_page', 
   'CHOOSE_RESOURCES_PAGE'];    'CHOOSE_RESOURCES_PAGE'];
  }   }
  &Apache::lonnet::logthis("Pushing problems/resources from folder. $debugtitle");  
  &Apache::lonnet::logthis("Map url: $url");  
  &Apache::lonnet::logthis("Decoded symb: pagemap $pagemap id: $pageid url: $pageurl");  
         my $helperFragment = <<HELPERFRAGMENT;          my $helperFragment = <<HELPERFRAGMENT;
  <state name="CHOOSE_PROBLEMS_PAGE" title="Select Problem(s) to print">   <state name="CHOOSE_PROBLEMS_PAGE" title="Select Problem(s) to print">
     <resource variable="RESOURCES" multichoice="1" toponly='1' addstatus="1"      <resource variable="RESOURCES" multichoice="1" toponly='1' addstatus="1"
               closeallpages="1">                closeallpages="1">
  <nextstate>PAGESIZE</nextstate>   <nextstate>PAGESIZE</nextstate>
       <filterfunc>return $isProblem;</filterfunc>        <filterfunc>return $isProblem;</filterfunc>
       <mapurl>$pagemap</mapurl>        <mapurl>$url</mapurl>
       <valuefunc>return $symbFilter;</valuefunc>        <valuefunc>return $symbFilter;</valuefunc>
       $start_new_option        $start_new_option
       </resource>        </resource>
Line 3103  HELPERFRAGMENT Line 3151  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'];
Line 3152  HELPERFRAGMENT Line 3201  HELPERFRAGMENT
 ALL_PROBLEMS  ALL_PROBLEMS
   
  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', '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 3202  ALL_PROBLEMS Line 3267  ALL_PROBLEMS
     </state>      </state>
 RESOURCE_SELECTOR  RESOURCE_SELECTOR
   
         &Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_STUDENTS);  # Generate student choosers.
   <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>  
       <choice computer='1'>Sort by students across sections.</choice>  #        &Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_STUDENTS);
     </choices>  #  <state name="CHOOSE_STUDENTS" title="Select Students and Resources">
       <message><br /><hr /><br /> </message>  #      <message><b>Select sorting order of printout</b> </message>
       <student multichoice='1' variable="STUDENTS" nextstate="SELECT_PROBLEMS" coursepersonnel="1"/>  #    <choices variable='student_sort'>
   </state>  #
     $resource_selector  #
 CHOOSE_STUDENTS  #      <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="STUDENTS" nextstate="SELECT_PROBLEMS" coursepersonnel="1"/>
   #  </state>
    &Apache::lonxml::xmlparse($r, 'helper', 
     &generate_student_chooser('CHOOSE_STUDENTS',
       'student_sort',
       'STUDENTS',
       'SELECT_PROBLEMS'));
    &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'};

Removed from v.1.560.2.1  
changed lines
  Added in v.1.560.2.2


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