Diff for /loncom/interface/lonprintout.pm between versions 1.147 and 1.155

version 1.147, 2003/05/05 15:09:02 version 1.155, 2003/05/06 20:50:04
Line 1349  ENDPART Line 1349  ENDPART
  $laystyle='book';   $laystyle='book';
     }      }
     my ($textwidth,$textheight,$oddoffset,$evenoffset) = &page_format_new($papersize,$laystyle,$numberofcolumns);      my ($textwidth,$textheight,$oddoffset,$evenoffset) = &page_format_new($papersize,$laystyle,$numberofcolumns);
   
   
   
      
 #    my $choice = $ENV{'form.choice'};  
 #    my $layout = $ENV{'form.layout'};  
 #    my $numberofcolumns = $ENV{'form.numberofcolumns'};    
 #    my $papersize = $ENV{'form.papersize'};            
 #    my $laystyle = 'book';  
     my $assignment =  $ENV{'form.assignment'};      my $assignment =  $ENV{'form.assignment'};
 #    if ($choice eq 'Subdirectory print') {  
 # if ($ENV{'form.layout'} eq '') {$layout = 'CAPA';}  
 # if ($ENV{'form.papersize'} eq '') {$papersize = 'Letter [8 1/2x11 in]';}  
 # if ($ENV{'form.numberofcolumns'} eq '') {$numberofcolumns = 2;}  
 #    }  
 #    if (($choice eq 'Standard LaTeX output for current document') &&  
 # ($ENV{'form.url'}=~m|^/~|)) {  
 # if ($ENV{'form.layout'} eq '') {$layout = 'CAPA';}  
 # if ($ENV{'form.papersize'} eq '') {$papersize = 'Letter [8 1/2x11 in]';}  
 # if ($ENV{'form.numberofcolumns'} eq '') {$numberofcolumns = 2;}  
 #    }  
   
       
 #    my ($textwidth,$textheight,$oddoffset,$evenoffset) = &page_format($papersize,$layout,$numberofcolumns);  
 #    if ($numberofcolumns == 1) {  
 # $textwidth=$ENV{'form.width'};  
 # $textheight=$ENV{'form.height'};  
 #    }  
     my $LaTeXwidth;       my $LaTeXwidth; 
     if ($textwidth=~/(\d+)\s*cm/) {      if ($textwidth=~/(\d+)\s*cm/) {
  $LaTeXwidth = $1*10;   $LaTeXwidth = $1*10;
Line 1386  ENDPART Line 1359  ENDPART
  $LaTeXwidth = $1*25.4;   $LaTeXwidth = $1*25.4;
     }      }
     $LaTeXwidth.=' mm';      $LaTeXwidth.=' mm';
       
   
     if ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'current_document') {      if ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'current_document') {
       #-- single document - problem, page, html, xml, ...        #-- single document - problem, page, html, xml, ...
  my $currentURL;   my $currentURL;
  if (defined $helper->{'VARS'}->{'url'}) {   if (not defined $helper->{'VARS'}->{'construction'}) {
     $currentURL=$helper->{'VARS'}->{'url'};  
  } else {  
     $currentURL=$helper->{'VARS'}->{'postdata'};      $currentURL=$helper->{'VARS'}->{'postdata'};
    } else {
       $currentURL=$helper->{'VARS'}->{'construction'};
  }   }
  $selectionmade = 1;   $selectionmade = 1;
  if ($currentURL=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {   if ($currentURL=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {
Line 1430  ENDPART Line 1402  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';
  my @master_seq=split /\|\|\|/, $helper->{'VARS'}->{'RESOURCES'};   my @master_seq=split /\|\|\|/, $helper->{'VARS'}->{'RESOURCES'};
   
 # foreach  my $key (@master_seq) {  
 #    $r->print(' '.$key.'<br />');  
 # }  
 # return OK;  
   
  for (my $i=0;$i<=$#master_seq;$i++) {   for (my $i=0;$i<=$#master_seq;$i++) {
     $master_seq[$i]=~/___\d+___(.*)$/;      $master_seq[$i]=~/___\d+___(.*)$/;
     my $urlp='/res/'.$1;      my $urlp='/res/'.$1;
Line 1470  ENDPART Line 1436  ENDPART
  &Apache::lonnet::delenv('form.counter');   &Apache::lonnet::delenv('form.counter');
  if ($flag_page_in_sequence eq 'YES') {$result =~ s/\\usepackage{calc}/\\usepackage{calc}\\usepackage{longtable}/;}   if ($flag_page_in_sequence eq 'YES') {$result =~ s/\\usepackage{calc}/\\usepackage{calc}\\usepackage{longtable}/;}
  $result .= '\end{document}';   $result .= '\end{document}';
 #    }  elsif ($choice eq 'Standard LaTeX output for the top level sequence') {       } elsif ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'problems_for_students') { 
 #        # where is the main sequence of the course?       #-- prints assignments for whole class or for selected students  
 # $selectionmade = 4;   $selectionmade=5;
 # my $main_seq=&Apache::lonnet::clutter($ENV{'request.course.uri'});   my @students=split /\|\|\|/, $helper->{'VARS'}->{'STUDENTS'};
 # my @file_seq = &coming_from_hash($main_seq);   my @master_seq=split /\|\|\|/, $helper->{'VARS'}->{'RESOURCES'};
 # for (my $i=0;$i<=$#file_seq;$i++) {   #loop over students
 #    my ($path,$title,$symb) = split /&&/,$file_seq[$i];   my $flag_latex_header_remove = 'NO'; 
 #    $file_seq[$i] = $path.'&&'.$symb;   my %moreenv;
 # }   $moreenv{'form.textwidth'}=$LaTeXwidth;
 # my $flag_latex_header_remove = 'NO';   &Apache::lonnet::appenv(%moreenv);
 #        #-- produce an output string   my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r,'Print Status','Class Print Status',$#students+1);
 # for (my $i=0;$i<=$#file_seq;$i++) {   foreach my $person (@students) {
 #   if (not $file_seq[$i]=~/^&&/) {      my $current_output = ''; 
 #     my ($urlp,$symb) = split /&&/, $file_seq[$i];  
 #     $urlp=~s/\/home\/httpd\/html//;      
 #     if ($urlp=~m/\.(problem|exam|quiz|assess|survey|form|library)/) {  
 # my %moreenv;  
 # $moreenv{'form.grade_target'}='tex';  
 # $moreenv{'form.textwidth'}=$LaTeXwidth;  
 # &Apache::lonnet::appenv(%moreenv);  
 # my $texversion=&Apache::lonnet::ssi($urlp,('symb'=>$symb));  
 # &Apache::lonnet::delenv('form.grade_target','form.textwidth');      
 # 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 .= '\end{document}';  
 #    } elsif ($choice eq 'All class print') {   
 #    #-- prints assignments for whole class or for selected students    
 # $selectionmade = 5;  
 #        my @students = ();  
 # for (my $i=0; $i<$ENV{'form.numberofstudents'};$i++) {  
 #    if ($ENV{'form.whomtoprint'.$i}=~/:/) {  
 # push @students,$ENV{'form.whomtoprint'.$i};  
 #    }  
 # }  
 # #where is the primary sequence containing current resource (the same for all students)?  
 # my $symbolic = &Apache::lonnet::symbread($ENV{'form.url'});  
 # my @sequence = split('___',$symbolic);  
 # my $primary_sequence;  
 #  
 # $primary_sequence=&Apache::lonnet::clutter($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  
 # my $flag_latex_header_remove = 'NO';   
 # my %moreenv;  
 # $moreenv{'form.textwidth'}=$LaTeXwidth;  
 # &Apache::lonnet::appenv(%moreenv);  
 # my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r,'Print Status','Class Print Status',$#students+1);  
 # foreach my $person (@students) {  
 #    my $current_output = '';   
 #    my ($usersection,$username,$userdomain) = split /:/,$person;  #    my ($usersection,$username,$userdomain) = split /:/,$person;
 #    my $fullname = &get_name($username,$userdomain);      my ($username,$userdomain) = split /:/,$person;
 #            #goes through all resources, checks if they are available for current student, and produces output         my $fullname = &get_name($username,$userdomain);
 #    foreach my $curresline (@master_seq)  {              #goes through all resources, checks if they are available for current student, and produces output   
 # my ($curres,$symb) = split /&&/, $curresline;      foreach my $curresline (@master_seq)  {
 #                if ($curres=~ m/\.(problem|exam|quiz|assess|survey|form|library)/) {   if ($curresline=~ m/\.(problem|exam|quiz|assess|survey|form|library)$/) {
 #    my ($map,$id,$res_url) = split(/___/,$symb);      my ($map,$id,$res_url) = split(/___/,$curresline);
 #    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($curresline,$username,$userdomain,
 #                                                                        $ENV{'request.course.id'},'tex');                                                                          $ENV{'request.course.id'},'tex');
 # if ($flag_latex_header_remove eq 'YES') {   if ($flag_latex_header_remove eq 'YES') {
 #    $rendered = &latex_header_footer_remove($rendered);      $rendered = &latex_header_footer_remove($rendered);
 # } else {   } else {
 #    $rendered =~ s/\\end{document}//;      $rendered =~ s/\\end{document}//;
 # }   }
 # $current_output .= $rendered;   $current_output .= $rendered;
 #    }      }
 #    $flag_latex_header_remove = 'YES';      $flag_latex_header_remove = 'YES';
 # }   }
 #    }      }
 #    my $courseidinfo = $ENV{'course.'.$ENV{'request.course.id'}.'.description'};      my $courseidinfo = $ENV{'course.'.$ENV{'request.course.id'}.'.description'};
 #    if ($current_output=~/\\documentclass/) {      if ($current_output=~/\\documentclass/) {
 # $current_output =~ s/\\begin{document}/\\setlength{\\topmargin}{1cm}\\usepackage{fancyhdr}\\pagestyle{fancy}\\rhead{}\\chead{} \\begin{document}\\noindent\\lhead{\\textit{\\textbf{$fullname}} - $courseidinfo \\hfill \\thepage \\\\ \\textit{$assignment}}\\vskip 3 mm /;   $current_output =~ s/\\begin{document}/\\setlength{\\topmargin}{1cm}\\usepackage{fancyhdr}\\pagestyle{fancy}\\rhead{}\\chead{} \\begin{document}\\noindent\\lhead{\\textit{\\textbf{$fullname}} - $courseidinfo \\hfill \\thepage \\\\ \\textit{$assignment}}\\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<$helper->{'VARS'}->{'EMPTY_PAGES'};$j++) {$blanspages.='\clearpage\strut\clearpage';}
 # $current_output = '\strut\\newline\\noindent\\makebox[\\textwidth/$number_of_columns][b]{\\hrulefill}\\newline\\noindent{\\tiny Printed from LON-CAPA\\copyright MSU{\\hfill} Licensed under GNU General Public License }\\newpage \\vskip 3mm'.$blanspages.'\setcounter{page}{1}\noindent\parbox{\minipagewidth}{\noindent\\lhead{\\textit{\\textbf{'.$fullname.'}} - '.$courseidinfo.' \\hfill \\thepage \\\\ \\textit{'.$assignment.'}}\hskip 1.4in } \vskip 5 mm '.$current_output;   $current_output = '\strut\\newline\\noindent\\makebox[\\textwidth/$number_of_columns][b]{\\hrulefill}\\newline\\noindent{\\tiny Printed from LON-CAPA\\copyright MSU{\\hfill} Licensed under GNU General Public License }\\newpage \\vskip 3mm'.$blanspages.'\setcounter{page}{1}\noindent\parbox{\minipagewidth}{\noindent\\lhead{\\textit{\\textbf{'.$fullname.'}} - '.$courseidinfo.' \\hfill \\thepage \\\\ \\textit{'.$assignment.'}}\hskip 1.4in } \vskip 5 mm '.$current_output;
 #    }      }
 #    $result .= $current_output;      $result .= $current_output;
 #    &Apache::lonnet::delenv('form.counter');          &Apache::lonnet::delenv('form.counter');    
 #    &Apache::lonxml::init_counter();       &Apache::lonxml::init_counter(); 
 #    &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,      &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,
 #    'last student '.$fullname);      'last student '.$fullname);
 # }   }
 # &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);   &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
 # $result .= '\end{document}';   $result .= '\end{document}';
 # &Apache::lonnet::delenv('form.textwidth');   &Apache::lonnet::delenv('form.textwidth');
 #    } elsif ($choice eq 'Subdirectory print') {            } elsif ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'problems_from_directory') {      
 #    #prints selected problems from the subdirectory       #prints selected problems from the subdirectory 
 # $selectionmade = 6;   $selectionmade = 6;
 #        my @list_of_files = ();          my @list_of_files=split /\|\|\|/, $helper->{'VARS'}->{'FILES'};
 # for (my $i=0; $i<$ENV{'form.numberofproblems'};$i++) {   @list_of_files=sort @list_of_files;
 #    if ($ENV{'form.whattoprint'.$i}=~/^\//) {   my $flag_latex_header_remove = 'NO';  
 # push @list_of_files,$ENV{'form.whattoprint'.$i};   for (my $i=0;$i<=$#list_of_files;$i++) {
 #    }      my $urlp = $list_of_files[$i];
 # }      if ($urlp=~/\//) {
 # my $flag_latex_header_remove = 'NO';     my %moreenv;
 # for (my $i=0;$i<=$#list_of_files;$i++) {   $moreenv{'form.grade_target'}='tex';
 #    my $urlp = $list_of_files[$i];   $moreenv{'form.textwidth'}=$LaTeXwidth;
 #    if ($urlp=~/\//) {   &Apache::lonnet::appenv(%moreenv);
 # my %moreenv;   if ($urlp =~ m|/home/([^/]+)/public_html|) {
 # $moreenv{'form.grade_target'}='tex';      $urlp =~ s|/home/([^/]*)/public_html|/~$1|;
 # $moreenv{'form.textwidth'}=$LaTeXwidth;   } else {
 # &Apache::lonnet::appenv(%moreenv);      $urlp =~ s|^/home/httpd/html||;
 # if ($urlp =~ m|/home/([^/]+)/public_html|) {   }
 #    $urlp =~ s|/home/([^/]*)/public_html|/~$1|;   my $texversion=&Apache::lonnet::ssi($urlp);
 # } else {   &Apache::lonnet::delenv('form.grade_target','form.textwidth');
 #    $urlp =~ s|^/home/httpd/html||;                  #this chunck is responsible for printing the path to problem
 # }   my $newurlp = '';
 # my $texversion=&Apache::lonnet::ssi($urlp);   my $HowMany = length($urlp)*2;
 # &Apache::lonnet::delenv('form.grade_target','form.textwidth');   if ($HowMany > $LaTeXwidth) {
 #                #this chunck is responsible for printing the path to problem      my @temporrary = split '/',$urlp;
 # my $newurlp = '';      my $HowManyNew = 0;
 # my $HowMany = length($urlp)*2;      for (my $ii=0;$ii<=$#temporrary;$ii++) {
 # if ($HowMany > $LaTeXwidth) {   if ($temporrary[$ii] ne '') {
 #    my @temporrary = split '/',$urlp;      $HowManyNew += length($temporrary[$ii])*2;
 #    my $HowManyNew = 0;      if ($HowManyNew < $LaTeXwidth ) {
 #    for (my $ii=0;$ii<=$#temporrary;$ii++) {   $newurlp .=  '/'.$temporrary[$ii];
 # if ($temporrary[$ii] ne '') {      } else {
 #    $HowManyNew += length($temporrary[$ii])*2;   $HowManyNew = 0;
 #    if ($HowManyNew < $LaTeXwidth ) {   $newurlp .=  '|\vskip -1 mm \noindent \verb|';
 # $newurlp .=  '/'.$temporrary[$ii];   $ii--;
 #    } else {      }
 # $HowManyNew = 0;   }
 # $newurlp .=  '|\vskip -1 mm \noindent \verb|';      }
 # $ii--;   }
 #    }   $texversion =~ s/(\\begin{minipage}{\\textwidth})/$1 {\\small\\noindent\\verb|$newurlp\|\\vskip 0 mm}/;
 # }   if ($flag_latex_header_remove ne 'NO') {
 #    }      $texversion = &latex_header_footer_remove($texversion);
 # }   } else {
 # $texversion =~ s/(\\begin{minipage}{\\textwidth})/$1 {\\small\\noindent\\verb|$newurlp\|\\vskip 0 mm}/;      $texversion =~ s/\\end{document}//;
 # if ($flag_latex_header_remove ne 'NO') {   }
 #    $texversion = &latex_header_footer_remove($texversion);   $result .= $texversion;
 # } else {      }
 #    $texversion =~ s/\\end{document}//;      $flag_latex_header_remove = 'YES';  
 # }   }
 # $result .= $texversion;   $result .= '\end{document}';      
 #    }  
 #    $flag_latex_header_remove = 'YES';    
 # }  
 # $result .= '\end{document}';        
     }      }
 #-------------------------------------------------------- corrections for the different page formats  #-------------------------------------------------------- corrections for the different page formats
     $result = &page_format_transformation_new($papersize,$laystyle,$numberofcolumns,$helper->{'VARS'}->{'PRINT_TYPE'},$result,$helper->{VARS}->{'assignment'});      $result = &page_format_transformation_new($papersize,$laystyle,$numberofcolumns,$helper->{'VARS'}->{'PRINT_TYPE'},$result,$helper->{VARS}->{'assignment'});
Line 1667  sub handler { Line 1581  sub handler {
             return $result;              return $result;
         }          }
         $helper = $result;          $helper = $result;
       
   
 #    my $key;   # my $key; 
 #    foreach $key (keys %{$helper->{'VARS'}}) {  # foreach $key (keys %{$helper->{'VARS'}}) {
 # $r->print(' '.$key.'->'.$helper->{'VARS'}->{$key}.'<br />');  #    $r->print(' '.$key.'->'.$helper->{'VARS'}->{$key}.'<br />');
 #    }  # }
 # return OK;  # return OK;
   
   
Line 1685  sub handler { Line 1599  sub handler {
   
     return OK;      return OK;
     }      }
     my $loaderror=&Apache::lonnet::overloaderror($r);  #    my $loaderror=&Apache::lonnet::overloaderror($r);
     if ($loaderror) { return $loaderror; }  #    if ($loaderror) { return $loaderror; }
     $loaderror=  #    $loaderror=
        &Apache::lonnet::overloaderror($r,  #       &Apache::lonnet::overloaderror($r,
          $ENV{'course.'.$ENV{'request.course.id'}.'.home'});  #         $ENV{'course.'.$ENV{'request.course.id'}.'.home'});
     if ($loaderror) { return $loaderror; }  #    if ($loaderror) { return $loaderror; }
   
     $r->content_type('text/html');      $r->content_type('text/html');
     $r->send_http_header;      $r->send_http_header;
Line 1780  sub printHelper { Line 1694  sub printHelper {
     # This will persistently load in the data we want from the      # This will persistently load in the data we want from the
     # very first screen.      # very first screen.
     if ($ENV{'form.postdata'}) {      if ($ENV{'form.postdata'}) {
    if ($ENV{'form.postdata'}!~/\/res\//) {$helper->{VARS}->{'construction'} = $ENV{'form.postdata'};}
         $helper->{VARS}->{'symb'} = &Apache::lonnet::symbread($ENV{'form.postdata'});          $helper->{VARS}->{'symb'} = &Apache::lonnet::symbread($ENV{'form.postdata'});
     }      }
     if ($ENV{'form.symb'}) {      if ($ENV{'form.symb'}) {
Line 1787  sub printHelper { Line 1702  sub printHelper {
     }      }
     if ($ENV{'form.url'}) {      if ($ENV{'form.url'}) {
         $helper->{VARS}->{'symb'} = &Apache::lonnet::symbread($helper->{VARS}->{'postdata'});          $helper->{VARS}->{'symb'} = &Apache::lonnet::symbread($helper->{VARS}->{'postdata'});
   
     }      }
   
           
Line 1809  sub printHelper { Line 1725  sub printHelper {
   
     # "Delete everything after the last slash."      # "Delete everything after the last slash."
     $subdir =~ s|/[^/]+$||;      $subdir =~ s|/[^/]+$||;
       if (not defined $helper->{VARS}->{'construction'}) {
    $subdir =  '/home/httpd/html/res'.$subdir;   
       } else {
    $helper->{VARS}->{'construction'}=~/^([^\/]+)\/\/([^\/]+)(.*)\/[^\/]*$/;
    $subdir = $3;
    $subdir=~/\/~([^\/]+)\/(.*)$/;
    $subdir = '/home/'.$1.'/public_html/'.$2;
       }
   ####    $r->print('Dir:  '.$subdir.'  ');
   ####    return OK;
   
   
     # What can be printed is a very dynamic decision based on      # What can be printed is a very dynamic decision based on
     # lots of factors. So we need to dynamically build this list.      # lots of factors. So we need to dynamically build this list.
Line 1825  sub printHelper { Line 1752  sub printHelper {
     my $paramHash;      my $paramHash;
     # We can always print the current screen.      # We can always print the current screen.
   
     push @{$printChoices}, ["<b>$resourceTitle</b> (exactly what was on the screen)", 'current_document', 'PAGESIZE'];      push @{$printChoices}, ["Current resource <b>$resourceTitle</b> (prints what you just saw on the screen)", 'current_document', 'PAGESIZE'];
   
     # If we're in a sequence...      # If we're in a sequence...
     if ($helper->{VARS}->{'postdata'} =~ /\/res\//) {      if (not defined $helper->{'VARS'}->{'construction'}) {
         # Allow problems from sequence          # Allow problems from sequence
         push @{$printChoices}, ["Problems from <b>$sequenceTitle</b>", 'map_problems', 'CHOOSE_PROBLEMS'];          push @{$printChoices}, ["Problem(s) from <b>$sequenceTitle</b>", 'map_problems', 'CHOOSE_PROBLEMS'];
         # Allow all resources from sequence          # Allow all resources from sequence
         push @{$printChoices}, ["Problems and pages from <b>$sequenceTitle</b>", 'map_problems_pages', 'CHOOSE_PROBLEMS_HTML'];          push @{$printChoices}, ["Everything (problem(s), page(s), html/xml file(s)) from <b>$sequenceTitle</b>", 'map_problems_pages', 'CHOOSE_PROBLEMS_HTML'];
   
         my $isProblem = '$res->is_problem();';          my $isProblem = '$res->is_problem();';
         my $isProblemOrMap = '$res->is_problem() || $res->is_map()';          my $isProblemOrMap = '$res->is_problem() || $res->is_map()';
         my $isNotMap = '!$res->is_map();';          my $isNotMap = '!$res->is_map();';
         my $symb = '$res->symb();';          my $symb = '$res->symb();';
         my $helperFragment = <<HELPERFRAGMENT;          my $helperFragment = <<HELPERFRAGMENT;
   <state name="CHOOSE_PROBLEMS" title="Select Problems">    <state name="CHOOSE_PROBLEMS" title="Select Problem(s) to print">
     <message>Select problems to print:</message>      <message>(mark them then click "next" button) <br /></message>
     <resource variable="RESOURCES" multichoice="1" toponly='1'>      <resource variable="RESOURCES" multichoice="1" toponly='1'>
       <nextstate>PAGESIZE</nextstate>        <nextstate>PAGESIZE</nextstate>
       <filterfunc>return $isProblem</filterfunc>        <filterfunc>return $isProblem</filterfunc>
Line 1849  sub printHelper { Line 1776  sub printHelper {
       </resource>        </resource>
     </state>      </state>
   
   <state name="CHOOSE_PROBLEMS_HTML" title="Select Resources">    <state name="CHOOSE_PROBLEMS_HTML" title="Select Resource(s) to print">
     <message>Select resources to print:</message>      <message>(mark them then click "next" button) <br /></message>
     <resource variable="RESOURCES" multichoice="1" toponly='1'>      <resource variable="RESOURCES" multichoice="1" toponly='1'>
       <nextstate>PAGESIZE</nextstate>        <nextstate>PAGESIZE</nextstate>
       <filterfunc>return $isNotMap;</filterfunc>        <filterfunc>return $isNotMap;</filterfunc>
Line 1866  HELPERFRAGMENT Line 1793  HELPERFRAGMENT
     # If the user is priviledged, allow them to print all       # If the user is priviledged, allow them to print all 
     # problems in the course, optionally for selected students      # problems in the course, optionally for selected students
     if (($ENV{'request.role'}=~m/^cc\./ or $ENV{'request.role'}=~m/^in\./ or $ENV{'request.role'}=~m/^ta\./) and ($helper->{VARS}->{'postdata'}=~/\/res\//)) {       if (($ENV{'request.role'}=~m/^cc\./ or $ENV{'request.role'}=~m/^in\./ or $ENV{'request.role'}=~m/^ta\./) and ($helper->{VARS}->{'postdata'}=~/\/res\//)) { 
         push @{$printChoices}, ['<b>All problems</b> in course (may take a lot of time)', 'all_problems', 'ALL_PROBLEMS'];          push @{$printChoices}, ['<b>Problems</b> in this course', 'all_problems', 'ALL_PROBLEMS'];
         push @{$printChoices}, ["Problems from <b>$sequenceTitle</b> for selected students", 'problems_for_students', 'CHOOSE_STUDENTS'];          push @{$printChoices}, ["Problems from <b>$sequenceTitle</b> for selected students", 'problems_for_students', 'CHOOSE_STUDENTS'];
   
         my $isProblem = '$res->is_problem();';          my $isProblem = '$res->is_problem();';
         my $isProblemOrMap = '$res->is_problem() || $res->is_map()';          my $isProblemOrMap = '$res->is_problem() || $res->is_map()';
         my $symb = '$res->symb();';          my $symb = '$res->symb();';
         &Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_STUDENTS);          &Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_STUDENTS);
   <state name="ALL_PROBLEMS" title="Select Problems">    <state name="ALL_PROBLEMS" title="Select Problem(s) to print">
     <message>Select problems to print:</message>      <message>(mark them then click "next" button) <br /></message>
     <resource variable="RESOURCES" multichoice="1">      <resource variable="RESOURCES" multichoice="1">
       <nextstate>PAGESIZE</nextstate>        <nextstate>PAGESIZE</nextstate>
       <filterfunc>return $isProblemOrMap</filterfunc>        <filterfunc>return $isProblemOrMap</filterfunc>
Line 1883  HELPERFRAGMENT Line 1810  HELPERFRAGMENT
       </resource>        </resource>
     </state>      </state>
   
   <state name="CHOOSE_STUDENTS" title="Choose Students">    <state name="CHOOSE_STUDENTS" title="Choose Students whose assignments you want to print">
     <message>Select the students you wish to print the problems for:</message>      <message>(do not forget to select assignment itself - make another selection below) <br /></message>
     <student multichoice='1' variable="STUDENTS" nextstate="PAGESIZE" />      <student multichoice='1' variable="STUDENTS" nextstate="PAGESIZE" />
       <message><br /><big><i><b>Select resources for the assignment</b></i></big><br /></message>
     <resource variable="RESOURCES" multichoice="1">      <resource variable="RESOURCES" multichoice="1">
       <filterfunc>return $isProblem</filterfunc>        <filterfunc>return $isProblem</filterfunc>
         <mapurl>$map</mapurl>
       <valuefunc>return $symb</valuefunc>        <valuefunc>return $symb</valuefunc>
       </resource>        </resource>
       <message><br /><big><i><b>How should the results be printed?</b></i></big><br /></message>
       <choices variable="EMPTY_PAGES">
         <choice computer='0'>Print students assignments without separations (as uniform flow)</choice>
         <choice computer='1'>Start student assignment from new page (add pagefeed after each student)</choice>
         <choice computer='2'>Add one emty page after each student assignment</choice> 
         <choice computer='3'>Add two emty page after each student assignment</choice> 
         </choices>
     </state>      </state>
 CHOOSE_STUDENTS  CHOOSE_STUDENTS
     }      }
   
     # FIXME: That RE should come from a library somewhere.      # FIXME: That RE should come from a library somewhere.
     if ((&Apache::lonnet::allowed('bre',$subdir) eq 'F') and ($helper->{VARS}->{'postdata'}=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)/)) {          if (((&Apache::lonnet::allowed('bre',$subdir) eq 'F') and ($helper->{VARS}->{'postdata'}=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)/)) or defined $helper->{'VARS'}->{'construction'}) {    
         push @{$printChoices}, ["Problems from <b>$subdir</b>", 'problems_from_directory', 'CHOOSE_FROM_SUBDIR'];          push @{$printChoices}, ["Problems from current subdirectory <b>$subdir</b>", 'problems_from_directory', 'CHOOSE_FROM_SUBDIR'];
                   
         my $f = '$filename';          my $f = '$filename';
         my $xmlfrag = <<CHOOSE_FROM_SUBDIR;          my $xmlfrag = <<CHOOSE_FROM_SUBDIR;
   <state name="CHOOSE_FROM_SUBDIR" title="Select Files">    <state name="CHOOSE_FROM_SUBDIR" title="Select File(s) from <b><small>$subdir</small></b> to print">
     <message>Select problems you wish to print from <b>$subdir</b></message>      <message>(mark them then click "next" button) <br /></message>
     <files variable="FILES" multichoice='1'>      <files variable="FILES" multichoice='1'>
       <nextstate>PAGESIZE</nextstate>        <nextstate>PAGESIZE</nextstate>
       <filechoice>return '$subdir';</filechoice>        <filechoice>return '$subdir';</filechoice>
Line 1918  CHOOSE_FROM_SUBDIR Line 1854  CHOOSE_FROM_SUBDIR
     }      }
   
     # Generate the first state, to select which resources get printed.      # Generate the first state, to select which resources get printed.
     Apache::lonhelper::state->new("START", "Selecting Resources to Print");      Apache::lonhelper::state->new("START", "What do you want to print? Make a choice.");
     $paramHash = Apache::lonhelper::getParamHash();      $paramHash = Apache::lonhelper::getParamHash();
     $paramHash->{MESSAGE_TEXT} = "What do you want to print?";      $paramHash->{MESSAGE_TEXT} = "";
     Apache::lonhelper::message->new();      Apache::lonhelper::message->new();
     $paramHash = Apache::lonhelper::getParamHash();      $paramHash = Apache::lonhelper::getParamHash();
     $paramHash->{'variable'} = 'PRINT_TYPE';      $paramHash->{'variable'} = 'PRINT_TYPE';
Line 2015  sub render { Line 1951  sub render {
   
     $result .= <<STATEHTML;      $result .= <<STATEHTML;
   
 <p>How should the printing be formatted?</p>  <p><big><i><b>What page format do you prefer?</b></i></big></p>
 <table cellpadding="3">  <table cellpadding="3">
   <tr>    <tr>
     <td align="center"><b>Layout</b></td>      <td align="center"><b>Page layout</b></td>
     <td align="center"><b>Columns</b></td>      <td align="center"><b>Number of columns</b></td>
     <td align="center"><b>Paper type</b></td>      <td align="center"><b>Paper type</b></td>
   </tr>    </tr>
   <tr>    <tr>
     <td>      <td>
       <input type="radio" name="${var}.layout" value="L" checked='1' /> Landscape<br />        <input type="radio" name="${var}.layout" value="L" /> Landscape<br />
       <input type="radio" name="${var}.layout" value="P" /> Portrait        <input type="radio" name="${var}.layout" value="P" checked='1'  /> Portrait
     </td>      </td>
     <td>      <td align="center">
       <select name="${var}.cols">        <select name="${var}.cols">
 STATEHTML  STATEHTML
   

Removed from v.1.147  
changed lines
  Added in v.1.155


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.