Diff for /loncom/interface/lonprintout.pm between versions 1.143 and 1.144

version 1.143, 2003/05/02 15:48:26 version 1.144, 2003/05/02 19:18:39
Line 1821  sub printHelper { Line 1821  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', 'FINAL'];      push @{$printChoices}, ["<b>$resourceTitle</b> (exactly what was on the screen)", 'current_document', 'PAGESIZE'];
   
     # If we're in a sequence...      # If we're in a sequence...
     if ($helper->{VARS}->{'postdata'} =~ /\/res\//) {      if ($helper->{VARS}->{'postdata'} =~ /\/res\//) {
Line 1837  sub printHelper { Line 1837  sub printHelper {
         my $helperFragment = <<HELPERFRAGMENT;          my $helperFragment = <<HELPERFRAGMENT;
   <state name="CHOOSE_PROBLEMS" title="Select Problems">    <state name="CHOOSE_PROBLEMS" title="Select Problems">
     <message>Select problems to print:</message>      <message>Select problems to print:</message>
     <resource variable="RESOURCES" multichoice="1">      <resource variable="RESOURCES" multichoice="1" toponly='1'>
       <nextstate>FINAL</nextstate>        <nextstate>PAGESIZE</nextstate>
       <filterfunc>return $isProblemOrMap</filterfunc>        <filterfunc>return $isProblemOrMap</filterfunc>
       <choicefunc>return $isProblem</choicefunc>        <choicefunc>return $isProblem</choicefunc>
       <mapurl>$map</mapurl>        <mapurl>$map</mapurl>
Line 1848  sub printHelper { Line 1848  sub printHelper {
   
   <state name="CHOOSE_PROBLEMS_HTML" title="Select Resources">    <state name="CHOOSE_PROBLEMS_HTML" title="Select Resources">
     <message>Select resources to print:</message>      <message>Select resources to print:</message>
     <resource variable="RESOURCES" multichoice="1">      <resource variable="RESOURCES" multichoice="1" toponly='1'>
       <nextstate>FINAL</nextstate>        <nextstate>PAGESIZE</nextstate>
       <choicefunc>return $isNotMap;</choicefunc>        <choicefunc>return $isNotMap;</choicefunc>
       <mapurl>$map</mapurl>        <mapurl>$map</mapurl>
       <valuefunc>return $symb</valuefunc>        <valuefunc>return $symb</valuefunc>
Line 1873  HELPERFRAGMENT Line 1873  HELPERFRAGMENT
   <state name="ALL_PROBLEMS" title="Select Problems">    <state name="ALL_PROBLEMS" title="Select Problems">
     <message>Select problems to print:</message>      <message>Select problems to print:</message>
     <resource variable="RESOURCES" multichoice="1">      <resource variable="RESOURCES" multichoice="1">
       <nextstate>FINAL</nextstate>        <nextstate>PAGESIZE</nextstate>
       <filterfunc>return $isProblemOrMap</filterfunc>        <filterfunc>return $isProblemOrMap</filterfunc>
       <choicefunc>return $isProblem</choicefunc>        <choicefunc>return $isProblem</choicefunc>
       <valuefunc>return $symb</valuefunc>        <valuefunc>return $symb</valuefunc>
Line 1882  HELPERFRAGMENT Line 1882  HELPERFRAGMENT
   
   <state name="CHOOSE_STUDENTS" title="Choose Students">    <state name="CHOOSE_STUDENTS" title="Choose Students">
     <message>Select the students you wish to print the problems for:</message>      <message>Select the students you wish to print the problems for:</message>
     <student multichoice='1' variable="STUDENTS" nextstate="FINAL" />      <student multichoice='1' variable="STUDENTS" nextstate="PAGESIZE" />
     </state>      </state>
 CHOOSE_STUDENTS  CHOOSE_STUDENTS
     }      }
Line 1896  CHOOSE_STUDENTS Line 1896  CHOOSE_STUDENTS
   <state name="CHOOSE_FROM_SUBDIR" title="Select Files">    <state name="CHOOSE_FROM_SUBDIR" title="Select Files">
     <message>Select problems you wish to print from <b>$subdir</b></message>      <message>Select problems you wish to print from <b>$subdir</b></message>
     <files variable="FILES" multichoice='1'>      <files variable="FILES" multichoice='1'>
       <nextstate>FINAL</nextstate>        <nextstate>PAGESIZE</nextstate>
       <filechoice>return '$subdir';</filechoice>        <filechoice>return '$subdir';</filechoice>
 CHOOSE_FROM_SUBDIR  CHOOSE_FROM_SUBDIR
                   
Line 1922  CHOOSE_FROM_SUBDIR Line 1922  CHOOSE_FROM_SUBDIR
     Apache::lonhelper::choices->new();      Apache::lonhelper::choices->new();
     Apache::lonprintout::page_format_state->new("FORMAT");      Apache::lonprintout::page_format_state->new("FORMAT");
   
       # Generate the PAGESIZE state which will offer the user the margin
       # choices if they select one column
       Apache::lonhelper::state->new("PAGESIZE", "Set Margins");
       Apache::lonprintout::page_size_state->new('pagesize', 'FORMAT', 'FINAL');
   
   
     $helper->process();      $helper->process();
   
     # MANUAL BAILOUT CONDITION:      # MANUAL BAILOUT CONDITION:
Line 1999  sub render { Line 2005  sub render {
     my $helper = Apache::lonhelper::getHelper();      my $helper = Apache::lonhelper::getHelper();
     my $result = '';      my $result = '';
     my $var = $self->{'variable'};      my $var = $self->{'variable'};
     my $curVal = $helper->{VARS}->{$var};  
   
     my ($layout, $cols, $paper) = split(/\|/, $curVal);  
   
     $result .= <<STATEHTML;      $result .= <<STATEHTML;
   
Line 2023  STATEHTML Line 2026  STATEHTML
   
     my $i;      my $i;
     for ($i = 1; $i <= $maxColumns; $i++) {      for ($i = 1; $i <= $maxColumns; $i++) {
         if ($i == $cols) {          if ($i == 2) {
             $result .= "<option value='$i' selected>$i</option>\n";              $result .= "<option value='$i' selected>$i</option>\n";
         } else {          } else {
             $result .= "<option value='$i'>$i</option>\n";              $result .= "<option value='$i'>$i</option>\n";
Line 2035  STATEHTML Line 2038  STATEHTML
   
     $i = 0;      $i = 0;
     foreach (@paperSize) {      foreach (@paperSize) {
         if ($paper == $i) {          if ($i == 0) {
             $result .= "<option selected value='$i'>" . $paperSize[$i] . "</option>\n";              $result .= "<option selected value='$i'>" . $paperSize[$i] . "</option>\n";
         } else {          } else {
             $result .= "<option value='$i'>" . $paperSize[$i] . "</option>\n";              $result .= "<option value='$i'>" . $paperSize[$i] . "</option>\n";
Line 2060  sub postprocess { Line 2063  sub postprocess {
   
 1;  1;
   
   package Apache::lonprintout::page_size_state;
   
   =pod
   
   =head1 Helper element: page_size_state
   
   See lonhelper.pm documentation for discussion of the helper framework.
   
   Apache::lonprintout::page_size_state is an element that gives the 
   user the opportunity to further refine the page settings if they
   select a single-column page.
   
   page_size_state is always directly invoked in lonprintout.pm, so there
   is no tag interface. You actually pass parameters to the constructor.
   
   =over 4
   
   =item * B<new>(varName): varName is where the print information will be stored in the format FIXME.
   
   =back
   
   =cut
   
   use Apache::lonhelper;
   
   no strict;
   @ISA = ("Apache::lonhelper::element");
   use strict;
   
   
   
   sub new { 
       my $self = Apache::lonhelper::element->new();
   
       shift; # disturbs me (probably prevents subclassing) but works (drops
              # package descriptor)... - Jeremy
   
       $self->{'variable'} = shift;
       my $helper = Apache::lonhelper::getHelper();
       $helper->declareVar($self->{'variable'});
   
       # The variable name of the format element, so we can look into 
       # $helper->{VARS} to figure out whether the columns are one or two
       $self->{'formatvar'} = shift;
   
       # The state to transition to after selection, or after discovering
       # the cols are not set to 1
       $self->{NEXTSTATE} = shift;
       bless($self);
       return $self;
   }
   
   sub render {
       my $self = shift;
       my $helper = Apache::lonhelper::getHelper();
       my $result = '';
       my $var = $self->{'variable'};
   
       if (defined $self->{ERROR_MSG}) {
           $result .= '<br /><font color="#FF0000">' . $self->{ERROR_MSG} . '</font><br />';
       }
   
       $result .= <<ELEMENTHTML;
   
   <p>How should the column be formatted?</p>
   
   <table cellpadding='3'>
     <tr>
       <td align='right'><b>Width</b>:</td>
       <td align='left'><input type='text' name='$var.width' value='18' size='4'></td>
       <td align='left'>
         <select name='$var.widthunit'>
           <option>cm</option><option>in</option>
         </select>
       </td>
     </tr>
     <tr>
       <td align='right'><b>Height</b>:</td>
       <td align='left'><input type='text' name="$var.height" value="25.9" size='4'></td>
       <td align='left'>
         <select name='$var.heightunit'>
           <option>cm</option><option>in</option>
         </select>
       </td>
     </tr>
     <tr>
       <td align='right'><b>Left margin</b>:</td>
       <td align='left'><input type='text' name='$var.lmargin' value='-1.5' size='4'></td>
       <td align='left'>
         <select name='$var.heightunit'>
           <option>cm</option><option>in</option>
         </select>
       </td>
     </tr>
   </table>
   
   <p>Hint: Some instructors like to leave scratch space for the student by
   making the width much smaller then the width of the page.</p>
   
   ELEMENTHTML
   
       return $result;
   }
   
   # If the user didn't select 1 column, skip this state.
   sub preprocess {
       my $self = shift;
       my $helper = Apache::lonhelper::getHelper();
   
       my $format = $helper->{VARS}->{$self->{'formatvar'}};
       if (substr($format, 2, 1) ne '1') {
           $helper->changeState($self->{NEXTSTATE});
       }
      
       return 1;
   }
   
   sub postprocess {
       my $self = shift;
   
       my $var = $self->{'variable'};
       my $helper = Apache::lonhelper->getHelper();
       my $width = $helper->{VARS}->{$var .'.width'} = $ENV{"form.${var}.width"}; 
       my $height = $helper->{VARS}->{$var .'.height'} = $ENV{"form.${var}.height"}; 
       my $lmargin = $helper->{VARS}->{$var .'.lmargin'} = $ENV{"form.${var}.lmargin"}; 
       $helper->{VARS}->{$var .'.widthunit'} = $ENV{"form.${var}.widthunit"}; 
       $helper->{VARS}->{$var .'.heightunit'} = $ENV{"form.${var}.heightunit"}; 
       $helper->{VARS}->{$var .'.lmarginunit'} = $ENV{"form.${var}.lmarginunit"}; 
   
       my $error = '';
   
       # /^-?[0-9]+(\.[0-9]*)?$/ -> optional minus, at least on digit, followed 
       # by an optional period, followed by digits, ending the string
   
       if ($width !~  /^-?[0-9]+(\.[0-9]*)?$/) {
           $error .= "Invalid width; please type only a number.<br />\n";
       }
       if ($height !~  /^-?[0-9]+(\.[0-9]*)?$/) {
           $error .= "Invalid height; please type only a number.<br />\n";
       }
       if ($lmargin !~  /^-?[0-9]+(\.[0-9]*)?$/) {
           $error .= "Invalid left margin; please type only a number.<br />\n";
       }
   
       if (!$error) {
           Apache::lonhelper::getHelper()->changeState($self->{NEXTSTATE});
           return 1;
       } else {
           $self->{ERROR_MSG} = $error;
           return 0;
       }
   }
   
   
   
 __END__  __END__
   

Removed from v.1.143  
changed lines
  Added in v.1.144


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