[LON-CAPA-cvs] cvs: loncom /interface lonhelper.pm
bowersj2
lon-capa-cvs@mail.lon-capa.org
Wed, 07 May 2003 18:48:15 -0000
bowersj2 Wed May 7 14:48:15 2003 EDT
Modified files:
/loncom/interface lonhelper.pm
Log:
HACK HACK HACK
Makes the "Select Published" and "Unselect Published" work in Netscape 4.
See lengthy comment explaining why it's done this way.
****'in Netscape 4.
Index: loncom/interface/lonhelper.pm
diff -u loncom/interface/lonhelper.pm:1.21 loncom/interface/lonhelper.pm:1.22
--- loncom/interface/lonhelper.pm:1.21 Wed May 7 14:22:43 2003
+++ loncom/interface/lonhelper.pm Wed May 7 14:48:15 2003
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# .helper XML handler to implement the LON-CAPA helper
#
-# $Id: lonhelper.pm,v 1.21 2003/05/07 18:22:43 bowersj2 Exp $
+# $Id: lonhelper.pm,v 1.22 2003/05/07 18:48:15 bowersj2 Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -1835,6 +1835,10 @@
my $filterFunc = $self->{FILTER_FUNC};
my $buttons = '';
+ my $type = 'radio';
+ if ($self->{'multichoice'}) {
+ $type = 'checkbox';
+ }
if ($self->{'multichoice'}) {
$result = <<SCRIPT;
@@ -1848,10 +1852,10 @@
}
}
- function checkallid(value, idName) {
+ function checkallclass(value, className) {
for (i=0; i<document.forms.helpform.elements.length; i++) {
ele = document.forms.helpform.elements[i];
- if (ele.id == idName) {
+ if (ele.type == "$type" && ele.onclick) {
document.forms.helpform.elements[i].checked=value;
}
}
@@ -1862,8 +1866,8 @@
<br />
<input type="button" onclick="checkall(true, '$var')" value="Select All Files" />
<input type="button" onclick="checkall(false, '$var')" value="Unselect All Files" />
-<input type="button" onclick="checkallid(true, 'Published')" value="Select All Published" />
-<input type="button" onclick="checkallid(false, 'Published')" value="Unselect All Published" />
+<input type="button" onclick="checkallclass(true, 'Published')" value="Select All Published" />
+<input type="button" onclick="checkallclass(false, 'Published')" value="Unselect All Published" />
<br />
BUTTONS
}
@@ -1892,10 +1896,6 @@
# Keeps track if there are no choices, prints appropriate error
# if there are none.
my $choices = 0;
- my $type = 'radio';
- if ($self->{'multichoice'}) {
- $type = 'checkbox';
- }
# Print each legitimate file choice.
for my $file (@fileList) {
$file = (split(/&/, $file))[0];
@@ -1905,8 +1905,28 @@
my $fileName = $subdir .'/'. $file;
if (&$filterFunc($file)) {
(my $status, my $color) = @{fileState($subdir, $file)};
+
+ # Netscape 4 is stupid and there's nowhere to put the
+ # information on the input tag that the file is Published,
+ # Unpublished, etc. In *real* browsers we can just say
+ # "class='Published'" and check the className attribute of
+ # the input tag, but Netscape 4 is too stupid to understand
+ # that attribute, and un-comprehended attributes are not
+ # reflected into the object model. So instead, what I do
+ # is either have or don't have an "onclick" handler that
+ # does nothing, give Published files the onclick handler, and
+ # have the checker scripts check for that. Stupid and clumsy,
+ # and only gives us binary "yes/no" information (at least I
+ # couldn't figure out how to reach into the event handler's
+ # actual code to retreive a value), but it works well enough
+ # here.
+
+ my $onclick = '';
+ if ($status eq 'Published') {
+ $onclick = 'onclick="a=1" ';
+ }
$result .= '<tr><td align="right"' . " bgcolor='$color'>" .
- "<input id='$status' type='$type' name='" . $var
+ "<input $onclick type='$type' name='" . $var
. ".forminput' value='" . HTML::Entities::encode($fileName) .
"'";
if (!$self->{'multichoice'} && $choices == 0) {