Diff for /loncom/interface/lonprintout.pm between versions 1.476 and 1.480

version 1.476, 2006/08/03 02:36:56 version 1.480, 2006/08/21 22:53:19
Line 1051  sub recently_generated { Line 1051  sub recently_generated {
 #    my $helpervars = Dumper($helper->{'VARS'});  #    my $helpervars = Dumper($helper->{'VARS'});
 #    &Apache::lonnet::logthis("Dump of helper vars:\n $helpervars");  #    &Apache::lonnet::logthis("Dump of helper vars:\n $helpervars");
 #}  #}
   #sub dump_env {
   #    my $envvars = Dumper(\%env);
   #    &Apache::lonnet::logthis("Dump of env: \n $envvars");
   #}
   
 sub get_page_breaks  {  #sub get_page_breaks  {
     my ($helper) = @_;  #    my ($helper) = @_;
     my %page_breaks;  #    my %page_breaks;
   #
     foreach my $break (split /\|\|\|/, $helper->{'VARS'}->{'FINISHPAGE'}) {  #    foreach my $break (split /\|\|\|/, $helper->{'VARS'}->{'FINISHPAGE'}) {
  $page_breaks{$break} = 1;  # $page_breaks{$break} = 1;
     }  #    }
     return %page_breaks;  #    return %page_breaks;
 }  #}
   
 #  Output a sequence (recursively if neeed)  #  Output a sequence (recursively if neeed)
 #  from construction space.  #  from construction space.
Line 1110  sub print_construction_sequence { Line 1114  sub print_construction_sequence {
  $answerform{'answer_output_mode'}='tex';   $answerform{'answer_output_mode'}='tex';
  $answerform{'rndseed'}=$rndseed;   $answerform{'rndseed'}=$rndseed;
  $answerform{'problem_split'}=$parmhash{'problem_stream_switch'};   $answerform{'problem_split'}=$parmhash{'problem_stream_switch'};
  if ($urlp=~/\/res\//) {$env{'request.state'}='published';}   if ($urlp=~/\/res\//) {
       $env{'request.state'}='published';
    }
   
  $resources_printed .= $urlp.':';   $resources_printed .= $urlp.':';
  my $answer=&Apache::lonnet::ssi($urlp,%answerform);   my $answer=&Apache::lonnet::ssi($urlp,%answerform);
  if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {   if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {
Line 1119  sub print_construction_sequence { Line 1126  sub print_construction_sequence {
     # If necessary, encapsulate answer in minipage:      # If necessary, encapsulate answer in minipage:
           
     $texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});      $texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
     my $body ='\vskip 0 mm \noindent\textbf{'.&Apache::lonnet::gettitle($helper->{'VARS'}->{'symb'}).'}\vskip 0 mm ';      my $title = &Apache::lonnet::gettitle($helper->{'VARS'}->{'symb'});
       $title = &Apache::lonxml::latex_special_symbols($title);
       my $body ='\vskip 0 mm \noindent\textbf{'.$title.'}\vskip 0 mm ';
     $body.=&path_to_problem($urlp,$LaTeXwidth);      $body.=&path_to_problem($urlp,$LaTeXwidth);
     $body.='\vskip 1 mm '.$answer.'\end{document}';      $body.='\vskip 1 mm '.$answer.'\end{document}';
     $body = &encapsulate_minipage($body);      $body = &encapsulate_minipage($body);
Line 1196  ENDPART Line 1205  ENDPART
     my $start_page  = &Apache::loncommon::start_page('Preparing Printout',$js);      my $start_page  = &Apache::loncommon::start_page('Preparing Printout',$js);
     my $msg = &mt('Please stand by while processing your print request, this may take some time ...');      my $msg = &mt('Please stand by while processing your print request, this may take some time ...');
   
   
   
     $r->print($start_page."\n<p>\n$msg\n</p>\n");      $r->print($start_page."\n<p>\n$msg\n</p>\n");
   
     # fetch the pagebreaks and store them in the course environment      # fetch the pagebreaks and store them in the course environment
Line 1247  ENDPART Line 1258  ENDPART
     }      }
   
     if ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'current_document') {      if ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'current_document') {
   
       #-- single document - problem, page, html, xml, ...        #-- single document - problem, page, html, xml, ...
  my ($currentURL,$cleanURL);   my ($currentURL,$cleanURL);
   
Line 1314  ENDPART Line 1326  ENDPART
  } 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') {
  $texversion.='\vskip 0 mm \noindent\textbf{'.&Apache::lonnet::gettitle($helper->{'VARS'}->{'symb'}).'}\vskip 0 mm ';   my $title = &Apache::lonnet::gettitle($helper->{'VARS'}->{'symb'});
    $title = &Apache::lonxml::latex_special_symbols($title);
    $texversion.='\vskip 0 mm \noindent\textbf{'.$title.'}\vskip 0 mm ';
  $texversion.=&path_to_problem($cleanURL,$LaTeXwidth);   $texversion.=&path_to_problem($cleanURL,$LaTeXwidth);
     } else {      } else {
  $texversion.='\vskip 0 mm \noindent\textbf{Prints from construction space - there is no title.}\vskip 0 mm ';   $texversion.='\vskip 0 mm \noindent\textbf{Prints from construction space - there is no title.}\vskip 0 mm ';
Line 1435  ENDPART Line 1449  ENDPART
     } else {      } else {
  if ($urlp=~/\.(problem|exam|quiz|assess|survey|form|library)$/) {   if ($urlp=~/\.(problem|exam|quiz|assess|survey|form|library)$/) {
     $texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});      $texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
     my $body ='\vskip 0 mm \noindent\textbf{'.&Apache::lonnet::gettitle($master_seq[$i]).'}\vskip 0 mm ';      my $title = &Apache::lonnet::gettitle($master_seq[$i]);
       $title = &Apache::lonxml::latex_special_symbols($title);
       my $body ='\vskip 0 mm \noindent\textbf{'.$title.'}\vskip 0 mm ';
     $body   .= &path_to_problem ($urlp,$LaTeXwidth);      $body   .= &path_to_problem ($urlp,$LaTeXwidth);
     $body   .='\vskip 1 mm '.$answer;      $body   .='\vskip 1 mm '.$answer;
     $body    = &encapsulate_minipage($body);      $body    = &encapsulate_minipage($body);
Line 1952  sub print_resources { Line 1968  sub print_resources {
   
           
     my $header =&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});      my $header =&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
     my $body   ='\vskip 0 mm \noindent\textbf{'.&Apache::lonnet::gettitle($curresline).'}\vskip 0 mm ';      my $title = &Apache::lonnet::gettitle($curresline);
     $body     .=&path_to_problem($res_url,$LaTeXwidth);          $title = &Apache::lonxml::latex_special_symbols($title);
       my $body   ='\vskip 0 mm \noindent\textbf{'.$title.'}\vskip 0 mm ';
       $body     .=&path_to_problem($res_url,$LaTeXwidth);
     $body     .='\vskip 1 mm '.$ansrendered;      $body     .='\vskip 1 mm '.$ansrendered;
     $body     = &encapsulate_minipage($body);      $body     = &encapsulate_minipage($body);
     $rendered = $header.$body;      $rendered = $header.$body;
Line 2140  sub printHelper { Line 2158  sub printHelper {
  }   }
   
     }      }
   
           
     # This will persistently load in the data we want from the      # This will persistently load in the data we want from the
     # very first screen.      # very first screen.
Line 2148  sub printHelper { Line 2165  sub printHelper {
     if ($env{'form.postdata'}=~/^(?:http:\/\/[^\/]+\/|\/|)\~([^\/]+)\/(.*)$/) {      if ($env{'form.postdata'}=~/^(?:http:\/\/[^\/]+\/|\/|)\~([^\/]+)\/(.*)$/) {
         $helper->{VARS}->{'filename'} = "~$1/$2";          $helper->{VARS}->{'filename'} = "~$1/$2";
         $helper->{VARS}->{'construction'} = 1;          $helper->{VARS}->{'construction'} = 1;
     } else {      } elsif ($env{'form.postdata'}) {
         if ($env{'form.postdata'}) {          if ($env{'form.postdata'}) {
             $helper->{VARS}->{'symb'} = &Apache::lonnet::symbread($env{'form.postdata'});              $helper->{VARS}->{'symb'} = &Apache::lonnet::symbread($env{'form.postdata'});
         }          }
Line 2160  sub printHelper { Line 2177  sub printHelper {
         }          }
   
     }      }
   
     if ($env{'form.symb'}) {      if ($env{'form.symb'}) {
         $helper->{VARS}->{'symb'} = $env{'form.symb'};          $helper->{VARS}->{'symb'} = $env{'form.symb'};
     }      }
Line 2172  sub printHelper { Line 2188  sub printHelper {
  &Apache::lonenc::check_encrypt($helper->{VARS}->{'symb'});   &Apache::lonenc::check_encrypt($helper->{VARS}->{'symb'});
     my ($resourceTitle,$sequenceTitle,$mapTitle) = &details_for_menu($helper);      my ($resourceTitle,$sequenceTitle,$mapTitle) = &details_for_menu($helper);
     if ($sequenceTitle ne '') {$helper->{VARS}->{'assignment'}=$sequenceTitle;}      if ($sequenceTitle ne '') {$helper->{VARS}->{'assignment'}=$sequenceTitle;}
   
           
     # Extract map      # Extract map
     my $symb = $helper->{VARS}->{'symb'};      my $symb = $helper->{VARS}->{'symb'};
Line 2180  sub printHelper { Line 2195  sub printHelper {
     my $subdir;      my $subdir;
   
     # Get the resource name from construction space      # Get the resource name from construction space
   
   
     if ($helper->{VARS}->{'construction'}) {      if ($helper->{VARS}->{'construction'}) {
         $resourceTitle = substr($helper->{VARS}->{'filename'},           $resourceTitle = substr($helper->{VARS}->{'filename'}, 
                                 rindex($helper->{VARS}->{'filename'}, '/')+1);                                  rindex($helper->{VARS}->{'filename'}, '/')+1);
         $subdir = substr($helper->{VARS}->{'filename'},          $subdir = substr($helper->{VARS}->{'filename'},
                          0, rindex($helper->{VARS}->{'filename'}, '/') + 1);                           0, rindex($helper->{VARS}->{'filename'}, '/') + 1);
     } else {      } elsif ($env{'form.postdata'} =~ /^\/res\// ) {
           $subdir = substr($env{'form.postdata'},
                            0, rindex($env{'form.postdata'}, '/') + 1);
       } elsif ((defined $helper->{VARS}->{'postdata'}) &&
        ($helper->{VARS}->{'postdata'} =~  /^\/res\//)){
           $subdir = substr($helper->{VARS}->{'postdata'},
                            0, rindex($helper->{VARS}->{'postdata'}, '/') + 1);
       } else {     #    (!$helper->{VARS}->{'postdata'}) {
         ($map, $id, $url) = &Apache::lonnet::decode_symb($symb);          ($map, $id, $url) = &Apache::lonnet::decode_symb($symb);
         $helper->{VARS}->{'postdata'} =           $helper->{VARS}->{'postdata'} = 
     &Apache::lonenc::check_encrypt(&Apache::lonnet::clutter($url));      &Apache::lonenc::check_encrypt(&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 2205  sub printHelper { Line 2228  sub printHelper {
   
     my $userCanSeeHidden = Apache::lonnavmaps::advancedUser();      my $userCanSeeHidden = Apache::lonnavmaps::advancedUser();
   
     Apache::lonhelper::registerHelperTags();      &Apache::lonhelper::registerHelperTags();
   
     # "Delete everything after the last slash."      # "Delete everything after the last slash."
     $subdir =~ s|/[^/]+$||;      $subdir =~ s|/[^/]+$||;
Line 2257  sub printHelper { Line 2280  sub printHelper {
     if (($helper->{'VARS'}->{'construction'} ne '1') &&      if (($helper->{'VARS'}->{'construction'} ne '1') &&
   
  $helper->{VARS}->{'postdata'} &&   $helper->{VARS}->{'postdata'} &&
    ($helper->{VARS}->{'postdata'} !~ /^\/res\//) &&
  $helper->{VARS}->{'assignment'}) {   $helper->{VARS}->{'assignment'}) {
         # Allow problems from sequence          # Allow problems from sequence
         push @{$printChoices}, [&mt('Selected <b>Problems</b> in folder <b><i>[_1]</i></b>',$sequenceTitle), 'map_problems', 'CHOOSE_PROBLEMS'];          push @{$printChoices}, [&mt('Selected <b>Problems</b> in folder <b><i>[_1]</i></b>',$sequenceTitle), 'map_problems', 'CHOOSE_PROBLEMS'];
Line 2293  HELPERFRAGMENT Line 2317  HELPERFRAGMENT
     # If the user has pfo (print for otheres) allow them to print all       # If the user has pfo (print for otheres) allow them to print all 
     # problems and resources  in the entier course, optionally for selected students      # problems and resources  in the entier course, optionally for selected students
     if ($perm{'pfo'} &&       if ($perm{'pfo'} && 
         ($helper->{VARS}->{'postdata'}=~/\/res\// || $helper->{VARS}->{'postdata'}=~/\/(syllabus|smppg|aboutme|bulletinboard)$/)) {           $helper->{VARS}->{'postdata'} !~/^\/res\// && 
    $helper->{VARS}->{'postdata'}=~/\/(syllabus|smppg|aboutme|bulletinboard)$/) { 
         push @{$printChoices}, ['Selected <b>Problems</b> from <b>entire course</b>', 'all_problems', 'ALL_PROBLEMS'];          push @{$printChoices}, ['Selected <b>Problems</b> from <b>entire course</b>', 'all_problems', 'ALL_PROBLEMS'];
  push @{$printChoices}, ['Selected <b>Resources</b> from <b>entire course</b>', 'all_resources', 'ALL_RESOURCES'];   push @{$printChoices}, ['Selected <b>Resources</b> from <b>entire course</b>', 'all_resources', 'ALL_RESOURCES'];
          &Apache::lonxml::xmlparse($r, 'helper', <<ALL_PROBLEMS);           &Apache::lonxml::xmlparse($r, 'helper', <<ALL_PROBLEMS);
Line 2602  CHOOSE_STUDENTS1 Line 2626  CHOOSE_STUDENTS1
   </state>    </state>
     $resource_selector      $resource_selector
 CHOOSE_ANON2  CHOOSE_ANON2
     }  }
   
     # FIXME: That RE should come from a library somewhere.      # FIXME: That RE should come from a library somewhere.
     if ((((&Apache::lonnet::allowed('bre',$subdir) eq 'F') and ($helper->{VARS}->{'postdata'}=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)/)) or defined $helper->{'VARS'}->{'construction'}) and $perm{'pav'} and $subdir ne $Apache::lonnet::perlvar{'lonDocRoot'}.'/res/') {          if ((((&Apache::lonnet::allowed('bre',$subdir) eq 'F') and 
     ($helper->{VARS}->{'postdata'}=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)/)) or 
    defined $helper->{'VARS'}->{'construction'}) and $perm{'pav'} and $subdir ne $Apache::lonnet::perlvar{'lonDocRoot'}.'/res/') {    
         push @{$printChoices}, [&mt("Selected <b>Problems</b> from current subdirectory <b><i>[_1]</i></b>",$subdir), 'problems_from_directory', 'CHOOSE_FROM_SUBDIR'];          push @{$printChoices}, [&mt("Selected <b>Problems</b> from current subdirectory <b><i>[_1]</i></b>",$subdir), 'problems_from_directory', 'CHOOSE_FROM_SUBDIR'];
   
         my $f = '$filename';          my $f = '$filename';
Line 2631  CHOOSE_FROM_SUBDIR Line 2656  CHOOSE_FROM_SUBDIR
   
     # Allow the user to select any sequence in the course, feed it to      # Allow the user to select any sequence in the course, feed it to
     # another resource selector for that sequence      # another resource selector for that sequence
     if (!$helper->{VARS}->{'construction'}) {      if (!$helper->{VARS}->{'construction'} && ($helper->{VARS}->{'postdata'} !~ /^\/res\//)) {
  push @$printChoices, ["Selected <b>Resources</b> from <b>selected folder</b> in course",   push @$printChoices, ["Selected <b>Resources</b> from <b>selected folder</b> in course",
       'select_sequences', 'CHOOSE_SEQUENCE'];        'select_sequences', 'CHOOSE_SEQUENCE'];
  my $escapedSequenceName = $helper->{VARS}->{'SEQUENCE'};   my $escapedSequenceName = $helper->{VARS}->{'SEQUENCE'};
Line 2662  CHOOSE_FROM_SUBDIR Line 2687  CHOOSE_FROM_SUBDIR
     </state>      </state>
 CHOOSE_FROM_ANY_SEQUENCE  CHOOSE_FROM_ANY_SEQUENCE
 }  }
   
     # Generate the first state, to select which resources get printed.      # Generate the first state, to select which resources get printed.
     Apache::lonhelper::state->new("START", "Select Printing Options:");      Apache::lonhelper::state->new("START", "Select Printing Options:");
     $paramHash = Apache::lonhelper::getParamHash();      $paramHash = Apache::lonhelper::getParamHash();

Removed from v.1.476  
changed lines
  Added in v.1.480


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