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

foxr lon-capa-cvs@mail.lon-capa.org
Mon, 03 Jan 2005 13:45:31 -0000


foxr		Mon Jan  3 08:45:31 2005 EDT

  Modified files:              
    /loncom/interface	lonhelper.pm lonprintout.pm 
  Log:
  Bugzilla enhancement: 2968
     Added <option> tag to lonhelper and using it within lonprintout.pm to
  >display< a checkbox to allow the user to select where \nepages will land.
  NOTE NOTE NOTE:  The functionality of actually inserting the \newpage
  where the user wants it is not yet implemented.
  
  
Index: loncom/interface/lonhelper.pm
diff -u loncom/interface/lonhelper.pm:1.89 loncom/interface/lonhelper.pm:1.90
--- loncom/interface/lonhelper.pm:1.89	Tue Dec  7 06:25:53 2004
+++ loncom/interface/lonhelper.pm	Mon Jan  3 08:45:31 2005
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # .helper XML handler to implement the LON-CAPA helper
 #
-# $Id: lonhelper.pm,v 1.89 2004/12/07 11:25:53 foxr Exp $
+# $Id: lonhelper.pm,v 1.90 2005/01/03 13:45:31 foxr Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -1760,7 +1760,7 @@
     &Apache::lonhelper::register('Apache::lonhelper::resource',
                               ('resource', 'filterfunc', 
                                'choicefunc', 'valuefunc',
-                               'mapurl'));
+                               'mapurl','option'));
 }
 
 sub new {
@@ -1865,6 +1865,30 @@
 
 sub end_mapurl { return ''; }
 
+
+sub start_option {
+    my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
+    if (!defined($paramHash->{OPTION_TEXTS})) {
+	$paramHash->{OPTION_TEXTS} = [ ];
+	$paramHash->{OPTION_VARS}  = [ ];
+    
+    }
+    #  We're ok with empty elements. as place holders
+    # Although the 'variable' element should really exist.
+    my $option_texts  = $paramHash->{OPTION_TEXTS};
+    my $option_vars   = $paramHash->{OPTION_VARS};
+
+    push(@$option_texts,  $token->[2]{'text'});
+    push(@$option_vars,   $token->[2]{'variable'});
+
+    return '';
+}
+
+sub end_option {
+    my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
+    return '';
+}
+
 # A note, in case I don't get to this before I leave.
 # If someone complains about the "Back" button returning them
 # to the previous folder state, instead of returning them to
@@ -1916,10 +1940,13 @@
 
     $result .= $buttons;
 
-    my $filterFunc = $self->{FILTER_FUNC};
-    my $choiceFunc = $self->{CHOICE_FUNC};
-    my $valueFunc = $self->{VALUE_FUNC};
-    my $multichoice = $self->{'multichoice'};
+    my $filterFunc     = $self->{FILTER_FUNC};
+    my $choiceFunc     = $self->{CHOICE_FUNC};
+    my $valueFunc      = $self->{VALUE_FUNC};
+    my $multichoice   = $self->{'multichoice'};
+    my $option_vars    = $self->{OPTION_VARS};
+    my $option_texts   = $self->{OPTION_TEXTS};
+    my $headings_done  = 0;
 
     # Evaluate the map url as needed
     my $mapUrl;
@@ -1937,15 +1964,39 @@
     my $checked = 0;
     my $renderColFunc = sub {
         my ($resource, $part, $params) = @_;
+	my $result = "";
+
+	if(!$headings_done) {
+	    if ($option_texts) {
+		foreach my $text (@$option_texts) {
+		    $result .= "<th>$text</th>";
+		}
+	    }
+	    $result .= "<th>Select</th>";
+	    $result .= "</tr><tr>"; # Close off the extra row and start a new one.
+	    $headings_done = 1;
+	}
 
         my $inputType;
         if ($multichoice) { $inputType = 'checkbox'; }
         else {$inputType = 'radio'; }
 
         if (!&$choiceFunc($resource)) {
-            return '<td>&nbsp;</td>';
+	    $result .= '<td>&nbsp;</td>';
+            return $result;
         } else {
-            my $col = "<td><input type='$inputType' name='${var}.forminput' ";
+	    my $col = "";
+	    my $resource_name =   
+                   HTML::Entities::encode(&$valueFunc($resource),"<>&\"'");
+	    if($option_vars) {
+		foreach my $var (@$option_vars) {
+		    $col .= 
+                        "<td align='center'><input type='checkbox' name ='$var'.forminput' value='".
+			$resource_name . "' /> </td>";
+		}
+	    }
+
+            $col .= "<td align='center'><input type='$inputType' name='${var}.forminput' ";
             if (!$checked && !$multichoice) {
                 $col .= "checked ";
                 $checked = 1;
@@ -1954,10 +2005,8 @@
 		$col .= "checked ";
 		$checked = 1;
 	    }
-            $col .= "value='" . 
-                HTML::Entities::encode(&$valueFunc($resource),"<>&\"'") 
-                . "' /></td>";
-            return $col;
+            $col .= "value='" . $resource_name  . "' /></td>";
+            return $result.$col;
         }
     };
 
Index: loncom/interface/lonprintout.pm
diff -u loncom/interface/lonprintout.pm:1.344 loncom/interface/lonprintout.pm:1.345
--- loncom/interface/lonprintout.pm:1.344	Mon Dec 27 09:07:28 2004
+++ loncom/interface/lonprintout.pm	Mon Jan  3 08:45:31 2005
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Printout
 #
-# $Id: lonprintout.pm,v 1.344 2004/12/27 14:07:28 foxr Exp $
+# $Id: lonprintout.pm,v 1.345 2005/01/03 13:45:31 foxr Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -1708,6 +1708,7 @@
       <filterfunc>return $isProblem;</filterfunc>
       <mapurl>$map</mapurl>
       <valuefunc>return $symbFilter;</valuefunc>
+      <option text='End Page' variable='FINISHPAGE'>
       </resource>
     </state>
 
@@ -1719,6 +1720,7 @@
       <filterfunc>return $isNotMap;</filterfunc>
       <mapurl>$map</mapurl>
       <valuefunc>return $symbFilter;</valuefunc>
+      <option text='End Page' variable='FINISHPAGE'>
       </resource>
     </state>
 HELPERFRAGMENT
@@ -1740,6 +1742,7 @@
       <filterfunc>return $isProblemOrMap;</filterfunc>
       <choicefunc>return $isNotMap;</choicefunc>
       <valuefunc>return $symbFilter;</valuefunc>
+      <option text='End Page' variable='FINISHPAGE'>
     </resource>
   </state>
 ALL_PROBLEMS
@@ -1755,6 +1758,7 @@
       <filterfunc>return $isProblem;</filterfunc>
       <mapurl>$map</mapurl>
       <valuefunc>return $symbFilter;</valuefunc>
+      <option text='End Page' variable='FINISHPAGE'>
       </resource>
     <message><br /><big><i><b>How should the results be printed?</b></i></big><br /></message>
     <choices variable="EMPTY_PAGES">
@@ -1817,6 +1821,7 @@
       <filterfunc>return $isNotMap;</filterfunc>
       <mapurl>$map</mapurl>
       <valuefunc>return $symbFilter;</valuefunc>
+      <option text='End Page' variable='FINISHPAGE'>
       </resource>
     <message><br /><big><i><b>How should the results be printed?</b></i></big><br /></message>
     <choices variable="EMPTY_PAGES">
@@ -1900,6 +1905,7 @@
       <nextstate>CHOOSE_FROM_ANY_SEQUENCE</nextstate>
       <filterfunc>return \$res->is_sequence;</filterfunc>
       <valuefunc>return $urlValue;</valuefunc>
+      <option text='End Page' variable='FINISHPAGE'>
       </resource>
     </state>
   <state name="CHOOSE_FROM_ANY_SEQUENCE" title="Select Resources To Print">
@@ -1910,6 +1916,7 @@
       <filterfunc>return $isProblem</filterfunc>
       <mapurl evaluate='1'>return '$escapedSequenceName';</mapurl>
       <valuefunc>return $symbFilter;</valuefunc>
+      <option text='End Page' variable='FINISHPAGE'>
       </resource>
     </state>
 CHOOSE_FROM_ANY_SEQUENCE