Diff for /loncom/interface/lonprintout.pm between versions 1.557.2.2 and 1.558

version 1.557.2.2, 2009/07/14 11:08:00 version 1.558, 2009/07/03 16:13:13
Line 197  sub include_pdf { Line 197  sub include_pdf {
   
   
 #  #
 #   ssi_with_retries- Does the server side include of a resource.  #   ssi_with_retries - Does the server side include of a resource.
 #                      if the ssi call returns an error we'll retry it up to  #                      if the ssi call returns an error we'll retry it up to
 #                      the number of times requested by the caller.  #                      the number of times requested by the caller.
 #                      If we still have a proble, no text is appended to the  #                      If we still have a proble, no text is appended to the
Line 944  sub old_character_chart { Line 944  sub old_character_chart {
     $result =~ s/&(rdquo|#8221);/\'\'/g;      $result =~ s/&(rdquo|#8221);/\'\'/g;
   
   
   
     return $result;      return $result;
 }  }
   
Line 1306  sub unsupported { Line 1305  sub unsupported {
     return $result;      return $result;
 }  }
   
 #  
 #  Map from helper layout style to the book/album:  
 #  
 sub map_laystyle {  
     my ($laystyle) = @_;  
     if ($laystyle eq 'L') {  
  $laystyle='album';  
     } else {  
  $laystyle='book';  
     }  
     return $laystyle;  
 }  
   
 sub print_page_in_course {  
     my ($helper, $rparmhash, $currentURL, $resources) = @_;  
     my %parmhash       = %$rparmhash;  
     my @page_resources = @$resources;  
     my $mode = $helper->{'VARS'}->{'LATEX_TYPE'};  
     my $symb = $helper->{'VARS'}->{'symb'};  
   
   
     my $format_from_helper = $helper->{'VARS'}->{'FORMAT'};  
   
   
     my @temporary_array=split /\|/,$format_from_helper;  
     my ($laystyle,$numberofcolumns,$papersize,$pdfFormFields)=@temporary_array;  
     $laystyle = &map_laystyle($laystyle);  
     my ($textwidth,$textheight,$oddoffset,$evenoffset) = &page_format($papersize,$laystyle,  
       $numberofcolumns);  
     my $LaTeXwidth=&recalcto_mm($textwidth);   
   
   
     if ($mode ne '') {$mode='\\'.$mode}  
     my $result.= &print_latex_header($mode);  
     if ($currentURL=~m|^(/adm/wrapper/)?ext/|) {  
  $currentURL=~s|^(/adm/wrapper/)?ext/|http://|;  
  my $title=&Apache::lonnet::gettitle($symb);  
  $title = &Apache::lonxml::latex_special_symbols($title);  
  $result.=' \strut \\\\ '.$title.' \strut \\\\ '.$currentURL.' ';  
     } else {  
  $result.=$currentURL;  
     }  
     if ($helper->{'VARS'}->{'style_file'}=~/\w/) {  
  &Apache::lonnet::appenv({'construct.style' =>  
  $helper->{'VARS'}->{'style_file'}});  
     } elsif ($env{'construct.style'}) {  
  &Apache::lonnet::delenv('construct.style');  
     }  
   
     # First is theo verall page description.  This is then followed by the   
     # components of the page. Each of which must be printed independently.  
   
     my $the_page = shift(@page_resources);   
     $result .= "URL: $currentURL " .'\\\\';  
   
     foreach my $resource (@page_resources) {  
  my $resource_src   = $resource->src(); # Essentially the URL of the resource.  
   
  # Recurse if a .page:  
   
  if ($resource_src =~ /.page$/i) {  
     my $navmap         = Apache::lonnavmaps::navmap->new();  
     my @page_resources = $navmap->retrieveResources($resource_src);  
     $result           .= &print_page_in_course($helper, $rparmhash,   
        $resource_src, \@page_resources);  
  }  
  # these resources go through the XML transformer:  
   
  elsif ($resource_src =~ /\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm\xhtml|xhtm)$/)  {  
     my $urlp = &Apache::lonnet::clutter($resource_src);  
     my %form;  
     my %moreenv;  
   
     &Apache::lonxml::remember_problem_counter();  
     $moreenv{'request.filename'}=$urlp;  
     if ($helper->{'VARS'}->{'probstatus'} eq 'exam') {$form{'problemtype'}='exam';}  
   
     $form{'grade_target'}  = 'tex';  
     $form{'textwidth'}    = &get_textwidth($helper, $LaTeXwidth);  
     $form{'pdfFormFiels'} = $pdfFormFields; #   
     $form{'showallfoils'} = $helper->{'VARS'}->{'showallfoils'};      
       
     $form{'problem_split'}=$parmhash{'problem_stream_switch'};  
     $form{'suppress_tries'}=$parmhash{'suppress_tries'};  
     $form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};  
     $form{'print_discussions'}=$helper->{'VARS'}->{'PRINT_DISCUSSIONS'};  
     $form{'print_annotations'}=$helper->{'VARS'}->{'PRINT_ANNOTATIONS'};  
     if (($helper->{'VARS'}->{'PRINT_DISCUSSIONS'} eq 'yes') ||  
  ($helper->{'VARS'}->{'PRINT_ANNOTATIONS'} eq 'yes')) {  
  $form{'problem_split'}='yes';  
     }  
     my $rndseed = time;  
     if ($helper->{'VARS'}->{'curseed'}) {  
  $rndseed=$helper->{'VARS'}->{'curseed'};  
     }  
     $form{'rndseed'}=$rndseed;  
     &Apache::lonnet::appenv(\%moreenv);  
       
     &Apache::lonxml::clear_problem_counter();  
   
     my $texversion = &ssi_with_retries($urlp, $ssi_retry_count, %form);  
   
     # current document with answers.. no need to encap in minipage  
     #  since there's only one answer.  
   
     if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||  
        ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) {  
  $form{'problem_split'}=$parmhash{'problem_stream_switch'};  
  $form{'grade_target'}='answer';  
  $form{'answer_output_mode'}='tex';  
  $form{'rndseed'}=$rndseed;  
                 if ($helper->{'VARS'}->{'probstatus'} eq 'exam') {  
     $form{'problemtype'}='exam';  
  }  
  $resources_printed .= $currentURL.':';  
  my $answer=&ssi_with_retries($currentURL,$ssi_retry_count, %form);  
   
   
  if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {  
     $texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/;  
  } else {  
     $texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});  
     if ($helper->{'VARS'}->{'construction'} ne '1') {  
  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($urlp,$LaTeXwidth);  
     } else {  
  $texversion.='\vskip 0 mm \noindent\textbf{Prints from construction space - there is no title.}\vskip 0 mm ';  
  my $URLpath=$urlp;  
  $URLpath=~s/~([^\/]+)/public_html\/$1\/$1/;  
  $texversion.=&path_to_problem($URLpath,$LaTeXwidth);  
     }  
     $texversion.='\vskip 1 mm '.$answer.'\end{document}';  
  }  
   
   
   
   
       
     }  
     # Print annotations.  
   
   
     if ($helper->{'VARS'}->{'PRINT_ANNOTATIONS'} eq 'yes') {  
  my $annotation .= &annotate($currentURL);  
  $texversion =~ s/(\\keephidden{ENDOFPROBLEM})/$annotation$1/;  
     }  
       
     if ($helper->{'VARS'}->{'TABLE_INDEX'} eq 'yes') {  
  $texversion=&IndexCreation($texversion,$currentURL);  
     }  
     if ($helper->{'VARS'}->{'CONSTR_RESOURSE_URL'} eq 'yes') {  
  $texversion=~s/(\\addcontentsline\{toc\}\{subsection\}\{[^\}]*\})/$1 URL: \\verb|$currentURL| \\strut\\\\\\strut /;  
   
     }  
     $result .= $texversion;  
     if ($currentURL=~m/\.page\s*$/) {  
  ($result,$numberofcolumns) = &page_cleanup($result);  
     }  
  }  
     }  
   
     $result.= '\vskip 0.5mm\noindent\makebox[\textwidth/$number_of_columns][b]{\hrulefill} \end{document}';  
     return $result;  
 }  
   
   
 #  #
 # List of recently generated print files  # List of recently generated print files
