[LON-CAPA-cvs] cvs: loncom /interface lonprintout.pm

foxr lon-capa-cvs@mail.lon-capa.org
Mon, 17 Jul 2006 23:11:14 -0000


foxr		Mon Jul 17 19:11:14 2006 EDT

  Modified files:              
    /loncom/interface	lonprintout.pm 
  Log:
  - 3740 and 4878 - Make the margins piece of the helper have defaults that
    are sensitive to the page format that was selected.. allow margin selection
    for 2 col output as well.
  
  NOTE: Due to the way that %page_formats is defined, default units have flipped
  from cm -> in.  However if desired %page_formats could be recalculated to in.
  NOTE: converted measures that were in pt to in in $page_formats since in fact
  pt is not an option in the helper, converted mm -> cm as well.
  
  
  
Index: loncom/interface/lonprintout.pm
diff -u loncom/interface/lonprintout.pm:1.462 loncom/interface/lonprintout.pm:1.463
--- loncom/interface/lonprintout.pm:1.462	Mon Jul 17 09:54:36 2006
+++ loncom/interface/lonprintout.pm	Mon Jul 17 19:11:10 2006
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Printout
 #
-# $Id: lonprintout.pm,v 1.462 2006/07/17 13:54:36 albertel Exp $
+# $Id: lonprintout.pm,v 1.463 2006/07/17 23:11:10 foxr Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -627,7 +627,7 @@
 	     '2' => ['3.66 in','9.8 in', '-0.57 in','-0.57 in','0.7 cm']
 	 },
 	 'album' => {
-	     '1' => [ '8.8 in', '6.8 in','-40 pt in',  '-60 pt','1 cm'],
+	     '1' => [ '8.8 in', '6.8 in','-0.55 in',  '-0.83 in','1 cm'],
 	     '2' => [ '4.4 in', '6.8 in','-0.5 in', '-1.5 in','3.5 in']
 	 },
      },
