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

version 1.93, 2002/11/20 17:26:52 version 1.111, 2003/02/04 22:22:07
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 151  ENDMENUOUT5 Line 153  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];} 
         else {$primary_sequence = '/res/'.$sequence[0];} 
     my @master_seq = &coming_from_hash($primary_sequence,$sequence[0]);      my @master_seq = &coming_from_hash($primary_sequence,$sequence[0]);
       my @titles_master_seq = &titles_coming_from_hash($primary_sequence,$sequence[0]);
       foreach my $entity (@titles_master_seq) {$entity=~/^(.*)&&/; $entity=$1}
     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 187  sub sequence_content_menu { Line 199  sub sequence_content_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 $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 232  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 280  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 348  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 449  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 459  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 487  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 510  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 520  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 543  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;
    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_whole($main_seq);   my @file_seq = &coming_from_hash_whole($main_seq);
  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 570  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 582  ENDPART Line 617  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 645  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 687  sub coming_from_hash_whole { Line 724  sub coming_from_hash_whole {
  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_whole($hash{'src_'.$current_resource});
  } else {   } else {
             $mainsequence =~ /\/res\/(.*)$/;      my $presymb; 
     my $presymb = $1;      if ($mainsequence =~ /\/res\/(.*)$/) {$presymb = $1;} 
                 elsif ($mainsequence =~ /\/?(uploaded\/(.*))$/) {$presymb = $1;} 
     my $rid = $hash{'ids_'.$hash{'src_'.$current_resource}};      my $rid = $hash{'ids_'.$hash{'src_'.$current_resource}};
             if ($rid=~/,/) {      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 737  sub coming_from_hash_whole {
     }      }
  }   }
     } else {      } else {
  $rid =~ m/^$mapid\.(\d*)/;          $rid =~ m/^$mapid\.(\d*)/;
                   $rid = $1;  
       }
       $hash{'src_'.$current_resource} =~ m/\/res\/(.*)$/;
       my $symb = $presymb.'___'.$rid.'___'.$1;    
       push @resourcelist,$hash{'src_'.$current_resource}.'&&'.$symb;
    }
    $current_resource = $hash{'goesto_'.$hash{'to_'.$current_resource}};
       } 
       #needs if final resource in the map (type="finish") contains something
    if ($hash{'src_'.$current_resource}=~/\.sequence$/) {
       push @resourcelist,&coming_from_hash_whole($hash{'src_'.$current_resource});
    } else {
       my $presymb; 
       if ($mainsequence =~ /\/res\/(.*)$/) {$presymb = $1;} 
                 elsif ($mainsequence =~ /\/?(uploaded\/(.*))$/) {$presymb = $1;} 
       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;                    $rid = $1;  
     }      }
     $hash{'src_'.$current_resource} =~ m/\/res\/(.*)$/;      $hash{'src_'.$current_resource} =~ m/\/res\/(.*)$/;
Line 707  sub coming_from_hash_whole { Line 771  sub coming_from_hash_whole {
     push @resourcelist,$hash{'src_'.$current_resource}.'&&'.$symb;      push @resourcelist,$hash{'src_'.$current_resource}.'&&'.$symb;
  }   }
  $current_resource = $hash{'goesto_'.$hash{'to_'.$current_resource}};   $current_resource = $hash{'goesto_'.$hash{'to_'.$current_resource}};
     }  
     return @resourcelist;      return @resourcelist;
 }  }
   
Line 719  sub coming_from_hash { Line 782  sub coming_from_hash {
     my $mapid = $hash{'map_pc_'.$mainsequence};      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 ($presymb) = split(/___/,$symb);      my ($presymb);
       if ($symb) {
    ($presymb)=split(/___/,$symb);
       } else {
    $presymb=$mainsequence;
    $presymb=~s|^/res/||;
       }
     $presymb = $presymb.'___';      $presymb = $presymb.'___';
     my $current_resource = $mapstart;      my $current_resource = $mapstart;
     while ($current_resource ne $mapfinish) {      while ($current_resource ne $mapfinish) {
Line 770  sub coming_from_hash { Line 839  sub coming_from_hash {
 }  }
   
   
   sub titles_coming_from_hash {
   
       my ($mainsequence,$symb) = @_;
       my @resourcelist = ();
       my $mapid = $hash{'map_pc_'.$mainsequence};
       my $mapstart = $hash{'map_start_'.$mainsequence};
       my $mapfinish = $hash{'map_finish_'.$mainsequence};
       my ($presymb);
       if ($symb) {
    ($presymb)=split(/___/,$symb);
       } else {
    $presymb=$mainsequence;
    $presymb=~s|^/res/||;
       }
       $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;
    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{'title_'.$current_resource}.'&&'.$symb;
    } else {
       push @resourcelist,&titles_coming_from_hash($hash{'src_'.$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{'title_'.$current_resource}.'&&'.$symb;
       } else {
    push @resourcelist,&titles_coming_from_hash($hash{'src_'.$current_resource});
       }
       return @resourcelist;
   }
   
 sub latex_header_footer_remove {  sub latex_header_footer_remove {
     my $text = shift;      my $text = shift;
     $text =~ s/\\end{document}//;      $text =~ s/\\end{document}//;
Line 1172  sub character_chart { Line 1304  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 {      my $firstname = &special_character_corrections(&Apache::lonnet::unescape($ENV{'environment.firstname'}));
  $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 /;      my $lastname = &special_character_corrections(&Apache::lonnet::unescape($ENV{'environment.lastname'}));
     }      my $courseidinfo = &special_character_corrections(&Apache::lonnet::unescape($ENV{'course.'.$ENV{'request.course.id'}.'.description'}));
       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;      }
       return $text;
 }  }
   
   
Line 1207  sub details_for_menu { Line 1347  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 1222  sub details_for_menu { Line 1367  sub details_for_menu {
 }  }
   
   
   sub special_character_corrections {
       my $argument = shift;
       $argument =~ s/_/ /g;
       $argument =~ s/\^/ /g;
       $argument =~ s/&/\\&/g;
       return $argument;
   }
   
   
 sub latex_corrections {  sub latex_corrections {
   
     my ($number_of_columns,$result) = @_;      my ($number_of_columns,$result) = @_;
Line 1239  sub latex_corrections { Line 1393  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;

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


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