[LON-CAPA-cvs] cvs: loncom /interface lonhelper.pm
foxr
lon-capa-cvs@mail.lon-capa.org
Tue, 09 May 2006 21:44:18 -0000
This is a MIME encoded message
--foxr1147211058
Content-Type: text/plain
foxr Tue May 9 17:44:18 2006 EDT
Modified files:
/loncom/interface lonhelper.pm
Log:
Continue to separate student display into an independent sub and
clean up some dead stuff.
--foxr1147211058
Content-Type: text/plain
Content-Disposition: attachment; filename="foxr-20060509174418.txt"
Index: loncom/interface/lonhelper.pm
diff -u loncom/interface/lonhelper.pm:1.144 loncom/interface/lonhelper.pm:1.145
--- loncom/interface/lonhelper.pm:1.144 Tue May 9 17:39:47 2006
+++ loncom/interface/lonhelper.pm Tue May 9 17:44:18 2006
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# .helper XML handler to implement the LON-CAPA helper
#
-# $Id: lonhelper.pm,v 1.144 2006/05/09 21:39:47 foxr Exp $
+# $Id: lonhelper.pm,v 1.145 2006/05/09 21:44:18 foxr Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -2293,16 +2293,129 @@
# 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 (
$sections, $students, $formprefix, $defaultusers,
- $multiselect, $resultname) = @_;
+ $multiselect, $resultname, $javascript) = @_;
my $result = "";
+ if ($javascript && $multiselect) {
+ $result .= <<SCRIPT;
+<script type="text/javascript">
+// <!--
+
+ function findElement(name) {
+ var i;
+ var ele;
+ for(i =0; i < document.forms.helpform.elements.length; i++) {
+ ele = document.forms.helpform.elements[i];
+ if(ele.name == name) {
+ return ele;
+ }
+ }
+ return null;
+ }
+ function isStudent(element) {
+ if(element.value.indexOf(":Student") != -1) {
+ return 1;
+ }
+ return 0;
+ }
+ function section(element) {
+ var i;
+ var info;
+ if (element.value.indexOf(':') != -1) {
+ info = element.value.split(':');
+ return info[2];
+ } else {
+ return "";
+ }
+ }
+ function rightSubForm(element, which) {
+ if (element.value.indexOf(which) != -1) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ function setAllStudents(value, which) {
+ var i;
+ var ele;
+ for (i =0; i < document.forms.helpform.elements.length; i++) {
+ ele = document.forms.helpform.elements[i];
+ if(isStudent(ele) && rightSubForm(ele, which)) {
+ ele.checked=value;
+ }
+ }
+ }
+ function setAllCoursePersonnel(value, which) {
+ var i;
+ var ele;
+ for (i =0; i < document.forms.helpform.elements.length; i++) {
+ ele = document.forms.helpform.elements[i];
+ if(!isStudent(ele) && rightSubForm(ele, which)) {
+ ele.checked = value;
+ }
+ }
+ }
+ function setSection(which, value, subform) {
+ var i;
+ var ele;
+ for (i =0; i < document.forms.helpform.elements.length; i++) {
+ ele = document.forms.helpform.elements[i];
+ if (ele.value.indexOf(':') != -1) {
+ if ((section(ele) == which) && rightSubForm(ele, subform)) {
+ ele.checked = value;
+ }
+ }
+ }
+ }
+
+ function setCheckboxes(listbox, which, value) {
+ var k;
+ var elem;
+ var what;
+ elem = findElement(listbox);
+ if (elem != null) {
+ for (k = 0; k < elem.length; k++) {
+ if (elem.options[k].selected) {
+ what = elem.options[k].text;
+ if (what == 'All Students') {
+ setAllStudents(value, which);
+ } else if (what == 'All Course Personnel') {
+ setAllCoursePersonnel(value, which);
+ } else if (what == 'No Section') {
+ setSection('',value, which);
+ } else {
+ setSection(what, value, which);
+ }
+ }
+ }
+ }
+ }
+ function selectSections(listbox, which) {
+ setCheckboxes(listbox, which, true);
+
+ }
+ function unselectSections(listbox, which) {
+ setCheckboxes(listbox, which, false);
+ }
+
+// -->
+</script>
+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.
@@ -2435,136 +2548,6 @@
my $buttons = '';
my $var = $self->{'variable'};
- if ($self->{'multichoice'}) {
- $result = <<SCRIPT;
-<script type="text/javascript">
-// <!--
-
- function findElement(name) {
- var i;
- var ele;
- for(i =0; i < document.forms.helpform.elements.length; i++) {
- ele = document.forms.helpform.elements[i];
- if(ele.name == name) {
- return ele;
- }
- }
- return null;
- }
- function isStudent(element) {
- if(element.value.indexOf(":Student") != -1) {
- return 1;
- }
- return 0;
- }
- function section(element) {
- var i;
- var info;
- if (element.value.indexOf(':') != -1) {
- info = element.value.split(':');
- return info[2];
- } else {
- return "";
- }
- }
- function rightSubForm(element, which) {
- if (element.value.indexOf(which) != -1) {
- return true;
- } else {
- return false;
- }
- }
-
- function setAllStudents(value, which) {
- var i;
- var ele;
- for (i =0; i < document.forms.helpform.elements.length; i++) {
- ele = document.forms.helpform.elements[i];
- if(isStudent(ele) && rightSubForm(ele, which)) {
- ele.checked=value;
- }
- }
- }
- function setAllCoursePersonnel(value, which) {
- var i;
- var ele;
- for (i =0; i < document.forms.helpform.elements.length; i++) {
- ele = document.forms.helpform.elements[i];
- if(!isStudent(ele) && rightSubForm(ele, which)) {
- ele.checked = value;
- }
- }
- }
- function setSection(which, value, subform) {
- var i;
- var ele;
- for (i =0; i < document.forms.helpform.elements.length; i++) {
- ele = document.forms.helpform.elements[i];
- if (ele.value.indexOf(':') != -1) {
- if ((section(ele) == which) && rightSubForm(ele, subform)) {
- ele.checked = value;
- }
- }
- }
- }
-
- function setCheckboxes(listbox, which, value) {
- var k;
- var elem;
- var what;
- elem = findElement(listbox);
- if (elem != null) {
- for (k = 0; k < elem.length; k++) {
- if (elem.options[k].selected) {
- what = elem.options[k].text;
- if (what == 'All Students') {
- setAllStudents(value, which);
- } else if (what == 'All Course Personnel') {
- setAllCoursePersonnel(value, which);
- } else if (what == 'No Section') {
- setSection('',value, which);
- } else {
- setSection(what, value, which);
- }
- }
- }
- }
- }
- function selectSections(listbox, which) {
- setCheckboxes(listbox, which, true);
-
- }
- function unselectSections(listbox, which) {
- setCheckboxes(listbox, which, false);
- }
-
-// -->
-</script>
-SCRIPT
-
- my %lt=&Apache::lonlocal::texthash(
- 'ocs' => "Select Only Current Students",
- 'ues' => "Unselect Expired Students",
- 'sas' => "Select All Students",
- 'uas' => "Unselect All Students",
- 'sfsg' => "Select Current Students for Section/Group",
- 'ufsg' => "Unselect for Section/Group");
-
- $buttons = <<BUTTONS;
-<br />
-<table>
-
- <tr>
- <td><input type="button" onclick="checkall(true, '$var')" value="$lt{'sas'}" /></td>
- <td> <input type="button" onclick="checkall(false, '$var')" value="$lt{'uas'}" /><br /></td>
- </tr>
-
-</table>
-<br />
-BUTTONS
-# $result .= $buttons;
-
-}
if (defined $self->{ERROR_MSG}) {
$result .= '<font color="#FF0000">' . $self->{ERROR_MSG} . '</font><br /><br />';
@@ -2704,7 +2687,8 @@
"current",
\%defaultUsers,
$self->{'multichoice'},
- $self->{'variable'});
+ $self->{'variable'},
+ 1);
# If activeonly is not set then we can also give the expired students:
@@ -2718,7 +2702,8 @@
"future",
\%defaultUsers,
$self->{'multichoice'},
- $self->{'variable'});
+ $self->{'variable'},
+ 0);
# Past
$result .= &render_student_list(\%sections,
@@ -2726,7 +2711,8 @@
"past",
\%defaultUsers,
$self->{'multichoice'},
- $self->{'variable'});
+ $self->{'variable'},
+ 0);
}
--foxr1147211058--