Diff for /loncom/interface/lonprintout.pm between versions 1.511 and 1.516

version 1.511, 2008/01/14 10:43:12 version 1.516, 2008/03/03 10:50:26
Line 1 Line 1
 #  
 # The LearningOnline Network  # The LearningOnline Network
 # Printout  # Printout
 #  #
Line 39  use Apache::edit; Line 38  use Apache::edit;
 use Apache::File();  use Apache::File();
 use Apache::lonnavmaps;  use Apache::lonnavmaps;
 use Apache::admannotations;  use Apache::admannotations;
   use HTTP::Response;
   
 use LONCAPA::map();  use LONCAPA::map();
 use POSIX qw(strftime);  use POSIX qw(strftime);
Line 50  my %perm; Line 50  my %perm;
 my %parmhash;  my %parmhash;
 my $resources_printed;  my $resources_printed;
   
   # Global variables that describe errors in ssi calls detected  by ssi_with_retries.
   #
   
   my $ssi_error; # True if there was an ssi error.
   my $ssi_last_error_resource; # The resource URI that could not be fetched.
   my $ssi_last_error; # The error text from the server. (e.g. 500 Server timed out).
   
   #
   #  Our ssi max retry count.
   #
   
   my $ssi_retry_count = 5; # Some arbitrary value.
   
   
   
 # Fetch the contents of a resource, uninterpreted.  # Fetch the contents of a resource, uninterpreted.
 # This is used here to fetch a latex file to be included  # This is used here to fetch a latex file to be included
 # verbatim into the printout<  # verbatim into the printout<
Line 93  sub annotate { Line 108  sub annotate {
     return $result;      return $result;
 }  }
   
   
   #
   #   ssi_with_retries - Does the server side include of a resource.
   #                      if the ssi call returns an error we'll retry it up to
   #                      the number of times requested by the caller.
   #                      If we still have a proble, no text is appended to the
   #                      output and we set some global variables.
   #                      to indicate to the caller an SSI error occured.  
   #                      All of this is supposed to deal with the issues described
   #                      in LonCAPA BZ 5631 see:
   #                      http://bugs.lon-capa.org/show_bug.cgi?id=5631
   #                      by informing the user that this happened.
   #
   # Parameters:
   #   resource   - The resource to include.  This is passed directly, without
   #                interpretation to lonnet::ssi.
   #   form       - The form hash parameters that guide the interpretation of the resource
   #                
   #   retries    - Number of retries allowed before giving up completely.
   # Returns:
   #   On success, returns the rendered resource identified by the resource parameter.
   # Side Effects:
   #   The following global variables can be set:
   #    ssi_error                - If an unrecoverable error occured this becomes true.
   #                               It is up to the caller to initialize this to false
   #                               if desired.
   #    ssi_last_error_resource  - If an unrecoverable error occured, this is the value
   #                               of the resource that could not be rendered by the ssi
   #                               call.
   #    ssi_last_error           - The error string fetched from the ssi response
   #                               in the event of an error.
   #
   sub ssi_with_retries {
       my ($resource, $retries, %form) = @_;
   
   
       my ($content, $response) = &Apache::loncommon::ssi_with_retries($resource, $retries, %form);
       if (!$response->is_success) {
    $ssi_error               = 1;
    $ssi_last_error_resource = $resource;
    $ssi_last_error          = $response->code . " " . $response->message;
       }
   
       return $content;
   
   }
   
 #  #
 #   printf_style_subst  item format_string repl  #   printf_style_subst  item format_string repl
 #    #  