Line 1717  sub output_data { Line 1549  sub output_data {
 ENDPART  ENDPART
   
   
       # Breadcrumbs
     my $start_page  = &Apache::loncommon::start_page('Preparing Printout',$js);      #FIXME: Choose better/different breadcrumbs?!? Links?
       my $brcrum = [{'href' => '',
                      'text' => 'Helper'}, #FIXME: Different origin possible than print out helper?
                     {'href' => '',
                      'text' => 'Preparing Printout'}];
   
       my $start_page  = &Apache::loncommon::start_page('Preparing Printout',
                                                        $js,
                                                        {'bread_crumbs' => $brcrum,});
     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");
Line 1740  ENDPART Line 1580  ENDPART
     my $number_of_columns = 1; #used only for pages to determine the width of the cell      my $number_of_columns = 1; #used only for pages to determine the width of the cell
     my @temporary_array=split /\|/,$format_from_helper;      my @temporary_array=split /\|/,$format_from_helper;
     my ($laystyle,$numberofcolumns,$papersize,$pdfFormFields)=@temporary_array;      my ($laystyle,$numberofcolumns,$papersize,$pdfFormFields)=@temporary_array;
       if ($laystyle eq 'L') {
     $laystyle = &map_laystyle($laystyle);   $laystyle='album';
       } else {
    $laystyle='book';
       }
     my ($textwidth,$textheight,$oddoffset,$evenoffset) = &page_format($papersize,$laystyle,$numberofcolumns);      my ($textwidth,$textheight,$oddoffset,$evenoffset) = &page_format($papersize,$laystyle,$numberofcolumns);
     my $assignment =  $env{'form.assignment'};      my $assignment =  $env{'form.assignment'};
     my $LaTeXwidth=&recalcto_mm($textwidth);       my $LaTeXwidth=&recalcto_mm($textwidth); 
Line 1890  ENDPART Line 1733  ENDPART
         } elsif ($cleanURL!~m|^/adm/|          } elsif ($cleanURL!~m|^/adm/|
  && $currentURL=~/\.(sequence|page)$/ && $helper->{'VARS'}->{'construction'} eq '1') {   && $currentURL=~/\.(sequence|page)$/ && $helper->{'VARS'}->{'construction'} eq '1') {
             #printing content of sequence from the construction space              #printing content of sequence from the construction space
   
     &Apache::lonnet::logthis("Printing sequence/page but construction space??");  
   
     $currentURL=~s|\/~([^\/]+)\/|\/home\/$1\/public_html\/|;      $currentURL=~s|\/~([^\/]+)\/|\/home\/$1\/public_html\/|;
 #    $result .= &print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});  #    $result .= &print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
     $result .= &print_construction_sequence($currentURL, $helper, %form,      $result .= &print_construction_sequence($currentURL, $helper, %form,
Line 1928  ENDPART Line 1768  ENDPART
  } elsif ($cleanURL =~ /\.pdf$/i) {   } elsif ($cleanURL =~ /\.pdf$/i) {
     $result .= &include_pdf($cleanURL);      $result .= &include_pdf($cleanURL);
     $result .= '\end{document}';      $result .= '\end{document}';
  } elsif ($cleanURL =~ /\.page$/i) { #  Print page in non construction space contexts.  
     &Apache::lonnet::logthis("Printing .page $cleanURL  at " . __LINE__);  
   
     # Determine the set of resources in the map of the page:  
   
     my $navmap         =  Apache::lonnavmaps::navmap->new();  
     my @page_resources =  $navmap->retrieveResources($cleanURL);  
     $result           .=  &print_page_in_course($helper, $rparmhash,  
  $cleanURL, \@page_resources);  
   
          
  } else {   } else {
     &Apache::lonnet::logthis("Unsupported type handler");  
     $result.=&unsupported($currentURL,$helper->{'VARS'}->{'LATEX_TYPE'},      $result.=&unsupported($currentURL,$helper->{'VARS'}->{'LATEX_TYPE'},
   $helper->{'VARS'}->{'symb'});    $helper->{'VARS'}->{'symb'});
  }   }
Line 2007  ENDPART Line 1835  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("At line 1834 printing $urlp");  
  $resources_printed .= $urlp.':';   $resources_printed .= $urlp.':';
  &Apache::lonxml::remember_problem_counter();   &Apache::lonxml::remember_problem_counter();
  $texversion.=&ssi_with_retries($urlp, $ssi_retry_count, %form);   $texversion.=&ssi_with_retries($urlp, $ssi_retry_count, %form);
  if ($urlp=~/\.page$/) {   if ($urlp=~/\.page$/) {
     &Apache::lonnet::logthis("Handling a .page at ". __LINE__);  
   
     ($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 2602  sub print_resources { Line 2427  sub print_resources {
  if ($res_url!~m|^ext/|   if ($res_url!~m|^ext/|
     && $res_url=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {      && $res_url=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {
     $printed .= $curresline.':';      $printed .= $curresline.':';
     &Apache::lonnet::logthis("At line 2427 printing $curresline");  
     &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);
Line 3369  CHOOSE_ANON2 Line 3194  CHOOSE_ANON2
     ))       )) 
  && $helper->{VARS}->{'assignment'} eq ""   && $helper->{VARS}->{'assignment'} eq ""
  ) {   ) {
   
  my $pretty_dir = &Apache::lonnet::hreflocation($subdir);   my $pretty_dir = &Apache::lonnet::hreflocation($subdir);
         push @{$printChoices}, [&mt('Selected [_1]Problems[_2] from current subdirectory [_3]','<b>','</b>','<b><i>'.$pretty_dir.'</i></b>','<b>','</b>'), 'problems_from_directory', 'CHOOSE_FROM_SUBDIR'];          push @{$printChoices}, [&mt('Selected [_1]Problems[_2] from current subdirectory [_3]','<b>','</b>','<b><i>'.$pretty_dir.'</i></b>','<b>','</b>'), 'problems_from_directory', 'CHOOSE_FROM_SUBDIR'];
         my $xmlfrag = <<CHOOSE_FROM_SUBDIR;          my $xmlfrag = <<CHOOSE_FROM_SUBDIR;
Line 3913  sub render { Line 3739  sub render {
     my ($laystyle, $cols, $papersize) = split(/\|/, $format);      my ($laystyle, $cols, $papersize) = split(/\|/, $format);
     ($papersize)                      = split(/ /, $papersize);      ($papersize)                      = split(/ /, $papersize);
   
     $laystyle = &Apache::lonprintout::map_laystyle($laystyle);  
   
       if ($laystyle eq 'L') {
    $laystyle = 'album';
       } else {
    $laystyle = 'book';
       }
   
   
     my %size;      my %size;
Line 3995  sub preprocess { Line 3825  sub preprocess {
  ($papersize)                      = split(/ /, $papersize);   ($papersize)                      = split(/ /, $papersize);
   
   
  $laystyle = &map_laystyle($laystyle);   if ($laystyle eq 'L') {
       $laystyle = 'album';
    } else {
       $laystyle = 'book';
    }
  #  Figure out some good defaults for the print out and set them:   #  Figure out some good defaults for the print out and set them:
   
  my %size;   my %size;

Removed from v.1.557.2.2  
changed lines
  Added in v.1.558


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