@@ -683,12 +683,12 @@
      },
      'a4' => {
 	 'book' => {
-	     '1' => ['176 mm','272 mm','-40 pt in','-60 pt','-0.5 in'],
-	     '2' => [ '91 mm','272 mm','-40 pt in','-60 pt','-0.5 in']
+	     '1' => ['17.6 cm','27.2 cm','-0.55  in','-0.83 in','-0.5 in'],
+	     '2' => [ '9.1 cm','27.2 cm','-0.55  in','-0.83 in','-0.5 in']
 	 },
 	 'album' => {
-	     '1' => ['8.5 in','7.7 in','-40 pt in','-60 pt','0 in'],
-	     '2' => ['3.9 in','7.7 in','-40 pt in','-60 pt','0 in']
+	     '1' => ['8.5 in','7.7 in','-0.55 in','-0.83 in','0 in'],
+	     '2' => ['3.9 in','7.7 in','-0.55 in','-0.83 in','0 in']
 	 },
      },
      'a5' => {
@@ -1082,11 +1082,9 @@
     #
     my @order    = @Apache::lonratedt::order;
     my @resources = @Apache::lonratedt::resources; 
-    &Apache::lonnet::logthis("mapread for $currentURL returned: $errtext");
     for (my $member=0;$member<=$#order;$member++) {
 	$resources[$order[$member]]=~/^([^:]*):([^:]*):/;
 	my $urlp=$2;
-	&Apache::lonnet::logthis("Processing $urlp from sequence ($member)");
 	if ($urlp=~/\.(problem|exam|quiz|assess|survey|form|library|xml|html|htm|xhtml|xhtm)$/) {
 	    my $texversion='';
 	    if ($helper->{'VARS'}->{'ANSWER_TYPE'} ne 'only') {
@@ -1133,7 +1131,6 @@
 	    $result.=$texversion;
 
 	} elsif ($urlp=~/\.(sequence|page)$/) {
-	    &Apache::lonnet::logthis("elsif just strutting stuff");
 	    
 	    # header:
 
@@ -1337,15 +1334,11 @@
 		 && $currentURL=~/\.sequence$/ && $helper->{'VARS'}->{'construction'} eq '1') {
             #printing content of sequence from the construction space	
 	    $currentURL=~s|\/~([^\/]+)\/|\/home\/$1\/public_html\/|;
-	    &Apache::lonnet::logthis("Sequence from constrution space. ouptput is:");
-	    &Apache::lonnet::logthis($result);
 	    $result .= &print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
 	    $result .= &print_construction_sequence($currentURL, $helper, %form,
 						    $LaTeXwidth);
-	    &Apache::lonnet::logthis("Back from construction space print");
 	    $result .= '\end{document}';  
 	    if (!($result =~ /\\begin\{document\}/)) {
-		&Apache::lonnet::logthis("inserting header");
 		$result = &print_latex_header() . $result;
 	    }
 	    # End construction space sequence.
@@ -2973,8 +2966,7 @@
     # $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;
@@ -2990,41 +2982,87 @@
         $result .= '<br /><font color="#FF0000">' . $self->{ERROR_MSG} . '</font><br />';
     }
 
-    my $width = 18;
     my $format = $helper->{VARS}->{$self->{'formatvar'}};
-    if (substr($format, 2, 1) ne '1') {
-	$width = 9;
+
+    # Use format to get sensible defaults for the margins:
+
+
+    my ($laystyle, $cols, $papersize) = split(/\|/, $format);
+    ($papersize)                      = split(/ /, $papersize);
+
+
+    if ($laystyle eq 'L') {
+	$laystyle = 'album';
+    } else {
+	$laystyle = 'book';
+    }
+
+
+
+    my ($width_and_units,
+	$height_and_units,
+	$margin_and_units)  = 
+	    &Apache::lonprintout::page_format($papersize, $laystyle, $cols);
+
+
+    my ($width,  $wunits) = split(/ /, $width_and_units);
+    my ($height, $hunits) = split(/ /, $height_and_units);
+    my ($margin, $munits) = split(/ /, $margin_and_units);
+
+
+
+    # This code is a bit ugly and not very scalable with additional units.
+    # but I'm not sure my poor perlmanship knows a better way yet RF
+
+    my ($wuoptions, $huoptions, $muoptions);
+    
+    if ($wunits eq 'cm') {
+	$wuoptions = '<option>cm</option><option>in</option>';
+    } else {
+	$wuoptions = '<option>in</option><option>cm</option>';
+    }
+    if ($hunits eq 'cm') {
+	$huoptions =  '<option>cm</option><option>in</option>';
+    } else {
+	$huoptions = '<option>in</option><option>cm</option>';
+    }
+    if ($munits eq 'cm') {
+	$muoptions = '<option>cm</option><option>in</option>';
+    } else {
+	$muoptions = '<option>in</option><option>cm</option>';
     }
 
     $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='$width' size='4'></td>
+    <td align='left'><input type='text' name='$var.width' value="$width" size='4'></td>
     <td align='left'>
       <select name='$var.widthunit'>
-        <option>cm</option><option>in</option>
+      $wuoptions
       </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'><input type='text' name="$var.height" value="$height" size='4'></td>
     <td align='left'>
       <select name='$var.heightunit'>
-        <option>cm</option><option>in</option>
+      $huoptions
       </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'><input type='text' name='$var.lmargin' value="$margin" size='4'></td>
     <td align='left'>
       <select name='$var.lmarginunit'>
-        <option>cm</option><option>in</option>
+      $muoptions
       </select>
     </td>
   </tr>
@@ -3044,9 +3082,6 @@
     my $helper = Apache::lonhelper::getHelper();
 
     my $format = $helper->{VARS}->{$self->{'formatvar'}};
-    if (substr($format, 2, 1) ne '1') {
-        $helper->changeState($self->{NEXTSTATE});
-    }
    
     return 1;
 }