Line 743  sub character_chart { Line 805  sub character_chart {
     $result =~ s/&(hearts|\#9829);/\\ensuremath\{\\heartsuit\}/g;      $result =~ s/&(hearts|\#9829);/\\ensuremath\{\\heartsuit\}/g;
     $result =~ s/&(diams|\#9830);/\\ensuremath\{\\diamondsuit\}/g;      $result =~ s/&(diams|\#9830);/\\ensuremath\{\\diamondsuit\}/g;
 #   Chemically useful 'things' contributed by Hon Kie (bug 4652).  #   Chemically useful 'things' contributed by Hon Kie (bug 4652).
   
     $result =~ s/&\#8636;/\\ensuremath\{\\leftharpoonup\}/g;      $result =~ s/&\#8636;/\\ensuremath\{\\leftharpoonup\}/g;
     $result =~ s/&\#8637;/\\ensuremath\{\\leftharpoondown\}/g;      $result =~ s/&\#8637;/\\ensuremath\{\\leftharpoondown\}/g;
     $result =~ s/&\#8640;/\\ensuremath\{\\rightharpoonup\}/g;      $result =~ s/&\#8640;/\\ensuremath\{\\rightharpoonup\}/g;
Line 756  sub character_chart { Line 819  sub character_chart {
     $result =~ s/&\#8600;/\\ensuremath\{\\searrow\}/g;      $result =~ s/&\#8600;/\\ensuremath\{\\searrow\}/g;
     $result =~ s/&\#8601;/\\ensuremath\{\\swarrow\}/g;      $result =~ s/&\#8601;/\\ensuremath\{\\swarrow\}/g;
     $result =~ s/&\#8598;/\\ensuremath\{\\nwarrow\}/g;      $result =~ s/&\#8598;/\\ensuremath\{\\nwarrow\}/g;
   
       # Left/right quotations:
   
       $result =~ s/&(ldquo|#8220);/\`\`/g;
       $result =~ s/&(rdquo|#8221);/\'\'/g;
   
   
     return $result;      return $result;
 }  }
   
Line 775  my %page_formats= Line 845  my %page_formats=
      'legal' => {       'legal' => {
  'book' => {   'book' => {
      '1' => ['7.1 in','13 in',,'-0.57 in','-0.57 in','-0.5 in'],       '1' => ['7.1 in','13 in',,'-0.57 in','-0.57 in','-0.5 in'],
      '2' => ['3.16 in','13 in','-0.57 in','-0.57 in','-0.5 in']       '2' => ['3.66 in','13 in','-0.57 in','-0.57 in','-0.5 in']
  },   },
  'album' => {   'album' => {
      '1' => ['12 in','7.1 in',,'-0.57 in','-0.57 in','-0.5 in'],       '1' => ['12 in','7.1 in',,'-0.57 in','-0.57 in','-0.5 in'],
Line 1245  sub print_construction_sequence { Line 1315  sub print_construction_sequence {
  $form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};   $form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};
  $form{'rndseed'}=$rndseed;   $form{'rndseed'}=$rndseed;
  $resources_printed .=$urlp.':';   $resources_printed .=$urlp.':';
  $texversion=&Apache::lonnet::ssi($urlp,%form);   $texversion=&ssi_with_retries($urlp, $ssi_retry_count, %form);
     }      }
     if((($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||      if((($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||
  ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) &&    ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) && 
Line 1258  sub print_construction_sequence { Line 1328  sub print_construction_sequence {
  $answerform{'problem_split'}=$parmhash{'problem_stream_switch'};   $answerform{'problem_split'}=$parmhash{'problem_stream_switch'};
  if ($urlp=~/\/res\//) {$env{'request.state'}='published';}   if ($urlp=~/\/res\//) {$env{'request.state'}='published';}
  $resources_printed .= $urlp.':';   $resources_printed .= $urlp.':';
  my $answer=&Apache::lonnet::ssi($urlp,%answerform);   my $answer=&ssi_with_retries($urlp, $ssi_retry_count, %answerform);
  if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {   if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {
     $texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/;      $texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/;
  } else {   } else {
Line 1313  sub print_construction_sequence { Line 1383  sub print_construction_sequence {
 sub output_data {  sub output_data {
     my ($r,$helper,$rparmhash) = @_;      my ($r,$helper,$rparmhash) = @_;
     my %parmhash = %$rparmhash;      my %parmhash = %$rparmhash;
       $ssi_error = 0; # This will be set nonzero by failing ssi's.
     $resources_printed = '';      $resources_printed = '';
     my $do_postprocessing = 1;      my $do_postprocessing = 1;
     my $js = <<ENDPART;      my $js = <<ENDPART;
Line 1342  sub output_data { Line 1413  sub output_data {
 </script>  </script>
 ENDPART  ENDPART
   
   
   
     my $start_page  = &Apache::loncommon::start_page('Preparing Printout',$js);      my $start_page  = &Apache::loncommon::start_page('Preparing Printout',$js);
     my $msg = &mt('Please stand by while processing your print request, this may take some time ...');      my $msg = &mt('Please stand by while processing your print request, this may take some time ...');
   
Line 1375  ENDPART Line 1448  ENDPART
     my @print_array=();      my @print_array=();
     my @student_names=();      my @student_names=();
   
        
     #  Common settings for the %form has:      #  Common settings for the %form has:
     # In some cases these settings get overriddent by specific cases, but the      # In some cases these settings get overriddent by specific cases, but the
     # settings are common enough to make it worthwhile factoring them out      # settings are common enough to make it worthwhile factoring them out
Line 1412  ENDPART Line 1486  ENDPART
     $currentURL=$helper->{'VARS'}->{'postdata'};      $currentURL=$helper->{'VARS'}->{'postdata'};
     $cleanURL=&Apache::lonenc::check_decrypt($currentURL);      $cleanURL=&Apache::lonenc::check_decrypt($currentURL);
  } else {   } else {
   
             #prints resource from the construction space              #prints resource from the construction space
     $currentURL='/'.$helper->{'VARS'}->{'filename'};      $currentURL='/'.$helper->{'VARS'}->{'filename'};
     if ($currentURL=~/([^?]+)/) {$currentURL=$1;}      if ($currentURL=~/([^?]+)/) {$currentURL=$1;}
Line 1444  ENDPART Line 1519  ENDPART
  &Apache::lonxml::clear_problem_counter();   &Apache::lonxml::clear_problem_counter();
   
  $resources_printed .= $currentURL.':';   $resources_printed .= $currentURL.':';
  $texversion.=&Apache::lonnet::ssi($currentURL,%form);   $texversion.=&ssi_with_retries($currentURL,$ssi_retry_count, %form);
   
  #  Add annotations if required:   #  Add annotations if required:
           
Line 1465  ENDPART Line 1540  ENDPART
     $form{'problemtype'}='exam';      $form{'problemtype'}='exam';
  }   }
  $resources_printed .= $currentURL.':';   $resources_printed .= $currentURL.':';
  my $answer=&Apache::lonnet::ssi($currentURL,%form);   my $answer=&ssi_with_retries($currentURL,$ssi_retry_count, %form);
   
   
  if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {   if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {
Line 1526  ENDPART Line 1601  ENDPART
  $form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};   $form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};
  if ($currentURL=~/\/syllabus$/) {$currentURL=~s/\/res//;}   if ($currentURL=~/\/syllabus$/) {$currentURL=~s/\/res//;}
  $resources_printed .= $currentURL.':';   $resources_printed .= $currentURL.':';
  my $texversion=&Apache::lonnet::ssi($currentURL,%form);   my $texversion=&ssi_with_retries($currentURL, $ssi_retry_count, %form);
  if ($helper->{'VARS'}->{'PRINT_ANNOTATIONS'} eq 'yes') {   if ($helper->{'VARS'}->{'PRINT_ANNOTATIONS'} eq 'yes') {
     my $annotation = &annotate($currentURL);      my $annotation = &annotate($currentURL);
     $texversion    =~ s/(\\end{document})/$annotation$1/;      $texversion    =~ s/(\\end{document})/$annotation$1/;
Line 1607  ENDPART Line 1682  ENDPART
  && $urlp=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {   && $urlp=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {
  $resources_printed .= $urlp.':';   $resources_printed .= $urlp.':';
  &Apache::lonxml::remember_problem_counter();   &Apache::lonxml::remember_problem_counter();
  $texversion.=&Apache::lonnet::ssi($urlp,%form);   $texversion.=&ssi_with_retries($urlp, $ssi_retry_count, %form);
  if ($urlp=~/\.page$/) {   if ($urlp=~/\.page$/) {
     ($texversion,my $number_of_columns_page) = &page_cleanup($texversion);      ($texversion,my $number_of_columns_page) = &page_cleanup($texversion);
     if ($number_of_columns_page > $number_of_columns) {$number_of_columns=$number_of_columns_page;}       if ($number_of_columns_page > $number_of_columns) {$number_of_columns=$number_of_columns_page;} 
Line 1624  ENDPART Line 1699  ENDPART
     $resources_printed .= $urlp.':';      $resources_printed .= $urlp.':';
   
     &Apache::lonxml::restore_problem_counter();      &Apache::lonxml::restore_problem_counter();
     my $answer=&Apache::lonnet::ssi($urlp,%answerform);      my $answer=&ssi_with_retries($urlp, $ssi_retry_count, %answerform);
   
     if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {      if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {
  $texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/;   $texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/;
Line 1679  ENDPART Line 1754  ENDPART
  $form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};   $form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};
  if ($urlp=~/\/syllabus$/) {$urlp=~s/\/res//;}   if ($urlp=~/\/syllabus$/) {$urlp=~s/\/res//;}
  $resources_printed .= $urlp.':';   $resources_printed .= $urlp.':';
  my $texversion=&Apache::lonnet::ssi($urlp,%form);   my $texversion=&ssi_with_retries($urlp, $ssi_retry_count, %form);
  if ($helper->{'VARS'}->{'PRINT_ANNOTATIONS'} eq 'yes') {   if ($helper->{'VARS'}->{'PRINT_ANNOTATIONS'} eq 'yes') {
     my $annotation = &annotate($urlp);      my $annotation = &annotate($urlp);
     $texversion =~ s/(\\end{document)/$annotation$1/;      $texversion =~ s/(\\end{document)/$annotation$1/;
Line 1917  ENDPART Line 1992  ENDPART
     $urlp =~ s|^$Apache::lonnet::perlvar{'lonDocRoot'}||;      $urlp =~ s|^$Apache::lonnet::perlvar{'lonDocRoot'}||;
  }   }
  $resources_printed .= $urlp.':';   $resources_printed .= $urlp.':';
  my $texversion=&Apache::lonnet::ssi($urlp,%form);   my $texversion=&ssi_with_retries($urlp, $ssi_retry_count, %form);
  if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||   if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||
    ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) {     ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) {
     #  Don't permanently pervert %form:      #  Don't permanently pervert %form:
Line 1927  ENDPART Line 2002  ENDPART
     $answerform{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};      $answerform{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};
     $answerform{'rndseed'}=$rndseed;      $answerform{'rndseed'}=$rndseed;
     $resources_printed .= $urlp.':';      $resources_printed .= $urlp.':';
     my $answer=&Apache::lonnet::ssi($urlp,%answerform);      my $answer=&ssi_with_retries($urlp, $ssi_retry_count, %answerform);
     if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {      if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {
  $texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/;   $texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/;
     } else {      } else {
Line 1944  ENDPART Line 2019  ENDPART
  $texversion.='\vskip 1 mm '.$answer.'\end{document}';   $texversion.='\vskip 1 mm '.$answer.'\end{document}';
     }      }
  }   }
                 #this chunck is responsible for printing the path to problem                  #this chunk is responsible for printing the path to problem
   
  my $newurlp=$urlp;   my $newurlp=$urlp;
  if ($newurlp=~/~/) {$newurlp=~s|\/~([^\/]+)\/|\/home\/$1\/public_html\/|;}   if ($newurlp=~/~/) {$newurlp=~s|\/~([^\/]+)\/|\/home\/$1\/public_html\/|;}
  $newurlp=&path_to_problem($newurlp,$LaTeXwidth);   $newurlp=&path_to_problem($newurlp,$LaTeXwidth);
Line 1984  ENDPART Line 2060  ENDPART
  #}   #}
     }      }
   
 #-- writing .tex file in prtspool       # Set URLback if this is a construction space print so we can provide
     my $temp_file;      # a link to the resource being edited.
     my $identifier = &Apache::loncommon::get_cgi_id();      #
     my $filename = "/home/httpd/prtspool/$env{'user.name'}_$env{'user.domain'}_printout_$identifier.tex";  
     if (!($#print_array>0)) {   
  unless ($temp_file = Apache::File->new('>'.$filename)) {  
     $r->log_error("Couldn't open $filename for output $!");  
     return SERVER_ERROR;   
  }  
  print $temp_file $result;  
  my $begin=index($result,'\begin{document}',0);  
  my $inc=substr($result,0,$begin+16);  
     } else {  
  my $begin=index($result,'\begin{document}',0);  
  my $inc=substr($result,0,$begin+16);  
         for (my $i=0;$i<=$#print_array;$i++) {  
     if ($i==0) {  
  $print_array[$i]=$result;  
     } else {  
  $print_array[$i].='\end{document}';  
  $print_array[$i] =   
     &latex_corrections($number_of_columns,$print_array[$i],  
        $selectionmade,   
        $helper->{'VARS'}->{'ANSWER_TYPE'});  
   
  my $anobegin=index($print_array[$i],'\setcounter{page}',0);  
  substr($print_array[$i],0,$anobegin)='';  
  $print_array[$i]=$inc.$print_array[$i];  
     }  
     my $temp_file;  
     my $newfilename=$filename;  
     my $num=$i+1;  
     $newfilename =~s/\.tex$//;   
     $newfilename=sprintf("%s_%03d.tex",$newfilename, $num);  
     unless ($temp_file = Apache::File->new('>'.$newfilename)) {  
  $r->log_error("Couldn't open $newfilename for output $!");  
  return SERVER_ERROR;   
     }  
     print $temp_file $print_array[$i];  
  }  
     }  
     my $student_names='';  
     if ($#print_array>0) {  
  for (my $i=0;$i<=$#print_array;$i++) {  
     $student_names.=$student_names[$i].'_ENDPERSON_';  
  }  
     } else {  
  if ($#student_names>-1) {  
     $student_names=$student_names[0].'_ENDPERSON_';  
  } else {  
     my $fullname = &get_name($env{'user.name'},$env{'user.domain'});  
     $student_names=join(':',$env{'user.name'},$env{'user.domain'},  
  $env{'request.course.sec'},$fullname).  
     '_ENDPERSON_'.'_END_';  
  }  
     }  
   
     my $URLback=''; #link to original document      my $URLback=''; #link to original document
     if ($helper->{'VARS'}->{'construction'} eq '1') {      if ($helper->{'VARS'}->{'construction'} eq '1') {
Line 2050  ENDPART Line 2073  ENDPART
     $URLback=~s|^/~|/priv/|;      $URLback=~s|^/~|/priv/|;
  }   }
     }      }
     # logic for now is too complex to trace if this has been defined  
     #  yet.  
     my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};  
     my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};  
     &Apache::lonnet::appenv('cgi.'.$identifier.'.file'   => $filename,  
                             'cgi.'.$identifier.'.layout'  => $laystyle,  
                             'cgi.'.$identifier.'.numcol'  => $numberofcolumns,  
     'cgi.'.$identifier.'.paper'  => $papersize,  
                             'cgi.'.$identifier.'.selection' => $selectionmade,  
     'cgi.'.$identifier.'.tableofcontents' => $helper->{'VARS'}->{'TABLE_CONTENTS'},  
     'cgi.'.$identifier.'.tableofindex' => $helper->{'VARS'}->{'TABLE_INDEX'},  
     'cgi.'.$identifier.'.role' => $perm{'pav'},  
                             'cgi.'.$identifier.'.numberoffiles' => $#print_array,  
                             'cgi.'.$identifier.'.studentnames' => $student_names,  
                             'cgi.'.$identifier.'.backref' => $URLback,);  
     &Apache::lonnet::appenv("cgi.$identifier.user"    => $env{'user.name'},  
     "cgi.$identifier.domain"  => $env{'user.domain'},  
     "cgi.$identifier.courseid" => $cnum,   
     "cgi.$identifier.coursedom" => $cdom,   
     "cgi.$identifier.resources" => $resources_printed);  
   
     my $end_page = &Apache::loncommon::end_page();  
     $r->print(<<FINALEND);      # If there's been an unrecoverable SSI error, report it to the user
       # otherwise, we can write the tex file.
       #
   
       if ($ssi_error) {
    my $end_page = &Apache::loncommon::end_page();
    $r->print(<<ERROR_END);
   <br />
   <h2>An unrecoverable error occured:</h2>
   <p>
     I was not able to render one of the print resources ($ssi_last_error_resource) 
   due to an unrecoverable error communicating with a server:
   <br />
   $ssi_last_error;
   <br />
   </p>
   <p>
   I recommend that you try printing again later as this may mean the server was just 
   temporarily unavailable, or is down for maintenance.  If this error persists, then
   please contact your LonCAPA support folks for assistance and diagnosis. 
   <br />
   <br />
   We apologize for the inconvenience.
   </p>
   $end_page
   ERROR_END
       } else {
   
   #-- writing .tex file in prtspool 
    my $temp_file;
    my $identifier = &Apache::loncommon::get_cgi_id();
    my $filename = "/home/httpd/prtspool/$env{'user.name'}_$env{'user.domain'}_printout_$identifier.tex";
    if (!($#print_array>0)) { 
       unless ($temp_file = Apache::File->new('>'.$filename)) {
    $r->log_error("Couldn't open $filename for output $!");
    return SERVER_ERROR; 
       }
       print $temp_file $result;
       my $begin=index($result,'\begin{document}',0);
       my $inc=substr($result,0,$begin+16);
    } else {
       my $begin=index($result,'\begin{document}',0);
       my $inc=substr($result,0,$begin+16);
       for (my $i=0;$i<=$#print_array;$i++) {
    if ($i==0) {
       $print_array[$i]=$result;
    } else {
       $print_array[$i].='\end{document}';
       $print_array[$i] = 
    &latex_corrections($number_of_columns,$print_array[$i],
      $selectionmade, 
      $helper->{'VARS'}->{'ANSWER_TYPE'});
       
       my $anobegin=index($print_array[$i],'\setcounter{page}',0);
       substr($print_array[$i],0,$anobegin)='';
       $print_array[$i]=$inc.$print_array[$i];
    }
    my $temp_file;
    my $newfilename=$filename;
    my $num=$i+1;
    $newfilename =~s/\.tex$//; 
    $newfilename=sprintf("%s_%03d.tex",$newfilename, $num);
    unless ($temp_file = Apache::File->new('>'.$newfilename)) {
       $r->log_error("Couldn't open $newfilename for output $!");
       return SERVER_ERROR; 
    }
    print $temp_file $print_array[$i];
       }
       
    }
    my $student_names='';
    if ($#print_array>0) {
       for (my $i=0;$i<=$#print_array;$i++) {
    $student_names.=$student_names[$i].'_ENDPERSON_';
       }
    } else {
       if ($#student_names>-1) {
    $student_names=$student_names[0].'_ENDPERSON_';
       } else {
    my $fullname = &get_name($env{'user.name'},$env{'user.domain'});
    $student_names=join(':',$env{'user.name'},$env{'user.domain'},
       $env{'request.course.sec'},$fullname).
    '_ENDPERSON_'.'_END_';
       }
    }
   
    # logic for now is too complex to trace if this has been defined
    #  yet.
    my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
    my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
    &Apache::lonnet::appenv('cgi.'.$identifier.'.file'   => $filename,
    'cgi.'.$identifier.'.layout'  => $laystyle,
    'cgi.'.$identifier.'.numcol'  => $numberofcolumns,
    'cgi.'.$identifier.'.paper'  => $papersize,
    'cgi.'.$identifier.'.selection' => $selectionmade,
    'cgi.'.$identifier.'.tableofcontents' => $helper->{'VARS'}->{'TABLE_CONTENTS'},
    'cgi.'.$identifier.'.tableofindex' => $helper->{'VARS'}->{'TABLE_INDEX'},
    'cgi.'.$identifier.'.role' => $perm{'pav'},
    'cgi.'.$identifier.'.numberoffiles' => $#print_array,
    'cgi.'.$identifier.'.studentnames' => $student_names,
    'cgi.'.$identifier.'.backref' => $URLback,);
    &Apache::lonnet::appenv("cgi.$identifier.user"    => $env{'user.name'},
    "cgi.$identifier.domain"  => $env{'user.domain'},
    "cgi.$identifier.courseid" => $cnum, 
    "cgi.$identifier.coursedom" => $cdom, 
    "cgi.$identifier.resources" => $resources_printed);
   
    my $end_page = &Apache::loncommon::end_page();
    $r->print(<<FINALEND);
 <br />  <br />
 <meta http-equiv="Refresh" content="0; url=/cgi-bin/printout.pl?$identifier" />  <meta http-equiv="Refresh" content="0; url=/cgi-bin/printout.pl?$identifier" />
 <a href="/cgi-bin/printout.pl?$identifier">Continue</a>  <a href="/cgi-bin/printout.pl?$identifier">Continue</a>
 $end_page  $end_page
 FINALEND  FINALEND
     }                                       # endif ssi errors.
 }  }
   
   
Line 2275  sub handler { Line 2387  sub handler {
     if(-e $conversion_queuefile) {      if(-e $conversion_queuefile) {
  unlink $conversion_queuefile;   unlink $conversion_queuefile;
     }      }
       
   
     &output_data($r,$helper,\%parmhash);      &output_data($r,$helper,\%parmhash);
     return OK;      return OK;
 }   } 
Line 2462  sub printHelper { Line 2576  sub printHelper {
  $helper->{VARS}->{'curseed'}=$env{'form.curseed'};   $helper->{VARS}->{'curseed'}=$env{'form.curseed'};
     }      }
     if (!$helper->{VARS}->{'probstatus'} && $env{'form.problemtype'}) {      if (!$helper->{VARS}->{'probstatus'} && $env{'form.problemtype'}) {
  $helper->{VARS}->{'probstatus'}=$env{'form.problemtype'};   $helper->{VARS}->{'probstatus'}=$env{'form.problemstatus'};
     }      }
   
     my $userCanSeeHidden = Apache::lonnavmaps::advancedUser();      my $userCanSeeHidden = Apache::lonnavmaps::advancedUser();
Line 3088  CHOOSE_FROM_ANY_SEQUENCE Line 3202  CHOOSE_FROM_ANY_SEQUENCE
      <message></td></tr></message>       <message></td></tr></message>
 RNDSEED  RNDSEED
             &Apache::lonxml::xmlparse($r, 'helper', $xmlfrag);              &Apache::lonxml::xmlparse($r, 'helper', $xmlfrag);
   
   
       addMessage("<tr><td>Problem Type:</td><td>");
       $paramHash = &Apache::lonhelper::getParamHash();
       $paramHash->{'variable'} = 'probstatus'; # Already declared:
       #
       # Initial value from construction space:
       #
       if (!$helper->{VARS}->{'probstatus'} && $env{'form.problemtype'}) {
    $helper->{VARS}->{'probstatus'} = $env{'form.problemtype'}; # initial value
       }
       $paramHash->{CHOICES} = [
        ['Homework problem',     'problem'],
        ['Exam Problem', 'exam'],
        ['Survey question',      'survey']];
       Apache::lonhelper::dropdown->new();
       addMessage("</td></tr>"); 
   
  }    } 
     }      }
   

Removed from v.1.511  
changed lines
  Added in v.1.516


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