Diff for /loncom/interface/lonprintout.pm between versions 1.386 and 1.400

version 1.386, 2005/08/16 10:25:15 version 1.400, 2005/12/06 03:58:14
Line 1 Line 1
 #  The LearningOnline Network  # The LearningOnline Network
 # Printout  # Printout
 #  #
 # $Id$  # $Id$
Line 42  use Apache::lonratedt; Line 42  use Apache::lonratedt;
 use POSIX qw(strftime);  use POSIX qw(strftime);
 use Apache::lonlocal;  use Apache::lonlocal;
   
 my $resources_printed = '';  my %perm;
   
 #  #
 #   Convert a numeric code to letters  #   Convert a numeric code to letters
Line 87  sub letters_to_num { Line 87  sub letters_to_num {
 sub is_valid_numeric_code {  sub is_valid_numeric_code {
     my ($value, $num_digits) = @_;      my ($value, $num_digits) = @_;
     #   Remove leading/trailing whitespace;      #   Remove leading/trailing whitespace;
     $value =~ s/^\s*//;      $value =~ s/^\s*//g;
     $value =~ s/\s*$//;      $value =~ s/\s*$//g;
           
     #  All digits?      #  All digits?
     if ($value =~ /^[0-9]+$/) {      if ($value !~ /^[0-9]+$/) {
  return "Numeric code $value has invalid characters - must only be digits";   return "Numeric code $value has invalid characters - must only be digits";
     }      }
     if (length($value) != $num_digits) {      if (length($value) != $num_digits) {
Line 433  sub character_chart { Line 433  sub character_chart {
     $result =~ s/&(\#252|uuml);/\\\"{u}/g;      $result =~ s/&(\#252|uuml);/\\\"{u}/g;
     $result =~ s/&(\#253|yacute);/\\\'{y}/g;      $result =~ s/&(\#253|yacute);/\\\'{y}/g;
     $result =~ s/&(\#255|yuml);/\\\"{y}/g;      $result =~ s/&(\#255|yuml);/\\\"{y}/g;
       $result =~ s/&\#295;/\\ensuremath\{\\hbar\}/g;
     $result =~ s/&\#952;/\\ensuremath\{\\theta\}/g;      $result =~ s/&\#952;/\\ensuremath\{\\theta\}/g;
 #Greek Alphabet  #Greek Alphabet
     $result =~ s/&(alpha|\#945);/\\ensuremath\{\\alpha\}/g;      $result =~ s/&(alpha|\#945);/\\ensuremath\{\\alpha\}/g;
Line 508  sub character_chart { Line 509  sub character_chart {
     $result =~ s/&(prod|\#8719);/\\ensuremath\{\\prod\}/g;      $result =~ s/&(prod|\#8719);/\\ensuremath\{\\prod\}/g;
     $result =~ s/&(sum|\#8721);/\\ensuremath\{\\sum\}/g;      $result =~ s/&(sum|\#8721);/\\ensuremath\{\\sum\}/g;
     $result =~ s/&(minus|\#8722);/\\ensuremath\{-\}/g;      $result =~ s/&(minus|\#8722);/\\ensuremath\{-\}/g;
       $result =~ s/–/\\ensuremath\{-\}/g;
     $result =~ s/&(lowast|\#8727);/\\ensuremath\{*\}/g;      $result =~ s/&(lowast|\#8727);/\\ensuremath\{*\}/g;
     $result =~ s/&(radic|\#8730);/\\ensuremath\{\\surd\}/g;      $result =~ s/&(radic|\#8730);/\\ensuremath\{\\surd\}/g;
     $result =~ s/&(prop|\#8733);/\\ensuremath\{\\propto\}/g;      $result =~ s/&(prop|\#8733);/\\ensuremath\{\\propto\}/g;
Line 816  sub IndexCreation { Line 818  sub IndexCreation {
 sub print_latex_header {  sub print_latex_header {
     my $mode=shift;      my $mode=shift;
     my $output='\documentclass[letterpaper]{article}';      my $output='\documentclass[letterpaper]{article}';
     if (($mode eq 'batchmode') || (!$env{'request.role.adv'})) {      if (($mode eq 'batchmode') || (!$perm{'pav'})) {
  $output.='\batchmode';   $output.='\batchmode';
     }      }
     $output.='\newcommand{\keephidden}[1]{}\renewcommand{\deg}{$^{\circ}$}'."\n".      $output.='\newcommand{\keephidden}[1]{}\renewcommand{\deg}{$^{\circ}$}'."\n".
      '\usepackage{longtable}\usepackage{textcomp}\usepackage{makeidx}'."\n".       '\usepackage{longtable}\usepackage{textcomp}\usepackage{makeidx}'."\n".
      '\usepackage[dvips]{graphicx}\usepackage{epsfig}'."\n".       '\usepackage[dvips]{graphicx}\usepackage{epsfig}'."\n".
        '\usepackage{wrapfig}'.
      '\usepackage{picins}\usepackage{calc}'."\n".       '\usepackage{picins}\usepackage{calc}'."\n".
      '\newenvironment{choicelist}{\begin{list}{}{\setlength{\rightmargin}{0in}'."\n".       '\newenvironment{choicelist}{\begin{list}{}{\setlength{\rightmargin}{0in}'."\n".
      '\setlength{\leftmargin}{0.13in}\setlength{\topsep}{0.05in}'."\n".       '\setlength{\leftmargin}{0.13in}\setlength{\topsep}{0.05in}'."\n".
Line 903  sub unsupported { Line 906  sub unsupported {
   
   
 #  #
   # List of recently generated print files
   #
   sub recently_generated {
       my $r=shift;
       my $prtspool=$r->dir_config('lonPrtDir');
       my $zip_result;
       my $pdf_result;
       opendir(DIR,$prtspool);
   
       my @files = 
    grep(/^$env{'user.name'}_$env{'user.domain'}_printout_(\d+)_.*\.(pdf|zip)$/,readdir(DIR));
       closedir(DIR);
   
       @files = sort {
    my ($actime) = (stat($prtspool.'/'.$a))[10];
    my ($bctime) = (stat($prtspool.'/'.$b))[10];
    return $bctime <=> $actime;
       } (@files);
   
       foreach my $filename (@files) {
    my ($ext) = ($filename =~ m/(pdf|zip)$/);
    my ($cdev,$cino,$cmode,$cnlink,
       $cuid,$cgid,$crdev,$csize,
       $catime,$cmtime,$cctime,
       $cblksize,$cblocks)=stat($prtspool.'/'.$filename);
    my $result="<a href='/prtspool/$filename'>".
       &mt('Generated [_1] ([_2] bytes)',
    &Apache::lonlocal::locallocaltime($cctime),$csize).
    '</a><br />';
    if ($ext eq 'pdf') { $pdf_result .= $result; }
    if ($ext eq 'zip') { $zip_result .= $result; }
       }
       if ($zip_result) {
    $r->print('<h4>'.&mt('Recently generated printout zip files')."</h4>\n"
     .$zip_result);
       }
       if ($pdf_result) {
    $r->print('<h4>'.&mt('Recently generated printouts')."</h4>\n"
     .$pdf_result);
       }
   }
   
   #
 #   Retrieve the hash of page breaks.  #   Retrieve the hash of page breaks.
 #  #
 #  Inputs:  #  Inputs:
Line 926  sub get_page_breaks  { Line 972  sub get_page_breaks  {
 sub output_data {  sub output_data {
     my ($r,$helper,$rparmhash) = @_;      my ($r,$helper,$rparmhash) = @_;
     my %parmhash = %$rparmhash;      my %parmhash = %$rparmhash;
       my $resources_printed = '';
     my $html=&Apache::lonxml::xmlbegin();      my $html=&Apache::lonxml::xmlbegin();
     my $bodytag=&Apache::loncommon::bodytag('Preparing Printout');      my $bodytag=&Apache::loncommon::bodytag('Preparing Printout');
     $r->print(<<ENDPART);      $r->print(<<ENDPART);
Line 1363  ENDPART Line 1410  ENDPART
  my $code_name=$helper->{'VARS'}->{'ANON_CODE_STORAGE_NAME'};   my $code_name=$helper->{'VARS'}->{'ANON_CODE_STORAGE_NAME'};
  my $old_name=$helper->{'VARS'}->{'REUSE_OLD_CODES'};   my $old_name=$helper->{'VARS'}->{'REUSE_OLD_CODES'};
  my $single_code = $helper->{'VARS'}->{'SINGLE_CODE'};   my $single_code = $helper->{'VARS'}->{'SINGLE_CODE'};
    my $selected_code = $helper->{'VARS'}->{'CODE_SELECTED_FROM_LIST'};
   
  my $code_option=$helper->{'VARS'}->{'CODE_OPTION'};   my $code_option=$helper->{'VARS'}->{'CODE_OPTION'};
  open(FH,$Apache::lonnet::perlvar{'lonTabDir'}.'/scantronformat.tab');   open(FH,$Apache::lonnet::perlvar{'lonTabDir'}.'/scantronformat.tab');
  my ($code_type,$code_length)=('letter',6);   my ($code_type,$code_length)=('letter',6);
Line 1384  ENDPART Line 1433  ENDPART
      $code_type=$result{"type\0$old_name"};       $code_type=$result{"type\0$old_name"};
      @allcodes=split(',',$result{$old_name});       @allcodes=split(',',$result{$old_name});
      $num_todo=scalar(@allcodes);       $num_todo=scalar(@allcodes);
    } elsif ($selected_code) { # Selection value is always numeric.
        $num_todo = 1;
        @allcodes = ($selected_code);
  } elsif ($single_code) {   } elsif ($single_code) {
   
        $num_todo    = 1; # Unconditionally one code to do.
      # If an alpha code have to convert to numbers so it can be       # If an alpha code have to convert to numbers so it can be
      # converted back to letters again :-)       # converted back to letters again :-)
      #       #
      if ($code_type ne 'number') {       if ($code_type ne 'number') {
  $single_code = &letters_to_num($single_code);   $single_code = &letters_to_num($single_code);
  $num_todo    = 1;  
      }       }
      @allcodes = ($single_code);       @allcodes = ($single_code);
  } else {   } else {
Line 1600  ENDPART Line 1652  ENDPART
                             'cgi.'.$identifier.'.selection' => $selectionmade,                              'cgi.'.$identifier.'.selection' => $selectionmade,
     'cgi.'.$identifier.'.tableofcontents' => $helper->{'VARS'}->{'TABLE_CONTENTS'},      'cgi.'.$identifier.'.tableofcontents' => $helper->{'VARS'}->{'TABLE_CONTENTS'},
     'cgi.'.$identifier.'.tableofindex' => $helper->{'VARS'}->{'TABLE_INDEX'},      'cgi.'.$identifier.'.tableofindex' => $helper->{'VARS'}->{'TABLE_INDEX'},
     'cgi.'.$identifier.'.role' => $env{'request.role.adv'},      'cgi.'.$identifier.'.role' => $perm{'pav'},
                             'cgi.'.$identifier.'.numberoffiles' => $#print_array,                              'cgi.'.$identifier.'.numberoffiles' => $#print_array,
                             'cgi.'.$identifier.'.studentnames' => $student_names,                              'cgi.'.$identifier.'.studentnames' => $student_names,
                             'cgi.'.$identifier.'.backref' => $URLback,);                              'cgi.'.$identifier.'.backref' => $URLback,);
Line 1625  sub get_CODE { Line 1677  sub get_CODE {
     my $max='1'.'0'x$size;      my $max='1'.'0'x$size;
     my $newcode;      my $newcode;
     while(1) {      while(1) {
  $newcode=sprintf("%06d",int(rand($max)));   $newcode=sprintf("%0".$size."d",int(rand($max)));
  if (!exists($$all_codes{$newcode})) {   if (!exists($$all_codes{$newcode})) {
     $$all_codes{$newcode}=1;      $$all_codes{$newcode}=1;
     if ($type eq 'number' ) {      if ($type eq 'number' ) {
Line 1747  sub print_resources { Line 1799  sub print_resources {
 sub handler {  sub handler {
   
     my $r = shift;      my $r = shift;
     my $helper;      
       &init_perm();
   
 #    my $loaderror=&Apache::lonnet::overloaderror($r);  #    my $loaderror=&Apache::lonnet::overloaderror($r);
 #    if ($loaderror) { return $loaderror; }  #    if ($loaderror) { return $loaderror; }
Line 1756  sub handler { Line 1809  sub handler {
 #         $env{'course.'.$env{'request.course.id'}.'.home'});  #         $env{'course.'.$env{'request.course.id'}.'.home'});
 #    if ($loaderror) { return $loaderror; }  #    if ($loaderror) { return $loaderror; }
   
     my $result = printHelper($r);      my $helper = printHelper($r);
     if (!ref($result)) {      if (!ref($helper)) {
  return $result;   return $helper;
     }      }
     $helper = $result;  
         
 # my $key;   # my $key; 
 # foreach $key (keys %{$helper->{'VARS'}}) {  # foreach $key (keys %{$helper->{'VARS'}}) {
Line 1803  sub addMessage { Line 1855  sub addMessage {
   
 use Data::Dumper;  use Data::Dumper;
   
   sub init_perm {
       undef(%perm);
       $perm{'pav'}=&Apache::lonnet::allowed('pav',$env{'request.course.id'});
       if (!$perm{'pav'}) {
    $perm{'pav'}=&Apache::lonnet::allowed('pav',
     $env{'request.course.id'}.'/'.$env{'request.course.sec'});
       }
       $perm{'pfo'}=&Apache::lonnet::allowed('pav',$env{'request.course.id'});
       if (!$perm{'pfo'}) {
    $perm{'pfo'}=&Apache::lonnet::allowed('pfo',
     $env{'request.course.id'}.'/'.$env{'request.course.sec'});
       }
   }
   
 sub printHelper {  sub printHelper {
     my $r = shift;      my $r = shift;
   
Line 1846  sub printHelper { Line 1912  sub printHelper {
     $helper->declareVar("showallfoils");      $helper->declareVar("showallfoils");
   
     #  The page breaks can get loaded initially from the course environment:      #  The page breaks can get loaded initially from the course environment:
       # But we only do this in the initial state so that they are allowed to change.
       #
   
     if((!defined($env{"form.CURRENT_STATE"}))  ||      $helper->{VARS}->{FINISHPAGE} = '';
        ($env{'form.CURRENT_STATE'} == "START")) {  
  $helper->{VARS}->{FINISHPAGE} = ""; # In case they did a back e.g.  
     }  
   
   
           
     &Apache::loncommon::restore_course_settings('print',      &Apache::loncommon::restore_course_settings('print',
  {'pagebreaks'  => 'scalar',   {'pagebreaks'  => 'scalar',
          'lastprinttype' => 'scalar'});           'lastprinttype' => 'scalar'});
   
           
     if("$helper->{VARS}->{PRINT_TYPE}" eq "$env{'form.lastprinttype'}") {      
  $helper->{VARS}->{FINISHPAGE} = $env{'form.pagebreaks'};      if($helper->{VARS}->{PRINT_TYPE} eq $env{'form.lastprinttype'}) {
    if (!defined ($env{"form.CURRENT_STATE"})) {
       
       $helper->{VARS}->{FINISHPAGE} = $env{'form.pagebreaks'};
    } else {
       my $state = $env{"form.CURRENT_STATE"};
       if ($state eq "START") {
    $helper->{VARS}->{FINISHPAGE} = $env{'form.pagebreaks'};
       }
    }
   
     }      }
           
           
Line 1925  sub printHelper { Line 1997  sub printHelper {
     }      }
   
     my $userCanSeeHidden = Apache::lonnavmaps::advancedUser();      my $userCanSeeHidden = Apache::lonnavmaps::advancedUser();
     my $userPriviledged = ($env{'request.role'}=~m/^cc\./ or  
    $env{'request.role'}=~m/^in\./ or  
    $env{'request.role'}=~m/^ta\./);  
   
     Apache::lonhelper::registerHelperTags();      Apache::lonhelper::registerHelperTags();
   
Line 1970  sub printHelper { Line 2039  sub printHelper {
     $helper->declareVar('SEQUENCE');      $helper->declareVar('SEQUENCE');
   
     # Useful for debugging: Dump the help vars      # Useful for debugging: Dump the help vars
 #    $r->print(Dumper($helper->{VARS}));  #     $r->print(Dumper($helper->{VARS}));
 #    $r->print($map);  #    $r->print($map);
   
     # If we're in a sequence...      # If we're in a sequence...
Line 2012  HELPERFRAGMENT Line 2081  HELPERFRAGMENT
  &Apache::lonxml::xmlparse($r, 'helper', $helperFragment);   &Apache::lonxml::xmlparse($r, 'helper', $helperFragment);
     }      }
   
     # If the user is privileged, allow them to print all       # If the user has pfo (print for otheres) allow them to print all 
     # problems and resources  in the entier course, optionally for selected students      # problems and resources  in the entier course, optionally for selected students
     if ($userPriviledged &&       if ($perm{'pfo'} && 
         ($helper->{VARS}->{'postdata'}=~/\/res\// || $helper->{VARS}->{'postdata'}=~/\/(syllabus|smppg|aboutme|bulletinboard)$/)) {           ($helper->{VARS}->{'postdata'}=~/\/res\// || $helper->{VARS}->{'postdata'}=~/\/(syllabus|smppg|aboutme|bulletinboard)$/)) { 
   
         push @{$printChoices}, ['<b>Problems</b> from <b>entire course</b>', 'all_problems', 'ALL_PROBLEMS'];          push @{$printChoices}, ['<b>Problems</b> from <b>entire course</b>', 'all_problems', 'ALL_PROBLEMS'];
Line 2088  CHOOSE_STUDENTS Line 2157  CHOOSE_STUDENTS
     if ($name =~ /^type\0/) { next; }      if ($name =~ /^type\0/) { next; }
     $namechoice.='<choice computer="'.$name.'">'.$name.'</choice>';      $namechoice.='<choice computer="'.$name.'">'.$name.'</choice>';
  }   }
   
   
           my %all_codes = &Apache::lonnet::get('CODEs',
        \@names, $cdom,$cnum);
    my %code_values;
    my @all_code_array;
    foreach my $key (keys %all_codes) {
       %code_values = &Apache::grades::get_codes($key, $cdom, $cnum);
       foreach my $key (keys %code_values) {
    push (@all_code_array, "$key");
       }
    }
   
    my $code_selection = "<choice></choice>\n";
    foreach my $code (sort {uc($a) cmp uc($b)} @all_code_array) {
       my $choice  = $code;
       if ($code =~ /^[A-Z]+$/) { # Alpha code
    $choice = &letters_to_num($code);
       }
       $code_selection .= '   <choice computer="'.$choice.'">'.$code."</choice>\n";
    }
  open(FH,$Apache::lonnet::perlvar{'lonTabDir'}.'/scantronformat.tab');   open(FH,$Apache::lonnet::perlvar{'lonTabDir'}.'/scantronformat.tab');
  my $codechoice='';   my $codechoice='';
  foreach my $line (<FH>) {   foreach my $line (<FH>) {
Line 2110  CHOOSE_STUDENTS Line 2200  CHOOSE_STUDENTS
        <validator>         <validator>
  if (((\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'}+0) < 1) &&   if (((\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'}+0) < 1) &&
     !\$helper->{'VARS'}{'REUSE_OLD_CODES'}                &&      !\$helper->{'VARS'}{'REUSE_OLD_CODES'}                &&
             !\$helper->{'VARS'}{'SINGLE_CODE'}) {              !\$helper->{'VARS'}{'SINGLE_CODE'}                    &&
       !\$helper->{'VARS'}{'CODE_SELECTED_FROM_LIST'}) {
     return "You need to specify the number of assignments to print";      return "You need to specify the number of assignments to print";
  }   }
  return undef;   return undef;
Line 2121  CHOOSE_STUDENTS Line 2212  CHOOSE_STUDENTS
     <string variable="SINGLE_CODE" size="10" defaultvalue="zzzz">      <string variable="SINGLE_CODE" size="10" defaultvalue="zzzz">
         <validator>          <validator>
    if(!\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'}           &&     if(!\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'}           &&
       !\$helper->{'VARS'}{'REUSE_OLD_CODES'}) {        !\$helper->{'VARS'}{'REUSE_OLD_CODES'}                 &&
         !\$helper->{'VARS'}{'CODE_SELECTED_FROM_LIST'}) {
       return &Apache::lonprintout::is_code_valid(\$helper->{'VARS'}{'SINGLE_CODE'},        return &Apache::lonprintout::is_code_valid(\$helper->{'VARS'}{'SINGLE_CODE'},
       \$helper->{'VARS'}{'CODE_OPTION'});        \$helper->{'VARS'}{'CODE_OPTION'});
    } else {     } else {
Line 2130  CHOOSE_STUDENTS Line 2222  CHOOSE_STUDENTS
         </validator>          </validator>
     </string>      </string>
     <message></td></tr><tr><td></message>      <message></td></tr><tr><td></message>
       <message><b>Choose single code from list</b></message>
       <message></td><td></message>
       <dropdown variable="CODE_SELECTED_FROM_LIST" multichoice="0" allowempty="0">
       $code_selection
       </dropdown>
       <message></td></tr><tr><td></message>
     <message><b>Names to store the CODEs under for later:</b></message>      <message><b>Names to store the CODEs under for later:</b></message>
     <message></td><td></message>      <message></td><td></message>
     <string variable="ANON_CODE_STORAGE_NAME" maxlength="50" size="20" />      <string variable="ANON_CODE_STORAGE_NAME" maxlength="50" size="20" />
Line 2197  CHOOSE_STUDENTS1 Line 2295  CHOOSE_STUDENTS1
        <validator>         <validator>
  if (((\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'}+0) < 1) &&   if (((\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'}+0) < 1) &&
     !\$helper->{'VARS'}{'REUSE_OLD_CODES'}                &&      !\$helper->{'VARS'}{'REUSE_OLD_CODES'}                &&
     !\$helper->{'VARS'}{'SINGLE_CODE'}) {      !\$helper->{'VARS'}{'SINGLE_CODE'}                   &&
       !\$helper->{'VARS'}{'CODE_SELECTED_FROM_LIST'}) {
     return "You need to specify the number of assignments to print";      return "You need to specify the number of assignments to print";
  }   }
  return undef;   return undef;
Line 2208  CHOOSE_STUDENTS1 Line 2307  CHOOSE_STUDENTS1
     <string variable="SINGLE_CODE" size="10" defaultvalue="zzzz">      <string variable="SINGLE_CODE" size="10" defaultvalue="zzzz">
         <validator>          <validator>
    if(!\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'}           &&     if(!\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'}           &&
       !\$helper->{'VARS'}{'REUSE_OLD_CODES'}) {        !\$helper->{'VARS'}{'REUSE_OLD_CODES'}                 &&
         !\$helper->{'VARS'}{'CODE_SELECTED_FROM_LIST'}) {
       return &Apache::lonprintout::is_code_valid(\$helper->{'VARS'}{'SINGLE_CODE'},        return &Apache::lonprintout::is_code_valid(\$helper->{'VARS'}{'SINGLE_CODE'},
       \$helper->{'VARS'}{'CODE_OPTION'});        \$helper->{'VARS'}{'CODE_OPTION'});
    } else {     } else {
Line 2217  CHOOSE_STUDENTS1 Line 2317  CHOOSE_STUDENTS1
         </validator>          </validator>
     </string>      </string>
     <message></td></tr><tr><td></message>      <message></td></tr><tr><td></message>
       <message><b>Choose single code from list</b></message>
       <message></td><td></message>
       <dropdown variable="CODE_SELECTED_FROM_LIST" multichoice="0" allowempty="0">
       $code_selection
       </dropdown>
       <message></td></tr><tr><td></message>
     <message><b>Names to store the CODEs under for later:</b></message>      <message><b>Names to store the CODEs under for later:</b></message>
     <message></td><td></message>      <message></td><td></message>
     <string variable="ANON_CODE_STORAGE_NAME" maxlength="50" size="20" />      <string variable="ANON_CODE_STORAGE_NAME" maxlength="50" size="20" />
Line 2239  CHOOSE_ANON2 Line 2345  CHOOSE_ANON2
     }      }
   
     # 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)/)) or defined $helper->{'VARS'}->{'construction'}) and $env{'request.role.adv'} and $subdir ne $Apache::lonnet::perlvar{'lonDocRoot'}.'/res/') {          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'}) and $perm{'pav'} and $subdir ne $Apache::lonnet::perlvar{'lonDocRoot'}.'/res/') {    
         push @{$printChoices}, ["<b>".&mt('Problems')."</b> ".&mt('from current subdirectory')." <b><i>$subdir</i></b>", 'problems_from_directory', 'CHOOSE_FROM_SUBDIR'];          push @{$printChoices}, ["<b>".&mt('Problems')."</b> ".&mt('from current subdirectory')." <b><i>$subdir</i></b>", 'problems_from_directory', 'CHOOSE_FROM_SUBDIR'];
   
         my $f = '$filename';          my $f = '$filename';
Line 2279  CHOOSE_FROM_SUBDIR Line 2385  CHOOSE_FROM_SUBDIR
       <nextstate>CHOOSE_FROM_ANY_SEQUENCE</nextstate>        <nextstate>CHOOSE_FROM_ANY_SEQUENCE</nextstate>
       <filterfunc>return \$res->is_sequence;</filterfunc>        <filterfunc>return \$res->is_sequence;</filterfunc>
       <valuefunc>return $urlValue;</valuefunc>        <valuefunc>return $urlValue;</valuefunc>
         <choicefunc>return \$res->hasResource(\$res,sub { return !\$_[0]->is_sequence() },0,0);
    </choicefunc>
       <option text='Newpage' variable='FINISHPAGE' />        <option text='Newpage' variable='FINISHPAGE' />
       </resource>        </resource>
     </state>      </state>
Line 2309  CHOOSE_FROM_ANY_SEQUENCE Line 2417  CHOOSE_FROM_ANY_SEQUENCE
     my $startedTable = 0; # have we started an HTML table yet? (need      my $startedTable = 0; # have we started an HTML table yet? (need
                           # to close it later)                            # to close it later)
   
     if (($env{'request.role.adv'} and &Apache::lonnet::allowed('vgr',$env{'request.course.id'})) or       if (($perm{'pav'} and &Apache::lonnet::allowed('vgr',$env{'request.course.id'})) or 
  ($helper->{VARS}->{'construction'} eq '1')) {   ($helper->{VARS}->{'construction'} eq '1')) {
  addMessage("<hr width='33%' /><table><tr><td align='right'>Print: </td><td>");   addMessage("<hr width='33%' /><table><tr><td align='right'>Print: </td><td>");
         $paramHash = Apache::lonhelper::getParamHash();          $paramHash = Apache::lonhelper::getParamHash();
Line 2325  CHOOSE_FROM_ANY_SEQUENCE Line 2433  CHOOSE_FROM_ANY_SEQUENCE
  $startedTable = 1;   $startedTable = 1;
     }      }
   
     if ($env{'request.role.adv'}) {      if ($perm{'pav'}) {
  if (!$startedTable) {   if (!$startedTable) {
     addMessage("<hr width='33%' /><table><tr><td align='right'>LaTeX mode: </td><td>");      addMessage("<hr width='33%' /><table><tr><td align='right'>LaTeX mode: </td><td>");
     $startedTable = 1;      $startedTable = 1;
Line 2376  CHOOSE_FROM_ANY_SEQUENCE Line 2484  CHOOSE_FROM_ANY_SEQUENCE
     Apache::lonhelper::dropdown->new();      Apache::lonhelper::dropdown->new();
     addMessage("</td></tr>");      addMessage("</td></tr>");
   
             #  If advanced roles, then allow to show all foils.      addMessage("<tr><td align = 'right'>  </td><td>");
       $paramHash = Apache::lonhelper::getParamHash();
             if ($env{'request.role.adv'}) {      $paramHash->{'multichoice'} = "true";
  addMessage("<tr><td align = 'right'>  </td><td>");      $paramHash->{'allowempty'}  = "true";
  $paramHash = Apache::lonhelper::getParamHash();      $paramHash->{'variable'}   = "showallfoils";
  $paramHash->{'multichoice'} = "true";      $paramHash->{'CHOICES'} = [ ["Show all foils", "1"] ];
  $paramHash->{'allowempty'}  = "true";      Apache::lonhelper::choices->new();
  $paramHash->{'variable'}   = "showallfoils";      addMessage("</td></tr>");
  $paramHash->{'CHOICES'} = [ ["Show all foils", "1"] ];  
  Apache::lonhelper::choices->new();  
  addMessage("</td></tr>");  
             }  
   
  }   }
   
  if ($helper->{'VARS'}->{'construction'}) {    if ($helper->{'VARS'}->{'construction'}) { 
Line 2411  RNDSEED Line 2514  RNDSEED
     $helper->{'VARS'}->{'style_file'}=$env{'form.style_file_value'};      $helper->{'VARS'}->{'style_file'}=$env{'form.style_file_value'};
           
  }    } 
   
     }      }
   
   
Line 2438  RNDSEED Line 2540  RNDSEED
     }          }    
   
     $r->print($helper->display());      $r->print($helper->display());
       if ($helper->{STATE} eq 'START') {
    &recently_generated($r);
       }
     &Apache::lonhelper::unregisterHelperTags();      &Apache::lonhelper::unregisterHelperTags();
   
     return OK;      return OK;
Line 2543  STATEHTML Line 2647  STATEHTML
     $result .= "<select name='${var}.paper'>\n";      $result .= "<select name='${var}.paper'>\n";
   
     my %parmhash=&Apache::lonnet::coursedescription($env{'request.course.id'});      my %parmhash=&Apache::lonnet::coursedescription($env{'request.course.id'});
     my $DefaultPaperSize=$parmhash{'default_paper_size'};      my $DefaultPaperSize=lc($parmhash{'default_paper_size'});
       $DefaultPaperSize=~s/\s//g;
     if ($DefaultPaperSize eq '') {$DefaultPaperSize='letter';}      if ($DefaultPaperSize eq '') {$DefaultPaperSize='letter';}
     $i = 0;      $i = 0;
     foreach (@paperSize) {      foreach (@paperSize) {

Removed from v.1.386  
changed lines
  Added in v.1.400


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