[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> </td>';
+ $result .= '<td> </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