Diff for /loncom/interface/lonprintout.pm between versions 1.65 and 1.71

version 1.65, 2002/09/16 14:20:33 version 1.71, 2002/09/19 18:33:20
Line 48  use Apache::inputtags; Line 48  use Apache::inputtags;
 use Apache::grades;  use Apache::grades;
 use Apache::edit;  use Apache::edit;
 use Apache::File();  use Apache::File();
   use Apache::lonnavmaps;
 use POSIX qw(strftime);  use POSIX qw(strftime);
 use GDBM_File;  use GDBM_File;
   
Line 92  ENDMENUOUT1 Line 93  ENDMENUOUT1
     if ((not $ENV{'request.role'}=~m/^au\./) and (not $ENV{'request.role'}=~m/^ca\./)) {      if ((not $ENV{'request.role'}=~m/^au\./) and (not $ENV{'request.role'}=~m/^ca\./)) {
  $r->print(<<ENDMENUOUT2);   $r->print(<<ENDMENUOUT2);
 <input type="radio" name="choice" value="Standard LaTeX output for the primary sequence">  All problems from <b>$title_for_sequence</b><br />  <input type="radio" name="choice" value="Standard LaTeX output for the primary sequence">  All problems from <b>$title_for_sequence</b><br />
 <input type="radio" name="choice" value="Standard LaTeX output for whole primary sequence">  All problems plus any html/xml files from <b>$title_for_sequence</b><br />  <input type="radio" name="choice" value="Standard LaTeX output for whole primary sequence">  All problems plus any pages or html/xml files from <b>$title_for_sequence</b><br />
 ENDMENUOUT2  ENDMENUOUT2
     }      }
     if ($ENV{'request.role'}=~m/^cc\./ or $ENV{'request.role'}=~m/^in\./ or $ENV{'request.role'}=~m/^ta\./) {       if ($ENV{'request.role'}=~m/^cc\./ or $ENV{'request.role'}=~m/^in\./ or $ENV{'request.role'}=~m/^ta\./) { 
Line 344  ENDPART Line 345  ENDPART
     my $numberofcolumns = $ENV{'form.numberofcolumns'};                     my $numberofcolumns = $ENV{'form.numberofcolumns'};               
     my $laystyle = 'book';      my $laystyle = 'book';
     my $result = '';      my $result = '';
     my $number_of_columns = 1;      my $number_of_columns = 1; #used only for pages to determine the width of the cell
     my $selectionmade = '';      my $selectionmade = '';
     
     if ($choice eq 'Standard LaTeX output for current document') {      if ($choice eq 'Standard LaTeX output for current document') {
Line 358  ENDPART Line 359  ENDPART
       $moreenv{'request.filename'}=$ENV{'form.url'};        $moreenv{'request.filename'}=$ENV{'form.url'};
       &Apache::lonnet::appenv(%moreenv);        &Apache::lonnet::appenv(%moreenv);
       my $texversion=&Apache::lonnet::ssi($ENV{'form.url'});        my $texversion=&Apache::lonnet::ssi($ENV{'form.url'});
       &Apache::lonnet::logthis(" Got $result");  
       &Apache::lonnet::delenv('form.grade_target');        &Apache::lonnet::delenv('form.grade_target');
       $result .= $texversion;        $result .= $texversion;
       if ($ENV{'form.url'}=~m/\.page\s*$/) {        if ($ENV{'form.url'}=~m/\.page\s*$/) {
   ($result,$number_of_columns) = &page_cleanup($result);    ($result,$number_of_columns) = &page_cleanup($result);
       } else {  
   $result = &additional_cleanup($result);  
       }        }
     } elsif ($choice eq 'Standard LaTeX output for the primary sequence' or       } elsif ($choice eq 'Standard LaTeX output for the primary sequence' or 
              $choice eq 'Standard LaTeX output for whole primary sequence') {               $choice eq 'Standard LaTeX output for whole primary sequence') {
Line 372  ENDPART Line 370  ENDPART
         #-- where is the primary sequence containing file?          #-- where is the primary sequence containing file?
  my $symbolic = &Apache::lonnet::symbread($ENV{'form.url'});   my $symbolic = &Apache::lonnet::symbread($ENV{'form.url'});
  $symbolic =~ m/([^_]+)_/;   $symbolic =~ m/([^_]+)_/;
  my $primary_sequence = '/res/'.$1;   my $primary_sequence = '/res/'.$1;    
  my @master_seq = &coming_from_hash($primary_sequence);    my @master_seq = &coming_from_hash($primary_sequence);
         #-- produce an output string          #-- produce an output string
    my $flag_latex_header_remove = 'NO';
    my $flag_page_in_sequence = 'NO';
  for (my $i=0;$i<=$#master_seq;$i++) {   for (my $i=0;$i<=$#master_seq;$i++) {
             my $urlp = $master_seq[$i];              my ($urlp,$symb) = split /&&/, $master_seq[$i];
     if ($choice eq 'Standard LaTeX output for the primary sequence') {      if ($choice eq 'Standard LaTeX output for the primary sequence') {
  $selectionmade = 2;   $selectionmade = 2;
   if ($urlp =~ m/\.(problem|exam|quiz|assess|survey|form|library)/) {    if ($urlp =~ m/\.(problem|exam|quiz|assess|survey|form|library)/) {
     my %moreenv;      my %moreenv;
     $moreenv{'form.grade_target'}='tex';      $moreenv{'form.grade_target'}='tex';
     &Apache::lonnet::appenv(%moreenv);      &Apache::lonnet::appenv(%moreenv);
     my $texversion=&Apache::lonnet::ssi($urlp);      my $texversion=&Apache::lonnet::ssi($urlp,('symb'=>$symb));
     &Apache::lonnet::delenv('form.grade_target');      &Apache::lonnet::delenv('form.grade_target');
       if ($flag_latex_header_remove ne 'NO') {
    $texversion = &latex_header_footer_remove($texversion);
       } else {
    $texversion =~ s/\\end{document}//;
       }
     $result .= $texversion;              $result .= $texversion;        
       $flag_latex_header_remove = 'YES';
  }   }
     } elsif ($urlp =~ /\S+/) {      } elsif ($urlp =~ /\S+/) {
  $selectionmade = 3;   $selectionmade = 3;
  my %moreenv;   my %moreenv;
  $moreenv{'form.grade_target'}='tex';   $moreenv{'form.grade_target'}='tex';
  &Apache::lonnet::appenv(%moreenv);   &Apache::lonnet::appenv(%moreenv);
  my $texversion=&Apache::lonnet::ssi($urlp);   my $texversion=&Apache::lonnet::ssi($urlp,('symb'=>$symb));
  &Apache::lonnet::delenv('form.grade_target');   &Apache::lonnet::delenv('form.grade_target');
  $result .= $texversion;       if ($urlp =~ m/\.page/) {
       ($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}/;
       $flag_page_in_sequence = 'YES';
    } 
    if ($flag_latex_header_remove ne 'NO') {
       $texversion = &latex_header_footer_remove($texversion);
    } else {
       $texversion =~ s/\\end{document}//;
    }
    $result .= $texversion;         
    $flag_latex_header_remove = 'YES';   
     }      }
  }   }
  $result = &additional_cleanup($result);   if ($flag_page_in_sequence eq 'YES') {$result =~ s/\\usepackage{calc}/\\usepackage{calc}\\usepackage{longtable}/;}
    $result .= '\end{document}';
     }  elsif ($choice eq 'Standard LaTeX output for the top level sequence') {      }  elsif ($choice eq 'Standard LaTeX output for the top level sequence') {
         # where is the main sequence of the course?          # where is the main sequence of the course?
  $selectionmade = 4;   $selectionmade = 4;
Line 405  ENDPART Line 424  ENDPART
  my @file_seq = &coming_from_hash($main_seq);    my @file_seq = &coming_from_hash($main_seq); 
         #-- produce an output string          #-- produce an output string
  for (my $i=0;$i<=$#file_seq;$i++) {   for (my $i=0;$i<=$#file_seq;$i++) {
             my $urlp = $file_seq[$i];              my ($urlp,$symb) = split /&&/, $file_seq[$i];
     $urlp=~s/\/home\/httpd\/html//;          $urlp=~s/\/home\/httpd\/html//;    
             if ($urlp=~m/\.(problem|exam|quiz|assess|survey|form|library)/) {              if ($urlp=~m/\.(problem|exam|quiz|assess|survey|form|library)/) {
  my %moreenv;   my %moreenv;
Line 437  ENDPART Line 456  ENDPART
     my ($usersection,$username,$userdomain) = split /:/,$person;      my ($usersection,$username,$userdomain) = split /:/,$person;
     my $fullname = &Apache::grades::get_fullname($username,$userdomain);      my $fullname = &Apache::grades::get_fullname($username,$userdomain);
             #goes through all resources, checks if they are available for current student, and produces output               #goes through all resources, checks if they are available for current student, and produces output 
     foreach my $curres (@master_seq)  {      foreach my $curresline (@master_seq)  {
    my ($curres,$symb) = split /&&/, $curresline;
  $curres =~ s/^"//;   $curres =~ s/^"//;
  $curres =~ s/"$//;   $curres =~ s/"$//;
                 if ($curres=~/\w+/) {                  if ($curres=~/\w+/) {
     my $symb = &Apache::lonnet::symbread($curres);  
     my ($map,$id,$res_url) = split(/___/,$symb);      my ($map,$id,$res_url) = split(/___/,$symb);
     if (&Apache::lonnet::allowed('bre',$res_url)) {      if (&Apache::lonnet::allowed('bre',$res_url)) {
  my $rendered = &Apache::loncommon::get_student_view($symb,$username,$userdomain,   my $rendered = &Apache::loncommon::get_student_view($symb,$username,$userdomain,
Line 557  sub coming_from_hash { Line 576  sub coming_from_hash {
   
     my $mainsequence = shift;      my $mainsequence = shift;
     my @resourcelist = ();      my @resourcelist = ();
       my $mapid = $hash{'map_pc_'.$mainsequence};
     my $mapstart = $hash{'map_start_'.$mainsequence};      my $mapstart = $hash{'map_start_'.$mainsequence};
     my $mapfinish = $hash{'map_finish_'.$mainsequence};      my $mapfinish = $hash{'map_finish_'.$mainsequence};
       my $symb = &Apache::lonnet::symbread($hash{'src_'.$mapstart});
       my ($presymb) = split(/___/,$symb);
       $presymb = $presymb.'___';
     my $current_resource = $mapstart;      my $current_resource = $mapstart;
     while ($current_resource ne $mapfinish) {      while ($current_resource ne $mapfinish) {
  if (not $hash{'src_'.$current_resource}=~/\.sequence$/) {   if (not $hash{'src_'.$current_resource}=~/\.sequence$/) {
     push @resourcelist,$hash{'src_'.$current_resource};      my $rid = $hash{'ids_'.$hash{'src_'.$current_resource}};
               if ($rid=~/,/) {
    my @rid = split /,/, $rid;
    foreach my $rid_element (@rid) {
       if ($rid_element =~ m/^$mapid\.(\d*)/) {
    $rid = $1; 
    last;
       }
    }
       } else {
    $rid =~ m/^$mapid\.(\d*)/;
                   $rid = $1;  
       }
       $hash{'src_'.$current_resource} =~ m/\/res\/(.*)$/;
       $symb = $presymb.$rid.'___'.$1;
       push @resourcelist,$hash{'src_'.$current_resource}.'&&'.$symb;
  } else {   } else {
     push @resourcelist,&coming_from_hash($hash{'src_'.$current_resource});      push @resourcelist,&coming_from_hash($hash{'src_'.$current_resource});
  }   }
  $current_resource = $hash{'goesto_'.$hash{'to_'.$current_resource}};   $current_resource = $hash{'goesto_'.$hash{'to_'.$current_resource}};
     }      }
     #needs if final resource in the map (type=finish) contains something      #needs if final resource in the map (type="finish") contains something
     if (not $hash{'src_'.$current_resource}=~/\.sequence$/) {      if (not $hash{'src_'.$current_resource}=~/\.sequence$/) {
  push @resourcelist,$hash{'src_'.$current_resource};      my $rid = $hash{'ids_'.$hash{'src_'.$current_resource}};
               if ($rid=~/,/) {
    my @rid = split /,/, $rid;
    foreach my $rid_element (@rid) {
       if ($rid_element =~ m/^$mapid\.(\d*)/) {
    $rid = $1; 
    last;
       }
    }
       } else {
    $rid =~ m/^$mapid\.(\d*)/;
                   $rid = $1;  
       }
       $hash{'src_'.$current_resource} =~ m/\/res\/(.*)$/;
       $symb = $presymb.$rid.'___'.$1;
    push @resourcelist,$hash{'src_'.$current_resource}.'&&'.$symb;
     } else {      } else {
  push @resourcelist,&coming_from_hash($hash{'src_'.$current_resource});   push @resourcelist,&coming_from_hash($hash{'src_'.$current_resource});
     }      }
Line 578  sub coming_from_hash { Line 631  sub coming_from_hash {
 }  }
   
   
   sub latex_header_footer_remove {
       my $text = shift;
       $text =~ s/\\end{document}//;
       $text =~ s/\\documentclass([^&]*)\\begin{document}//;
       return $text;
   }
   
   
 sub character_chart {  sub character_chart {
     my $result = shift;      my $result = shift;
     $result =~ s/&#0?0?7;//g;      $result =~ s/&#0?0?7;//g;
Line 912  sub additional_cleanup { Line 973  sub additional_cleanup {
     while ($first_app != -1) {      while ($first_app != -1) {
  my $second_app = index($result,'begin{document}',$first_app);   my $second_app = index($result,'begin{document}',$first_app);
  $first_app = rindex($result,'\end{document}',$first_app);   $first_app = rindex($result,'\end{document}',$first_app);
    if ($first_app == -1) {last;}
  substr($result,$first_app,$second_app-$first_app+15) = '\vskip 3 mm';   substr($result,$first_app,$second_app-$first_app+15) = '\vskip 3 mm';
  $first_app = index($result,'\documentclass',$first_app+5);   $first_app = index($result,'\documentclass',$first_app+5);
     }      }
     return $result;      return $result;
 }  }
   
   
 sub page_cleanup {  sub page_cleanup {
     my $result = shift;      my $result = shift;
     
Line 954  sub details_for_menu { Line 1018  sub details_for_menu {
 sub handler {  sub handler {
   
     my $r = shift;      my $r = shift;
   
       my $loaderror=&Apache::lonnet::overloaderror($r);
       if ($loaderror) { return $loaderror; }
       $loaderror=
          &Apache::lonnet::overloaderror($r,
            $ENV{'course.'.$ENV{'request.course.id'}.'.home'});
       if ($loaderror) { return $loaderror; }
   
     $r->content_type('text/html');      $r->content_type('text/html');
     $r->send_http_header;      $r->send_http_header;
     $r->print(&Apache::loncommon::bodytag("Printing"));      $r->print(&Apache::loncommon::bodytag("Printing"));

Removed from v.1.65  
changed lines
  Added in v.1.71


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