Diff for /loncom/interface/lonprintout.pm between versions 1.93 and 1.115

version 1.93, 2002/11/20 17:26:52 version 1.115, 2003/02/14 02:21:35
Line 66  sub headerform { Line 66  sub headerform {
 <body bgcolor="FFFFFF">  <body bgcolor="FFFFFF">
 <form method="post" enctype="multipart/form-data" action="/adm/printout" name="printform">  <form method="post" enctype="multipart/form-data" action="/adm/printout" name="printform">
 ENDHEADER  ENDHEADER
     if ($ENV{'request.role'}=~m/^cc\./ or $ENV{'request.role'}=~m/^in\./ or $ENV{'request.role'}=~m/^ta\./) {   
     $r->print(<<ENDHEADER1);      if ($ENV{'form.postdata'}=~m|^/res/|) {
    $r->print(<<ENDHEADER1);
 <b>Path to current document: </b><tt>$ENV{'form.postdata'}</tt><p>  <b>Path to current document: </b><tt>$ENV{'form.postdata'}</tt><p>
 ENDHEADER1  ENDHEADER1
 }      }
 }  }
   
   
Line 81  sub menu_for_output { Line 82  sub menu_for_output {
     if ($title_for_single_resource ne '') {$title_for_single_resource = '"'.$title_for_single_resource.'"';}      if ($title_for_single_resource ne '') {$title_for_single_resource = '"'.$title_for_single_resource.'"';}
     if ($title_for_sequence ne '') {$title_for_sequence = '"'.$title_for_sequence.'"';}      if ($title_for_sequence ne '') {$title_for_sequence = '"'.$title_for_sequence.'"';}
     if ($title_for_main_map ne '') {$title_for_main_map = '"'.$title_for_main_map.'"';}      if ($title_for_main_map ne '') {$title_for_main_map = '"'.$title_for_main_map.'"';}
       $ENV{'form.postdata'} =~ s|http://[^/]+||;
     my $subdir_to_print = $ENV{'form.postdata'};      my $subdir_to_print = $ENV{'form.postdata'};
     $subdir_to_print =~ m/\/([^\/]+)$/;      $subdir_to_print =~ m/\/([^\/]+)$/;
     $subdir_to_print =~ s/$1//;      $subdir_to_print =~ s/\Q$1\E//;
     $r->print(<<ENDMENUOUT1);      $r->print(<<ENDMENUOUT1);
 <h1>What do you want to print? Make a choice.</h1><br />  <h1>What do you want to print? Make a choice.</h1><br />
 <input type="hidden" name="phase" value="two">  <input type="hidden" name="phase" value="two">
Line 142  ENDMENUOUT4 Line 144  ENDMENUOUT4
                                            </select>                                              </select> 
    </td>     </td>
  </tr>   </tr>
   
 </table>  </table>
 </br>   </br> 
 <input type="submit" value="Submit your choice">  <input type="submit" value="Submit your choice">
Line 151  ENDMENUOUT5 Line 154  ENDMENUOUT5
   
 sub sequence_content_menu {  sub sequence_content_menu {
     my ($key_to,$r) = @_;      my ($key_to,$r) = @_;
       my $primary_sequence;
     my $symbolic = &Apache::lonnet::symbread($ENV{'form.url'});      my $symbolic = &Apache::lonnet::symbread($ENV{'form.url'});
     my @sequence = split('___',$symbolic);      my @sequence = split('___',$symbolic);
     my $primary_sequence = '/res/'.$sequence[0];         if ($sequence[0]=~/^uploaded/) {$primary_sequence = '/'.$sequence[0];} 
     my @master_seq = &coming_from_hash($primary_sequence,$sequence[0]);        else {$primary_sequence = '/res/'.$sequence[0];} 
       my @master_seq = &coming_from_hash($primary_sequence);
       my @titles_master_seq = (); 
       for (my $i=0;$i<=$#master_seq;$i++) {
    my ($path,$title,$symb) = split /&&/,$master_seq[$i];
    $master_seq[$i] = $path.'&&'.$symb;
           push @titles_master_seq,  $title;
       }
     my @master_seq_view = @master_seq;      my @master_seq_view = @master_seq;
     for (my $i=0;$i<=$#master_seq_view;$i++) {      if ($ENV{'user.adv'}) {
  $master_seq_view[$i]=~/\/([^\/]+)$/;        for (my $i=0;$i<=$#master_seq_view;$i++) {
  $master_seq_view[$i]=$1;   $master_seq_view[$i]=~/___\d+___(.+)$/;
    $master_seq_view[$i]='/'.$1;
         }
       } else {
         for (my $i=0;$i<=$#master_seq_view;$i++) {
            $master_seq_view[$i]=' ';
         }
     }      }
     $r->print(<<ENDMENUOUT1);      $r->print(<<ENDMENUOUT1);
 <input type="hidden" name="url" value="$ENV{'form.url'}">  <input type="hidden" name="url" value="$ENV{'form.url'}">
Line 171  sub sequence_content_menu { Line 188  sub sequence_content_menu {
 <script>  <script>
     function checkall() {      function checkall() {
  for (i=0; i<document.forms.printform.elements.length; i++) {   for (i=0; i<document.forms.printform.elements.length; i++) {
             if               if (document.forms.printform.elements[i].name.indexOf('whatfile')==0) {
           (document.forms.printform.elements[i].name.indexOf('whatfile')==0) {  
       document.forms.printform.elements[i].checked=true;        document.forms.printform.elements[i].checked=true;
             }              }
         }          }
Line 186  sub sequence_content_menu { Line 202  sub sequence_content_menu {
         }          }
     }      }
 </script>  </script>
   <b>DDD=$#titles_master_seq</b> $titles_master_seq[0]<br />
 <input type=button onClick="checkall()" value="Check All">&nbsp;  <input type=button onClick="checkall()" value="Check All">&nbsp;
 <input type=button onClick="uncheckall()" value="Uncheck">  <input type=button onClick="uncheckall()" value="Uncheck">&nbsp;
   <input type="submit" value="Submit">
 <p>  <p>
 ENDMENUOUT1  ENDMENUOUT1
     my $inc=0;       my $inc=0; 
     for (my $i=0;$i<=$#master_seq_view;$i++) {      for (my $i=0;$i<=$#master_seq_view;$i++) {
       if ($key_to==1 && $master_seq_view[$i]=~/\.(problem|exam|quiz|assess|survey|form|library)$/) {        if ($key_to==1 && $master_seq[$i]=~/\.(problem|exam|quiz|assess|survey|form|library)$/) {
  $r->print('<br /><input type=checkbox name="whatfile'.$inc.'" value="'.$master_seq[$i].'"> '.   $r->print('<br /><input type=checkbox name="whatfile'.$inc.'" value="'.$master_seq[$i].'"> '."\n".'<b>'.
                   $master_seq_view[$i]);                    $titles_master_seq[$i].'</b>&nbsp;&nbsp;&nbsp;<small>'.$master_seq_view[$i].'</small>');
         $inc++;          $inc++;
     } elsif ($key_to==0 && $master_seq_view[$i]=~/\.(problem|exam|quiz|assess|survey|form|library|xml|htm|html|page)$/) {      } elsif ($key_to==0 && $master_seq[$i]=~/\.(problem|exam|quiz|assess|survey|form|library|xml|htm|html|page)$/) {
  $r->print('<br /><input type=checkbox name="whatfile'.$inc.'" value="'.$master_seq[$i].'"> '.   $r->print('<br /><input type=checkbox name="whatfile'.$inc.'" value="'.$master_seq[$i].'"> '."\n".'<b>'.
                   $master_seq_view[$i]);                    $titles_master_seq[$i].'</b>&nbsp;&nbsp;&nbsp;<small>'.$master_seq_view[$i].'</small>');
         $inc++;          $inc++;
       }        }
     }      }
     $r->print(<<ENDMENUOUT2);      $r->print(<<ENDMENUOUT2);
 <br />  <br /><br />
 <input type="hidden" name="numberoffiles" value="$inc">  <input type="hidden" name="numberoffiles" value="$inc">
 <input type="hidden" name="phase" value="three">  <input type="hidden" name="phase" value="three">
   <input type=button onClick="checkall()" value="Check All">&nbsp;
   <input type=button onClick="uncheckall()" value="Uncheck">&nbsp;
 <input type="submit" value="Submit">  <input type="submit" value="Submit">
 ENDMENUOUT2  ENDMENUOUT2
   
Line 217  sub problem_choice_menu { Line 237  sub problem_choice_menu {
     my $subdirtoprint = &Apache::lonnet::filelocation("",$ENV{'form.url'});      my $subdirtoprint = &Apache::lonnet::filelocation("",$ENV{'form.url'});
     $subdirtoprint =~ s/\/[^\/]+$//;      $subdirtoprint =~ s/\/[^\/]+$//;
     my @list_of_files = ();      my @list_of_files = ();
     if ($ENV{'request.role'}=~m/^au\./ or $ENV{'request.role'}=~m/^ca\./) {  
  $subdirtoprint =~ s/^[^~]*~(\w+)\//\/home\/$1\/public_html\//;  
     } else {  
  $subdirtoprint =~ s/.*(\/res\/)/$1/;  
     }  
     my @content_directory = ();      my @content_directory = ();
     if ($ENV{'request.role'}=~m/^au\./ or $ENV{'request.role'}=~m/^ca\./) {      if ($subdirtoprint =~ m|/home/([^/]+)/public_html|) {
  @content_directory = &Apache::lonnet::dirlist($subdirtoprint,$ENV{'user.domain'}, $ENV{'user.name'},'');   #localmachine CSTR space
    my $user=$1;
    my $domain=$Apache::lonnet::perlvar{'lonDefDomain'};
    @content_directory = &Apache::lonnet::dirlist($subdirtoprint,
         $domain, $user,'');
     } else {      } else {
  @content_directory = &Apache::lonnet::dirlist($subdirtoprint);          #local library server res space (allows to print only from the own library server)
    @content_directory = &Apache::lonnet::dirlist($subdirtoprint,$ENV{'user.domain'}, $ENV{'user.name'},'');
     }      }
     for (my $iy=0;$iy<=$#content_directory;$iy++) {      for (my $iy=0;$iy<=$#content_directory;$iy++) {
  my @tempo_array = split(/&/,$content_directory[$iy]);   my @tempo_array = split(/&/,$content_directory[$iy]);
Line 265  sub problem_choice_menu { Line 285  sub problem_choice_menu {
     }      }
 </script>  </script>
 <input type=button onClick="checkall()" value="Check All">&nbsp;  <input type=button onClick="checkall()" value="Check All">&nbsp;
 <input type=button onClick="uncheckall()" value="Uncheck">  <input type=button onClick="uncheckall()" value="Uncheck">&nbsp;
   <input type="submit" value="Submit">
 <p>  <p>
 ENDMENUOUT1  ENDMENUOUT1
     my $i=0;      my $i=0;
     foreach my $file (@list_of_files) {      foreach my $file (sort @list_of_files) {
  $r->print('<br /><input type=checkbox name="whattoprint'.$i.'" value="'.$file.'"> '.   $r->print('<br /><input type=checkbox name="whattoprint'.$i.'" value="'.$file.'"> '.
                   $file);                    $file);
  $i++;   $i++;
     }      }
     $r->print(<<ENDMENUOUT2);      $r->print(<<ENDMENUOUT2);
 <br />  <br /><br />
 <input type="hidden" name="papersize" value="$ENV{'form.papersize'}">  <input type="hidden" name="papersize" value="$ENV{'form.papersize'}">
 <input type="hidden" name="numberofproblems" value="$i">  <input type="hidden" name="numberofproblems" value="$i">
 <input type="hidden" name="phase" value="three">  <input type="hidden" name="phase" value="three">
   <input type=button onClick="checkall()" value="Check All">&nbsp;
   <input type=button onClick="uncheckall()" value="Uncheck">&nbsp;
 <input type="submit" value="Submit">  <input type="submit" value="Submit">
 ENDMENUOUT2  ENDMENUOUT2
 }  }
Line 330  ENDMENUOUT1 Line 353  ENDMENUOUT1
     }      }
 </script>  </script>
 <input type=button onClick="checkall()" value="Check All">&nbsp;  <input type=button onClick="checkall()" value="Check All">&nbsp;
 <input type=button onClick="checksec()" value="Check Section/Group">  <input type=button onClick="checksec()" value="Type Section/Group then click">
 <input type=text size=5 name=chksec>&nbsp;  <input type=text size=5 name=chksec>&nbsp;
 <input type=button onClick="uncheckall()" value="Uncheck">  <input type=button onClick="uncheckall()" value="Uncheck">
 <p>  <p>
Line 431  ENDPART Line 454  ENDPART
  if ($ENV{'form.papersize'} eq '') {$papersize = 'Letter [8 1/2x11 in]';}   if ($ENV{'form.papersize'} eq '') {$papersize = 'Letter [8 1/2x11 in]';}
  if ($ENV{'form.numberofcolumns'} eq '') {$numberofcolumns = 2;}   if ($ENV{'form.numberofcolumns'} eq '') {$numberofcolumns = 2;}
     }      }
     if (($choice eq 'Standard LaTeX output for current document') && ($ENV{'request.role'}=~m/^au\./ or $ENV{'request.role'}=~m/^ca\./)) {      if (($choice eq 'Standard LaTeX output for current document') &&
    ($ENV{'form.url'}=~m|^/~|)) {
  if ($ENV{'form.layout'} eq '') {$layout = 'CAPA';}   if ($ENV{'form.layout'} eq '') {$layout = 'CAPA';}
  if ($ENV{'form.papersize'} eq '') {$papersize = 'Letter [8 1/2x11 in]';}   if ($ENV{'form.papersize'} eq '') {$papersize = 'Letter [8 1/2x11 in]';}
  if ($ENV{'form.numberofcolumns'} eq '') {$numberofcolumns = 2;}   if ($ENV{'form.numberofcolumns'} eq '') {$numberofcolumns = 2;}
Line 440  ENDPART Line 464  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 $selectionmade = '';      my $selectionmade = '';
     my ($textwidth,$textheight,$oddoffset,$evenoffset) = &page_format($papersize,$layout,$numberofcolumns);      my ($textwidth,$textheight,$oddoffset,$evenoffset) = &page_format($papersize,$layout,$numberofcolumns);
     my $LaTeXwidth;      if ($numberofcolumns == 1) {
     $textwidth=$ENV{'form.width'};
    $textheight=$ENV{'form.height'};
       }
       my $LaTeXwidth; 
     if ($textwidth=~/(\d+\s*cm)/) {      if ($textwidth=~/(\d+\s*cm)/) {
  $LaTeXwidth = $1*10;   $LaTeXwidth = $1*10;
     } elsif ($textwidth=~/(\d+\s*mm)/) {      } elsif ($textwidth=~/(\d+\s*mm)/) {
  $LaTeXwidth = $1;   $LaTeXwidth = $1;
     }      }
     if ($choice eq 'Standard LaTeX output for current document') {      if ($choice eq 'Standard LaTeX output for current document') {
       #-- single document - problem, page, html, xml          #-- single document - problem, page, html, xml, ...  
       $selectionmade = 1;        $selectionmade = 1;
       if ($ENV{'form.url'}=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {        if ($ENV{'form.url'}=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {
         my %moreenv;          my %moreenv;
Line 465  ENDPART Line 492  ENDPART
         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{        } else {
         $result='\documentclass[letterpaper]{article}\usepackage{calc}\begin{document}You are trying to print eather sequence or something simular. Currently this option is not supported. Sorry for the inconvenience. Bye. Your current URL is '.$ENV{'form.url'}.' \end{document}'    $result='\documentclass[letterpaper]{article}\usepackage{calc}\begin{document}Printout of this type of document is currently not supported: ';
     if ($ENV{'form.url'}=~/\/(aboutme|syllabus|bulletinboard|smppg)$/) {
         $result.=$1;
     } else {
         $result.=$ENV{'form.url'};
     }
     $result.=' \end{document}'
       }        }
     } 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 482  ENDPART Line 515  ENDPART
  my $flag_latex_header_remove = 'NO';   my $flag_latex_header_remove = 'NO';
  my $flag_page_in_sequence = '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,$symb) = split /&&/, $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;
     } elsif ($choice eq 'Standard LaTeX output for whole primary sequence') {      } elsif ($choice eq 'Standard LaTeX output for whole primary sequence') {
Line 492  ENDPART Line 525  ENDPART
    $moreenv{'form.grade_target'}='tex';     $moreenv{'form.grade_target'}='tex';
    $moreenv{'form.textwidth'}=$LaTeXwidth;     $moreenv{'form.textwidth'}=$LaTeXwidth;
    &Apache::lonnet::appenv(%moreenv);     &Apache::lonnet::appenv(%moreenv);
    &Apache::lonnet::logthis("Trying to get $urlp with symb $symb");     #&Apache::lonnet::logthis("Trying to get $urlp with symb $symb");
    my $texversion=&Apache::lonnet::ssi($urlp,('symb'=>$symb));     my $texversion=&Apache::lonnet::ssi($urlp,('symb'=>$symb));
    &Apache::lonnet::delenv('form.grade_target','form.textwidth');     &Apache::lonnet::delenv('form.grade_target','form.textwidth');
    if ($urlp =~ m/\.page/) {     if ($urlp =~ m/\.page/) {
Line 515  ENDPART Line 548  ENDPART
     }  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;
  my $main_seq = '/res/'.$ENV{'request.course.uri'};   my $main_seq;
  my @file_seq = &coming_from_hash_whole($main_seq);   if ($ENV{'request.course.uri'}=~/\/?uploaded\//) {
       $main_seq = $ENV{'request.course.uri'};
    } else {
       $main_seq = '/res/'.$ENV{'request.course.uri'};
    }
    my @file_seq = &coming_from_hash($main_seq);
    for (my $i=0;$i<=$#file_seq;$i++) {
       my ($path,$title,$symb) = split /&&/,$file_seq[$i];
       $file_seq[$i] = $path.'&&'.$symb;
    }
  my $flag_latex_header_remove = 'NO';   my $flag_latex_header_remove = 'NO';
         #-- 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,$symb) = split /&&/, $file_seq[$i];     if (not $file_seq[$i]=~/^&&/) {
     $urlp=~s/\/home\/httpd\/html//;           my ($urlp,$symb) = split /&&/, $file_seq[$i];
             if ($urlp=~m/\.(problem|exam|quiz|assess|survey|form|library)/) {       $urlp=~s/\/home\/httpd\/html//;    
        if ($urlp=~m/\.(problem|exam|quiz|assess|survey|form|library)/) {
  my %moreenv;   my %moreenv;
  $moreenv{'form.grade_target'}='tex';   $moreenv{'form.grade_target'}='tex';
  $moreenv{'form.textwidth'}=$LaTeXwidth;   $moreenv{'form.textwidth'}=$LaTeXwidth;
Line 536  ENDPART Line 579  ENDPART
  }   }
  $result .= $texversion;     $result .= $texversion;  
  $flag_latex_header_remove = 'YES';   $flag_latex_header_remove = 'YES';
     }       }
      }
  }       }    
  $result .= '\end{document}';   $result .= '\end{document}';
     } elsif ($choice eq 'All class print') {       } elsif ($choice eq 'All class print') { 
Line 551  ENDPART Line 595  ENDPART
  #where is the primary sequence containing current resource (the same for all students)?   #where is the primary sequence containing current resource (the same for all students)?
  my $symbolic = &Apache::lonnet::symbread($ENV{'form.url'});   my $symbolic = &Apache::lonnet::symbread($ENV{'form.url'});
  my @sequence = split('___',$symbolic);   my @sequence = split('___',$symbolic);
  my $primary_sequence = '/res/'.$sequence[0];   my $primary_sequence;
  my @master_seq = &coming_from_hash($primary_sequence,$sequence[0]);    if ($sequence[0]=~/^uploaded/) {$primary_sequence = '/'.$sequence[0];} 
             else {$primary_sequence = '/res/'.$sequence[0];}  
    my @master_seq = &coming_from_hash($primary_sequence); 
    for (my $i=0;$i<=$#master_seq;$i++) {
       my ($path,$title,$symb) = split /&&/,$master_seq[$i];
       $master_seq[$i] = $path.'&&'.$symb;
    }
         #loop over students          #loop over students
  my $flag_latex_header_remove = 'NO';    my $flag_latex_header_remove = 'NO'; 
  my %moreenv;   my %moreenv;
Line 582  ENDPART Line 632  ENDPART
     }      }
     if ($current_output=~/\\documentclass/) {      if ($current_output=~/\\documentclass/) {
  my $courseidinfo = $ENV{'course.'.$ENV{'request.course.id'}.'.description'};   my $courseidinfo = $ENV{'course.'.$ENV{'request.course.id'}.'.description'};
  $current_output =~ s/\\begin{document}/\\setlength{\\topmargin}{1cm}\\setlength{\\headheight}{1cm}\\setlength{\\headsep}{0.5cm}\\pagestyle{myheadings}\\markboth{}{{$courseidinfo  - $assignment}}\\begin{document}\\noindent\\textit{\\textbf{$fullname}}\\vskip 3 mm /;   $current_output =~ s/\\begin{document}/\\setlength{\\topmargin}{1cm}\\usepackage{fancyhdr}\\pagestyle{fancy}\\rhead{}\\chead{}\\lhead{$courseidinfo \\hfill \\thepage \\\\ \\textit{$assignment}} \\begin{document}\\noindent\\textit{\\textbf{$fullname}}\\vskip 3 mm /;
     } else {      } else {
  my $blanspages = '';   my $blanspages = '';
  for (my $j=0;$j<$ENV{'form.addedpages'};$j++) {$blanspages.='\clearpage\strut\clearpage';}   for (my $j=0;$j<$ENV{'form.addedpages'};$j++) {$blanspages.='\clearpage\strut\clearpage';}
Line 610  ENDPART Line 660  ENDPART
  $moreenv{'form.grade_target'}='tex';   $moreenv{'form.grade_target'}='tex';
  $moreenv{'form.textwidth'}=$LaTeXwidth;   $moreenv{'form.textwidth'}=$LaTeXwidth;
  &Apache::lonnet::appenv(%moreenv);   &Apache::lonnet::appenv(%moreenv);
  if ($ENV{'request.role'}=~m/^au\./ or $ENV{'request.role'}=~m/^ca\./) {    if ($urlp =~ m|/home/([^/]+)/public_html|) {
     $urlp =~ s/\/home\/([^\/]*)\/public_html/\/~$1/;       $urlp =~ s|/home/([^/]*)/public_html|/~$1|;
    } else {
       $urlp =~ s|^/home/httpd/html||;
  }   }
  my $texversion=&Apache::lonnet::ssi($urlp);   my $texversion=&Apache::lonnet::ssi($urlp);
  &Apache::lonnet::delenv('form.grade_target','form.textwidth');   &Apache::lonnet::delenv('form.grade_target','form.textwidth');
Line 675  FINALEND Line 727  FINALEND
 }  }
   
   
 sub coming_from_hash_whole {  sub coming_from_hash {
   
     my $mainsequence = shift;      my $mainsequence = shift;
     my @resourcelist = ();      my @resourcelist = ();
Line 685  sub coming_from_hash_whole { Line 737  sub coming_from_hash_whole {
     my $current_resource = $mapstart;      my $current_resource = $mapstart;
     while ($current_resource ne $mapfinish) {      while ($current_resource ne $mapfinish) {
  if ($hash{'src_'.$current_resource}=~/\.sequence$/) {   if ($hash{'src_'.$current_resource}=~/\.sequence$/) {
     push @resourcelist,&coming_from_hash_whole($hash{'src_'.$current_resource});      push @resourcelist,&coming_from_hash($hash{'src_'.$current_resource});
  } else {   } else {
             $mainsequence =~ /\/res\/(.*)$/;      my $presymb; 
     my $presymb = $1;      if ($mainsequence =~ /\/res\/(.*)$/) {$presymb = $1;} 
     my $rid = $hash{'ids_'.$hash{'src_'.$current_resource}};                elsif ($mainsequence =~ /\/?(uploaded\/(.*))$/) {$presymb = $1;} 
             if ($rid=~/,/) {      my $rid = $current_resource;
       if ($rid=~/,/) {
  my @rid = split /,/, $rid;   my @rid = split /,/, $rid;
  foreach my $rid_element (@rid) {   foreach my $rid_element (@rid) {
     if ($rid_element =~ m/^$mapid\.(\d*)/) {      if ($rid_element =~ m/^$mapid\.(\d*)/) {
Line 699  sub coming_from_hash_whole { Line 752  sub coming_from_hash_whole {
     }      }
  }   }
     } else {      } else {
  $rid =~ m/^$mapid\.(\d*)/;          $rid =~ m/^$mapid\.(\d*)/;
                 $rid = $1;                    $rid = $1;  
     }      }
     $hash{'src_'.$current_resource} =~ m/\/res\/(.*)$/;      $hash{'src_'.$current_resource} =~ m/\/res\/(.*)$/;
     my $symb = $presymb.'___'.$rid.'___'.$1;          my $symb = $presymb.'___'.$rid.'___'.$1;    
     push @resourcelist,$hash{'src_'.$current_resource}.'&&'.$symb;      push @resourcelist,$hash{'src_'.$current_resource}.'&&'.$hash{'title_'.$current_resource}.'&&'.$symb;
  }   }
  $current_resource = $hash{'goesto_'.$hash{'to_'.$current_resource}};   $current_resource = $hash{'goesto_'.$hash{'to_'.$current_resource}};
     }      } 
     return @resourcelist;      #needs if final resource in the map (type="finish") contains something
 }   if ($hash{'src_'.$current_resource}=~/\.sequence$/) {
       push @resourcelist,&coming_from_hash($hash{'src_'.$current_resource});
    } else {
 sub coming_from_hash {      my $presymb; 
       if ($mainsequence =~ /\/res\/(.*)$/) {$presymb = $1;} 
     my ($mainsequence,$symb) = @_;                elsif ($mainsequence =~ /\/?(uploaded\/(.*))$/) {$presymb = $1;} 
     my @resourcelist = ();      my $rid = $current_resource;
     my $mapid = $hash{'map_pc_'.$mainsequence};      if ($rid=~/,/) {
     my $mapstart = $hash{'map_start_'.$mainsequence};  
     my $mapfinish = $hash{'map_finish_'.$mainsequence};  
     my ($presymb) = split(/___/,$symb);  
     $presymb = $presymb.'___';  
     my $current_resource = $mapstart;  
     while ($current_resource ne $mapfinish) {  
  if (not $hash{'src_'.$current_resource}=~/\.sequence$/) {  
     my $rid = $hash{'ids_'.$hash{'src_'.$current_resource}};  
             if ($rid=~/,/) {  
  my @rid = split /,/, $rid;   my @rid = split /,/, $rid;
  foreach my $rid_element (@rid) {   foreach my $rid_element (@rid) {
     if ($rid_element =~ m/^$mapid\.(\d*)/) {      if ($rid_element =~ m/^$mapid\.(\d*)/) {
Line 734  sub coming_from_hash { Line 778  sub coming_from_hash {
     }      }
  }   }
     } else {      } else {
  $rid =~ m/^$mapid\.(\d*)/;          $rid =~ m/^$mapid\.(\d*)/;
                 $rid = $1;                    $rid = $1;  
     }      }
     $hash{'src_'.$current_resource} =~ m/\/res\/(.*)$/;      $hash{'src_'.$current_resource} =~ m/\/res\/(.*)$/;
     $symb = $presymb.$rid.'___'.$1;      my $symb = $presymb.'___'.$rid.'___'.$1;    
     push @resourcelist,$hash{'src_'.$current_resource}.'&&'.$symb;      push @resourcelist,$hash{'src_'.$current_resource}.'&&'.$hash{'title_'.$current_resource}.'&&'.$symb;
  } else {  
     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  
     if (not $hash{'src_'.$current_resource}=~/\.sequence$/) {  
     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 {  
  push @resourcelist,&coming_from_hash($hash{'src_'.$current_resource});  
     }  
     return @resourcelist;      return @resourcelist;
 }  }
   
Line 1172  sub character_chart { Line 1192  sub character_chart {
   
   
 sub page_format_transformation {  sub page_format_transformation {
  my ($papersize,$layout,$numberofcolumns,$choice,$text,$assignment) = @_;       my ($papersize,$layout,$numberofcolumns,$choice,$text,$assignment) = @_; 
  my ($textwidth,$textheight,$oddoffset,$evenoffset) = &page_format($papersize,$layout,$numberofcolumns);      my ($textwidth,$textheight,$oddoffset,$evenoffset);
  my $courseidinfo = $ENV{'course.'.$ENV{'request.course.id'}.'.description'};   $assignment=~s/_/ /g;
  if ($layout eq 'CBI') {          if ($numberofcolumns != 1) {
     $text =~ s/\\begin{document}/\\setlength{\\oddsidemargin}{$oddoffset}\\setlength{\\evensidemargin}{$evenoffset}\\setlength{\\topmargin}{200pt}\\setlength{\\textwidth}{$textwidth}\\setlength{\\textheight}{$textheight}\\setlength{\\parindent}{20pt}\\setlength{\\marginparwidth}{90pt}\\setlength{\\textfloatsep}{8pt plus 2\.0pt minus 4\.0pt}\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm} \\begin{document}\\setcounter{page}{1}\\noindent\\parbox{\\minipagewidth}{\\noindent\\fbox{\\textbf{$ENV{'environment.firstname'} $ENV{'environment.lastname'}}} \\hfill  $courseidinfo} \\vskip 5 mm /;            ($textwidth,$textheight,$oddoffset,$evenoffset) = &page_format($papersize,$layout,$numberofcolumns);
  } elsif ($layout eq 'CAPA') {   } else {
      if ($choice ne 'All class print') {     ($textwidth,$textheight,$oddoffset,$evenoffset) = ($ENV{'form.width'},$ENV{'form.height'},$ENV{'form.leftmargin'},$ENV{'form.leftmargin'});
  $text =~ s/\\begin{document}/\\textheight $textheight\\oddsidemargin = $evenoffset\\evensidemargin = $evenoffset\\textwidth= $textwidth\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm}\\renewcommand{\\ref}{\\keephidden\}\\setlength{\\topmargin}{1cm}\\setlength{\\headheight}{1cm}\\setlength{\\headsep}{0.5cm}\\markboth{}{\\textbf{$ENV{'environment.firstname'} $ENV{'environment.lastname'}} $courseidinfo  - $assignment}\\pagestyle{myheadings}\\begin{document}\\voffset=-1\.8cm\\setcounter{page}{1}/;  
     } else {  
  $text =~ s/\\begin{document}/\\setlength{\\textheight}{$textheight}\\setlength{\\oddsidemargin}{$oddoffset}\\setlength{\\evensidemargin}{$evenoffset}\\setlength{\\textwidth}{$textwidth}\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm}\\renewcommand{\\ref}{\\keephidden\}\\begin{document}\\voffset=-1\.8cm\\setcounter{page}{1}  \\vskip 5 mm /;  
     }  
  }   }
  return $text;      my $firstname = &Apache::lonxml::latex_special_symbols(&Apache::lonnet::unescape($ENV{'environment.firstname'}),'','','header');
       my $lastname = &Apache::lonxml::latex_special_symbols(&Apache::lonnet::unescape($ENV{'environment.lastname'}),'','','header');
       my $courseidinfo = &Apache::lonxml::latex_special_symbols(&Apache::lonnet::unescape($ENV{'course.'.$ENV{'request.course.id'}.'.description'}),'','','header');
       if ($layout eq 'CBI') {
       $text =~ s/\\begin{document}/\\setlength{\\oddsidemargin}{$oddoffset}\\setlength{\\evensidemargin}{$evenoffset}\\setlength{\\topmargin}{200pt}\\setlength{\\textwidth}{$textwidth}\\setlength{\\textheight}{$textheight}\\setlength{\\parindent}{20pt}\\setlength{\\marginparwidth}{90pt}\\setlength{\\textfloatsep}{8pt plus 2\.0pt minus 4\.0pt}\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm} \\begin{document}\\setcounter{page}{1}\\noindent\\parbox{\\minipagewidth}{\\noindent\\fbox{\\textbf{$firstname $lastname}} \\hfill  $courseidinfo} \\vskip 5 mm /;
       } elsif ($layout eq 'CAPA') {
    if ($choice ne 'All class print') { 
    $text =~ s/\\begin{document}/\\textheight $textheight\\oddsidemargin = $evenoffset\\evensidemargin = $evenoffset\\textwidth= $textwidth\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm}\\renewcommand{\\ref}{\\keephidden\}\\usepackage{fancyhdr}\\pagestyle{fancy}\\rhead{}\\chead{}\\lhead{\\textbf{$firstname $lastname} - $courseidinfo \\hfill \\thepage \\\\ \\textit{$assignment}}\\begin{document}\\voffset=-0\.8 cm\\setcounter{page}{1}/;
    } else {
    $text =~ s/\\begin{document}/\\textheight $textheight\\oddsidemargin = $evenoffset\\evensidemargin = $evenoffset\\textwidth= $textwidth\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm}\\renewcommand{\\ref}{\\keephidden\}\\begin{document}\\voffset=-1\.8cm\\setcounter{page}{1}  \\vskip 5 mm /;
    }
       }
       return $text;
 }  }
   
   
Line 1207  sub details_for_menu { Line 1235  sub details_for_menu {
     my $name_of_resourse = $hash{'title_'.$hash{'ids_'.$ENV{'form.postdata'}}};      my $name_of_resourse = $hash{'title_'.$hash{'ids_'.$ENV{'form.postdata'}}};
     my $symbolic = &Apache::lonnet::symbread($ENV{'form.postdata'});      my $symbolic = &Apache::lonnet::symbread($ENV{'form.postdata'});
     my ($map,$id,$resource)=split(/___/,$symbolic);      my ($map,$id,$resource)=split(/___/,$symbolic);
     my $name_of_sequence = $hash{'title_'.$hash{'ids_/res/'.$map}};      my $name_of_sequence;
       if ($map=~/^uploaded/) {
    $name_of_sequence = $hash{'title_'.$hash{'ids_/'.$map}};
       } else {
    $name_of_sequence = $hash{'title_'.$hash{'ids_/res/'.$map}};
       }
     if ($name_of_sequence =~ /^\s*$/) {      if ($name_of_sequence =~ /^\s*$/) {
       $map =~ m|([^/]+)$|;       $map =~ m|([^/]+)$|;
       $name_of_sequence = $1;        $name_of_sequence = $1;
     }      }
     my $name_of_map = $hash{'title_'.$hash{'ids_/res/'.$ENV{'request.course.uri'}}};      my $name_of_map = $hash{'title_'.$hash{'ids_/res/'.$ENV{'request.course.uri'}}};
Line 1239  sub latex_corrections { Line 1272  sub latex_corrections {
  $first_comment = index($result,'<!--',$first_comment);   $first_comment = index($result,'<!--',$first_comment);
     }      }
     $result =~ s/^\s+$//gm; #remove empty lines      $result =~ s/^\s+$//gm; #remove empty lines
     $result =~ s/(\s)+/$1/g; #removes more than one empty space      $result =~ s/(\s)(\s+)/$1/g; #removes more than one empty space
     $result =~ s/\\\\\s*\\vskip/\\vskip/gm;      $result =~ s/\\\\\s*\\vskip/\\vskip/gm;
     $result =~ s/\\\\\s*\\noindent\s*(\\\\)+/\\\\\\noindent /g;      $result =~ s/\\\\\s*\\noindent\s*(\\\\)+/\\\\\\noindent /g;
     $result =~ s/{\\par }\s*\\\\/\\\\/gm;      $result =~ s/{\\par }\s*\\\\/\\\\/gm;
Line 1260  sub handler { Line 1293  sub handler {
   
     my $r = shift;      my $r = shift;
   
       # not sure where the form.* was getting processed.
       Apache::loncommon::get_unprocessed_cgi($ENV{QUERY_STRING});
   
       # A hook for me to work without disturbing Alex.
       if ($ENV{'form.jeremy'}) {
           printWizard($r);
           return OK;
       }
   
     my $loaderror=&Apache::lonnet::overloaderror($r);      my $loaderror=&Apache::lonnet::overloaderror($r);
     if ($loaderror) { return $loaderror; }      if ($loaderror) { return $loaderror; }
     $loaderror=      $loaderror=
Line 1313  sub handler { Line 1355  sub handler {
         
 }   } 
   
   use Apache::lonwizard;
   
   sub printWizard {
       my $r = shift;
   
       if ($ENV{'request.course.id'}) {
    my $fn=$ENV{'request.course.fn'};
    tie(%hash,'GDBM_File',"$fn.db",&GDBM_READER(),0640);
       }
   
       if ($r->header_only) {
           if ($ENV{'browser.mathml'}) {
               $r->content_type('text/xml');
           } else {
               $r->content_type('text/html');
           }
           $r->send_http_header;
           return OK;
       }
   
       # Send header, nocache
       if ($ENV{'browser.mathml'}) {
           $r->content_type('text/xml');
       } else {
           $r->content_type('text/html');
       }
       &Apache::loncommon::no_cache($r);
       $r->send_http_header;
       $r->rflush();
   
       my ($resourceTitle,$sequenceTitle,$mapTitle) = &details_for_menu;
   
       my $wizard = Apache::lonwizard->new("Printing Wizard");
       # PRINT_TYPE: What the user wants to print (current docs,
       #  whole sequence, etc.
       $wizard->declareVars(['PRINT_TYPE']);
   
       my $subdir = $ENV{'form.postdata'};
       $subdir =~ s|http://[^/]+||;
       $subdir =~ m/\/([^\/]+)$/;
       $subdir =~ s/\Q$1\E//;
   
       # This code also shows up above... which is prefered? Is one
       # right for this context?
       #my $subdir = &Apache::lonnet::filelocation("",$ENV{'form.url'});
       #$subdir =~ s/\/[^\/]+$//;
       
       Apache::lonwizard::switch_state->new($wizard, "START", "Selecting Resources to Print", "PRINT_TYPE", [
              ['current_document', "<b>$resourceTitle</b> (exactly what was on the screen)", 'CHOOSE_FORMAT'],
              ['map_problems', "Problems from <b>$sequenceTitle</b>", 'CHOOSE_FORMAT'],
              ['map_problems_pages', "All of <b>$sequenceTitle</b>", 'CHOOSE_FORMAT'],
              ['problems_for_students', "Problems from <b>$sequenceTitle</b> for selected students", 'CHOOSE_FORMAT'],
              ['problems_from_directory', "Problems from <b>$subdir</b>", 'CHOOSE_FORMAT'] ],
              "What do you want to print?");
       
       $r->print($wizard->display());
   
       untie %hash;
   
       return OK;
   
   }
   
   
 1;  1;
 __END__  __END__

Removed from v.1.93  
changed lines
  Added in v.1.115


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.