--- loncom/interface/lonhelper.pm 2006/05/05 14:35:44 1.140
+++ loncom/interface/lonhelper.pm 2006/05/09 22:15:30 1.146
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# .helper XML handler to implement the LON-CAPA helper
#
-# $Id: lonhelper.pm,v 1.140 2006/05/05 14:35:44 albertel Exp $
+# $Id: lonhelper.pm,v 1.146 2006/05/09 22:15:30 foxr Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -2282,7 +2282,6 @@ use Apache::lonnet;
# future...each one gets is own subpage of selection.
# This sub renders one of these pages.
# Parameters:
-# $sections - Set of sections in the course (hash reference).
# $students - Students in the section. (ref to array of references
# to arrays).
# $formprefix - form path prefix for form element names
@@ -2291,24 +2290,148 @@ use Apache::lonnet;
# set of students won't collide.
# $defaultusers - reference to a hash containng
# the set of users that should be on or off.
+# $multiselect - True if multiselect allowed.
+# $resultname - Name of result variable.
+# $javascript - If true, the javascript to run this is output
+# This should be true for the first call for a page
+# and false for all other calls... only matters if
+# multiselect is true.
# Returns:
# HTML text to add to the rendering of the helper.
#
sub render_student_list {
- my ($self,
- $sections, $students, $formprefix, $defaultusers) = @_;
+ my ($students, $formprefix, $defaultusers,
+ $multiselect, $resultname, $javascript) = @_;
- my $multiselect = $self->{'multichoice'};
my $result = "";
+ if ($javascript && $multiselect) {
+ $result .= <
+SCRIPT
+
+ }
+
# If multiple selections are allowed, we have a listbox
# at the top which allows quick selections from each section
# as well as from categories of personnel.
if ($multiselect) {
+ # Make a section hash so we can add sections to the choice:
+
+ my %sections;
+ for my $student (@$students) {
+ my $sect = $student->[2];
+ if ($sect ne "") {
+ $sections{$sect} = 1;
+ }
+ }
+
$result .= '
';
- my $size = scalar(keys(%$sections));
+ my $size = scalar(keys(%sections));
$size += 3; # We have allstudents allpersonel nosection too.
if ($size > 5) {
$size = 5;
@@ -2319,15 +2442,15 @@ sub render_student_list {
$result .= '';
$result .= '';
$result .= "\n";
- foreach my $sec (sort {lc($a) cmp lc($b)} (keys(%$sections))) {
+ foreach my $sec (sort {lc($a) cmp lc($b)} (keys(%sections))) {
$result .= ''."\n";
}
$result .= '
';
+ "'unselectSections(\"$formprefix.chosensections\", \"$formprefix\")' ".' />';
}
# Now we list the students, but the form element type
@@ -2352,7 +2475,7 @@ sub render_student_list {
my $checked = 0;
for my $student (@$students) {
$result .= '
[0];
# Figure out which students are checked by default...
@@ -2362,7 +2485,7 @@ sub render_student_list {
$result .= ' checked ="checked" ';
$checked = 1;
}
- } elsif (!$self->{'multichoice'} && !$checked) {
+ } elsif (!$multiselect && !$checked) {
$result .= ' checked="checked" ';
$checked = 1; # First one for radio if no default specified.
}
@@ -2370,7 +2493,8 @@ sub render_student_list {
.$student->[2] . ':'
.$student->[1] . ':'
.$student->[3] . ':'
- .$student->[4], "<>&\"'")
+ .$student->[4] . ":"
+ .$formprefix, "<>&\"'")
."\" />