Diff for /loncom/interface/lonprintout.pm between versions 1.118 and 1.119

version 1.118, 2003/02/19 15:14:54 version 1.119, 2003/02/20 22:11:42
Line 238  sub problem_choice_menu { Line 238  sub problem_choice_menu {
     $subdirtoprint =~ s/\/[^\/]+$//;      $subdirtoprint =~ s/\/[^\/]+$//;
     my @list_of_files = ();      my @list_of_files = ();
     my @content_directory = ();      my @content_directory = ();
       $r->print("Subdir: " . $subdirtoprint . "<br />");
     if ($subdirtoprint =~ m|/home/([^/]+)/public_html|) {      if ($subdirtoprint =~ m|/home/([^/]+)/public_html|) {
  #localmachine CSTR space   #localmachine CSTR space
  my $user=$1;   my $user=$1;
Line 1216  sub handler { Line 1217  sub handler {
   
     my $r = shift;      my $r = shift;
   
     # not sure where the form.* was getting processed.  
     Apache::loncommon::get_unprocessed_cgi($ENV{QUERY_STRING});  
   
     # A hook for me to work without disturbing Alex.      # A hook for me to work without disturbing Alex.
     if ($ENV{'form.jeremy'}) {      if ($ENV{'form.jeremy'}) {
         printWizard($r);          printWizard($r);
Line 1310  sub printWizard { Line 1308  sub printWizard {
   
     my ($resourceTitle,$sequenceTitle,$mapTitle) = &details_for_menu;      my ($resourceTitle,$sequenceTitle,$mapTitle) = &details_for_menu;
   
     my $wizard = Apache::lonwizard->new("Printing Wizard");      my $wizard = Apache::lonwizard->new("Printing Wizard", $ENV{QUERY_STRING});
     # PRINT_TYPE: What the user wants to print (current docs,      # PRINT_TYPE: What the user wants to print (current docs,
     #  whole sequence, etc.      #  whole sequence, etc.
     $wizard->declareVars(['PRINT_TYPE']);      $wizard->declareVars(['PRINT_TYPE', 'FORMAT', 'postdata', 'url',
                             'symb', 'RESOURCES', 'FILES']);
   
       # Extract map
       my $symb = $wizard->{VARS}->{'symb'};
       my ($map, $id, $url) = split(/__/, $symb);
   
       my $subdir = &Apache::lonnet::filelocation("", $ENV{'form.url'});
   
       # "Delete everything after the last slash."
       $subdir =~ s|/[^/]+$||;
   
       # This really ought to be in some repository in loncommon or
       # something where it can just be grabbed.
       my $problemFilter = sub { 
           my $name = shift;
           return $name =~ m/^[^\.]+\.(problem|exam|quiz|assess|survey|form|library)$/;
       };
   
     my $subdir = $ENV{'form.postdata'};  
     $subdir =~ s|http://[^/]+||;  
     $subdir =~ m/\/([^\/]+)$/;  
     $subdir =~ s/\Q$1\E//;  
   
     # This code also shows up above... which is prefered? Is one  
     # right for this context?  
     #my $subdir = &Apache::lonnet::filelocation("",$ENV{'form.url'});  
     #$subdir =~ s/\/[^\/]+$//;  
       
     Apache::lonwizard::switch_state->new($wizard, "START", "Selecting Resources to Print", "PRINT_TYPE", [      Apache::lonwizard::switch_state->new($wizard, "START", "Selecting Resources to Print", "PRINT_TYPE", [
            ['current_document', "<b>$resourceTitle</b> (exactly what was on the screen)", 'CHOOSE_FORMAT'],             ['current_document', "<b>$resourceTitle</b> (exactly what was on the screen)", 'CHOOSE_FORMAT'],
            ['map_problems', "Problems from <b>$sequenceTitle</b>", 'CHOOSE_FORMAT'],             ['map_problems', "Problems from <b>$sequenceTitle</b>", 'CHOOSE_PROBLEMS'],
            ['map_problems_pages', "All of <b>$sequenceTitle</b>", 'CHOOSE_FORMAT'],             ['map_problems_pages', "Problems and pages from <b>$sequenceTitle</b>", 'CHOOSE_PROBLEMS_HTML'],
            ['problems_for_students', "Problems from <b>$sequenceTitle</b> for selected students", 'CHOOSE_FORMAT'],             ['problems_for_students', "Problems from <b>$sequenceTitle</b> for selected students", 'CHOOSE_FORMAT'],
            ['problems_from_directory', "Problems from <b>$subdir</b>", 'CHOOSE_FORMAT'] ],             ['problems_from_directory', "Problems from <b>$subdir</b>", 'CHOOSE_FROM_SUBDIR'] ],
            "What do you want to print?");             "What do you want to print?");
           Apache::lonwizard::resource_multichoice->new($wizard, "CHOOSE_PROBLEMS", 'Select Problems', "Select problems to print from <b>$sequenceTitle</b>:", '', 'CHOOSE_FORMAT', 'RESOURCES', sub {my $res = shift; return $res->is_problem()}, undef, $map);
       Apache::lonwizard::resource_multichoice->new($wizard, "CHOOSE_PROBLEMS_HTML", 'Select Resources', "Select resources to print from <b>$sequenceTitle</b>:", '', "CHOOSE_FORMAT", 'RESOURCES', sub {my $res = shift; return !$res->is_map()}, undef, $map);
       Apache::lonwizard::choose_files->new($wizard, "CHOOSE_FROM_SUBDIR", "Select Files","Select problems you wish to print from <b>$subdir</b>:", '', 'CHOOSE_FORMAT', 'FILES', $subdir, $problemFilter);
       Apache::lonprintout::page_format_state->new($wizard, "CHOOSE_FORMAT", "Page Format", "FORMAT", "FINAL");
   
     $r->print($wizard->display());      $r->print($wizard->display());
   
     untie %hash;      untie %hash;
Line 1343  sub printWizard { Line 1352  sub printWizard {
   
   
 1;  1;
   
   package Apache::lonprintout::page_format_state;
   
   =pod
   
   =head1 Wizard state: page_format_state
   
   See lonwizard.pm documentation for discussion of the wizard framework.
   
   Apache::lonprintout::page_format_state is a state that gives the user an opportunity to select the page layout they wish to print with: Number of columns, portrait/landscape, and paper size. If you want to change the paper size choices, change the @paperSize array contents in this package.
   
   =over 4
   
   =item * B<new>(parentLonWizReference, stateName, stateTitle, varName, nextState): varName is where the print information will be stored in the format FIXME. nextState is the state that follows this one.
   
   =back
   
   =cut
   
   use Apache::lonwizard;
   
   no strict;
   @ISA = ("Apache::lonwizard::state");
   use strict;
   
   my $maxColumns = 2;
   my @paperSize = ("Letter [8 1/2x11 in]", "Legal [8 1/2x14 in]", 
                    "Ledger/Tabloid [11x17 in]", "Executive [7 1/2x10 in]",
                    "A2 [420x594 mm]", "A3 [297x420 mm]", "A4 [210x297 mm]", 
                    "A5 [148x210 mm]", "A6 [105x148 mm]" );
   
   # Tentative format: Orientation (L = Landscape, P = portrait) | Colnum |
   #                   Paper type
   
   sub new { 
       my $proto = shift;
       my $class = ref($proto) || $proto;
       my $self = bless $proto->SUPER::new(shift, shift, shift);
   
       $self->{VAR_NAME} = shift;
       $self->{NEXT_STATE} = shift;
       return $self;
   }
   
   sub postprocess {
       my $self = shift;
       my $wizard = $self->{WIZARD};
   
       # We have to manually collect the value and store it in the 
       # wizard variable
       my $result = $ENV{'form.' . $self->{VAR_NAME} . '.layout'} . '|';
       $result .= $ENV{'form.' . $self->{VAR_NAME} . '.cols'} . '|';
       $result .= $ENV{'form.' . $self->{VAR_NAME} . '.paper'};
       
       $wizard->setVar($self->{VAR_NAME}, $result);
       $wizard->changeState($self->{NEXT_STATE});
   }
   
   sub render {
       my $self = shift;
       my $wizard = $self->{WIZARD};
       my $result = '';
       my $var = $self->{VAR_NAME};
       my $curVal = $self->{WIZARD}->{VARS}->{$var};
   
       my ($layout, $cols, $paper) = split(/\|/, $curVal);
   
       my $landscapeChecked = ($layout ne "L")? '' : 'checked ';
       my $portraitChecked = $landscapeChecked ? '' : 'checked ';
   
       $result .= <<STATEHTML;
   
   <p>How should the printing be formatted?</p>
   <table cellpadding="3">
     <tr>
       <td align="center"><b>Layout</b></td>
       <td align="center"><b>Columns</b></td>
       <td align="center"><b>Paper type</b></td>
     </tr>
     <tr>
       <td>
         <input type="radio" name="${var}.layout" value="L" $landscapeChecked> Landscape<br />
         <input type="radio" name="${var}.layout" value="P" $portraitChecked> Portrait
       </td>
       <td>
         <select name="${var}.cols">
   STATEHTML
   
       my $i;
       for ($i = 1; $i <= $maxColumns; $i++) {
           if ($i == $cols) {
               $result .= "<option value='$i' selected>$i</option>\n";
           } else {
               $result .= "<option value='$i'>$i</option>\n";
           }
       }
   
       $result .= "</select></td><td>\n";
       $result .= "<select name='${var}.paper'>\n";
   
       $i = 0;
       foreach (@paperSize) {
           if ($paper == $i) {
               $result .= "<option selected value='$i'>" . $paperSize[$i] . "</option>\n";
           } else {
               $result .= "<option value='$i'>" . $paperSize[$i] . "</option>\n";
           }
           $i++;
       }
   
       $result .= "</select></td></tr></table>";
       return $result;
   }
   
   1;
   
   package Apache::lonprintout::printwizfinal;
   
   # This is the final state for the print wizard. It is not generally useful,
   # so it is not perldoc'ed.
   
   no strict;
   @ISA = ('Apache::lonwizard::state');
   use strict;
   
   sub new {
       my $proto = shift;
       my $class = ref($proto) || $proto;
       my $self = bless $proto->SUPER::new(shift, shift, shift);
   
       # All other variables come from the wizard.
   }
   
   sub render {
       my $self = shift;
       my $wizard = $self->{WIZARD};
       my $wizvars = $wizard->{VARS};
   
       my $result = '';
   
       $result .= "<form method='get' action='/adm/printout'>\n";
   
       # Nope, I'm lost.
       $result .= "</form>";
   }
   
   1;
   
 __END__  __END__
   

Removed from v.1.118  
changed lines
  Added in v.1.119


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