version 1.6, 2006/05/17 15:22:32
|
version 1.14, 2009/01/15 18:23:27
|
Line 28
|
Line 28
|
|
|
package Apache::lonselstudent; |
package Apache::lonselstudent; |
use Apache::lonnet; |
use Apache::lonnet; |
use Apache::loncoursedata; |
use Apache::lonlocal; |
use HTML::Entities; |
use Apache::loncoursedata(); |
|
use HTML::Entities(); |
|
|
# |
# |
# Utility function used when rendering <student> tags. |
# Utility function used when rendering <student> tags. |
# This function produces a list references to four |
# This function produces a list references to four |
# arrays: |
# arrays: |
# (\@course_personel, \@current_members, \@expired_members, \@future_members) |
# (\@course_personel, \@current_members, \@expired_members, \@future_members) |
# |
# |
|
# |
|
# Parameters; |
|
# |
|
# restrict - Optional.. if present and defined should be a section name. |
|
# The *_members arrays will then only contain people |
|
# in that section |
|
# |
# Where: |
# Where: |
# course_personnel - Each element of this array is itself a reference to an array |
# course_personnel - Each element of this array is itself a reference to an array |
# containing information about a member of the course staff. |
# containing information about a member of the course staff. |
Line 66 use HTML::Entities;
|
Line 74 use HTML::Entities;
|
# [4] username:domain of the user. |
# [4] username:domain of the user. |
# |
# |
sub get_people_in_class { |
sub get_people_in_class { |
|
my ($section_restriction) = @_; |
my %coursepersonnel = &Apache::lonnet::get_course_adv_roles(); |
my %coursepersonnel = &Apache::lonnet::get_course_adv_roles(); |
# |
# |
# Enumerate the course_personnel. |
# Enumerate the course_personnel. |
Line 102 sub get_people_in_class {
|
Line 111 sub get_people_in_class {
|
|
|
my $classlist = &Apache::loncoursedata::get_classlist(); |
my $classlist = &Apache::loncoursedata::get_classlist(); |
my @keys = keys(%{$classlist}); |
my @keys = keys(%{$classlist}); |
# Sort by: Section, name |
# Sort by: fullname, username |
@keys = sort { |
@keys = sort { |
if ($classlist->{$a}->[$section] ne $classlist->{$b}->[$section]) { |
lc($classlist->{$a}[$fullname]) cmp lc($classlist->{$b}[$fullname]) || |
return $classlist->{$a}->[$section] cmp $classlist->{$b}->[$section]; |
lc($a) cmp lc($b) |
} |
|
return $classlist->{$a}->[$fullname] cmp $classlist->{$b}->[$fullname]; |
|
} (@keys); |
} (@keys); |
|
|
|
|
|
|
|
|
for my $user (@keys) { |
for my $user (@keys) { |
|
if (!$section_restriction || |
if ( $classlist->{$user}->[$status] eq |
($section_restriction eq $classlist->{$user}->[$section])) { |
'Active') { |
|
push(@current_members, [$user, $classlist->{$user}->[$fullname], |
|
$classlist->{$user}->[$section], |
|
$classlist->{$user}->[$status], 'Student']); |
|
} else { |
|
# Need to figure out if this user is future or |
|
# Expired... If the start date is in the future |
|
# the user is future...else expired. |
|
|
|
my $now = time; |
if ( $classlist->{$user}->[$status] eq |
if ($classlist->{$user}->[$start_date] > $now) { |
'Active') { |
push(@future_members, [$user, $classlist->{$user}->[$fullname], |
push(@current_members, [$user, $classlist->{$user}->[$fullname], |
$classlist->{$user}->[$section], |
$classlist->{$user}->[$section], |
"Future", "Student"]); |
$classlist->{$user}->[$status], 'Student']); |
} else { |
} else { |
push(@expired_members, [$user, |
# Need to figure out if this user is future or |
$classlist->{$user}->[$fullname], |
# Expired... If the start date is in the future |
$classlist->{$user}->[$section], |
# the user is future...else expired. |
"Expired", "Student"]); |
|
|
my $now = time; |
|
if ($classlist->{$user}->[$start_date] > $now) { |
|
push(@future_members, [$user, $classlist->{$user}->[$fullname], |
|
$classlist->{$user}->[$section], |
|
"Future", "Student"]); |
|
} else { |
|
push(@expired_members, [$user, |
|
$classlist->{$user}->[$fullname], |
|
$classlist->{$user}->[$section], |
|
"Expired", "Student"]); |
|
} |
|
|
} |
} |
|
|
} |
} |
} |
} |
return (\@course_personnel, |
return (\@course_personnel, |
Line 168 sub get_people_in_class {
|
Line 178 sub get_people_in_class {
|
# This should be true for the first call for a page |
# This should be true for the first call for a page |
# and false for all other calls... only matters if |
# and false for all other calls... only matters if |
# multiselect is true. |
# multiselect is true. |
|
# $context - If email, do not include <br /><hr /> tags at the end |
|
# of the data table. |
# Returns: |
# Returns: |
# HTML text to add to the rendering of the helper. |
# HTML text to add to the rendering of the helper. |
# |
# |
sub render_student_list { |
sub render_student_list { |
my ($students, $formname, $formprefix, $defaultusers, |
my ($students, $formname, $formprefix, $defaultusers, |
$multiselect, $resultname, $javascript) = @_; |
$multiselect, $resultname, $javascript, $context) = @_; |
|
|
my $result = ""; |
my $result = ""; |
|
|
|
# no students so no output |
|
return if (!@$students); |
|
|
if ($javascript && $multiselect) { |
if ($javascript && $multiselect) { |
$result .= <<SCRIPT; |
$result .= <<SCRIPT; |
<script type="text/javascript"> |
<script type="text/javascript"> |
// <!-- |
// <!-- |
|
|
function findElement(name) { |
function findElement(name,formname) { |
var i; |
var i; |
var ele; |
var ele; |
for(i =0; i < document.forms.$formname.elements.length; i++) { |
for(i =0; i < formname.elements.length; i++) { |
ele = document.forms.$formname.elements[i]; |
ele = formname.elements[i]; |
if(ele.name == name) { |
if(ele.name == name) { |
return ele; |
return ele; |
} |
} |
Line 217 sub render_student_list {
|
Line 232 sub render_student_list {
|
} |
} |
} |
} |
|
|
function setAllStudents(value, which) { |
function setAllStudents(value, which, formname) { |
var i; |
var i; |
var ele; |
var ele; |
for (i =0; i < document.forms.$formname.elements.length; i++) { |
for (i =0; i < formname.elements.length; i++) { |
ele = document.forms.$formname.elements[i]; |
ele = formname.elements[i]; |
if(isStudent(ele) && rightSubForm(ele, which)) { |
if(isStudent(ele) && rightSubForm(ele, which)) { |
ele.checked=value; |
ele.checked=value; |
} |
} |
} |
} |
} |
} |
function setAllCoursePersonnel(value, which) { |
function setAllCoursePersonnel(value, which, formname) { |
var i; |
var i; |
var ele; |
var ele; |
for (i =0; i < document.forms.$formname.elements.length; i++) { |
for (i =0; i < formname.elements.length; i++) { |
ele = document.forms.$formname.elements[i]; |
ele = formname.elements[i]; |
if(!isStudent(ele) && rightSubForm(ele, which)) { |
if(!isStudent(ele) && rightSubForm(ele, which)) { |
ele.checked = value; |
ele.checked = value; |
} |
} |
} |
} |
} |
} |
function setSection(which, value, subform) { |
function setSection(which, value, subform, formname) { |
var i; |
var i; |
var ele; |
var ele; |
for (i =0; i < document.forms.$formname.elements.length; i++) { |
for (i =0; i < formname.elements.length; i++) { |
ele = document.forms.$formname.elements[i]; |
ele = formname.elements[i]; |
if (ele.value.indexOf(':') != -1) { |
if (ele.value.indexOf(':') != -1) { |
if ((section(ele) == which) && rightSubForm(ele, subform)) { |
if ((section(ele) == which) && rightSubForm(ele, subform)) { |
ele.checked = value; |
ele.checked = value; |
Line 250 sub render_student_list {
|
Line 265 sub render_student_list {
|
} |
} |
} |
} |
|
|
function setCheckboxes(listbox, which, value) { |
function setCheckboxes(listbox, which, value, formname) { |
var k; |
var k; |
var elem; |
var elem; |
var what; |
var what; |
elem = findElement(listbox); |
elem = findElement(listbox, formname); |
if (elem != null) { |
if (elem != null) { |
for (k = 0; k < elem.length; k++) { |
for (k = 0; k < elem.length; k++) { |
if (elem.options[k].selected) { |
if (elem.options[k].selected) { |
what = elem.options[k].text; |
what = elem.options[k].value; |
if (what == 'All Students') { |
if (what == 'allstudents') { |
setAllStudents(value, which); |
setAllStudents(value, which, formname); |
} else if (what == 'All Course Personnel') { |
} else if (what == 'allpersonnel') { |
setAllCoursePersonnel(value, which); |
setAllCoursePersonnel(value, which, formname); |
} else if (what == 'No Section') { |
} else if (what == 'nosection') { |
setSection('',value, which); |
setSection('',value, which, formname); |
} else { |
} else { |
setSection(what, value, which); |
setSection(what, value, which, formname); |
} |
} |
} |
} |
} |
} |
} |
} |
} |
} |
function selectSections(listbox, which) { |
function selectSections(listbox, which, formname) { |
setCheckboxes(listbox, which, true); |
setCheckboxes(listbox, which, true, formname); |
|
|
} |
} |
function unselectSections(listbox, which) { |
function unselectSections(listbox, which, formname) { |
setCheckboxes(listbox, which, false); |
setCheckboxes(listbox, which, false, formname); |
} |
} |
|
|
// --> |
// --> |
Line 308 SCRIPT
|
Line 323 SCRIPT
|
if ($size > 5) { |
if ($size > 5) { |
$size = 5; |
$size = 5; |
} |
} |
$result .= '<select multiple name="'.$formprefix |
$result .= '<select multiple="multiple" name="'.$formprefix |
.'.chosensections" size="'.$size.'">'."\n"; |
.'.chosensections" size="'.$size.'">'."\n"; |
$result .= '<option name="allstudents">All Students</option>'; |
$result .= '<option value="allstudents">'.&mt('All Students').'</option>'; |
$result .= '<option name="allpersonnel">All Course Personnel</option>'; |
$result .= '<option value="allpersonnel">'.&mt('All Course Personnel').'</option>'; |
$result .= '<option name="nosection">No Section</option>'; |
$result .= '<option value="nosection">'.&mt('No Section').'</option>'; |
$result .= "\n"; |
$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 .= '<option name="'.$sec.'">'.$sec.'</option>'."\n"; |
$result .= '<option name="'.$sec.'">'.$sec.'</option>'."\n"; |
} |
} |
$result .= '</td><td valign="top">'; |
$result .= '</select></td><td valign="top">'; |
$result .= '<input type="button" name="'.$formprefix.'.select" value="Select" onclick=' |
$result .= '<input type="button" name="'.$formprefix.'.select" value="'.&mt('Select').'" onclick=' |
."'selectSections(\"$formprefix.chosensections\", \"$formprefix\")'".' /></td>'; |
."'selectSections(\"$formprefix.chosensections\", \"$formprefix\", document.forms.$formname)'".' /></td>'; |
$result .= '<td valign="top"><input type="button" name="'.$formprefix |
$result .= '<td valign="top"><input type="button" name="'.$formprefix |
.'.unselect" value="Unselect" onclick='. |
.'.unselect" value="'.&mt('Unselect').'" onclick='. |
"'unselectSections(\"$formprefix.chosensections\", \"$formprefix\")' ".' /></td></tr></table>'; |
"'unselectSections(\"$formprefix.chosensections\", \"$formprefix\", document.forms.$formname)' ".' /></td></tr></table>'; |
} |
} |
|
|
# Now we list the students, but the form element type |
# Now we list the students, but the form element type |
Line 332 SCRIPT
|
Line 347 SCRIPT
|
|
|
$result .= &Apache::loncommon::start_data_table(); |
$result .= &Apache::loncommon::start_data_table(); |
$result .= &Apache::loncommon::start_data_table_header_row(); |
$result .= &Apache::loncommon::start_data_table_header_row(); |
$result .= '<th></th><th>Name</th>'."\n"; |
$result .= '<th></th><th>'.&mt('Name').'</th>'."\n"; |
$result .= ' <th>Section</th>'."\n"; |
$result .= ' <th>'.&mt('Section').'</th>'."\n"; |
$result .= ' <th>Status</th>'."\n"; |
$result .= ' <th>'.&mt('Status').'</th>'."\n"; |
$result .= ' <th>Role</th>'."\n"; |
$result .= ' <th>'.&mt('Role').'</th>'."\n"; |
$result .= ' <th>Username : Domain</th>'."\n"; |
$result .= ' <th>'.&mt('Username : Domain').'</th>'."\n"; |
$result .= &Apache::loncommon::end_data_table_header_row(); |
$result .= &Apache::loncommon::end_data_table_header_row(); |
|
|
my $input_type; |
my $input_type; |
Line 350 SCRIPT
|
Line 365 SCRIPT
|
for my $student (@$students) { |
for my $student (@$students) { |
$result .= &Apache::loncommon::start_data_table_row(). |
$result .= &Apache::loncommon::start_data_table_row(). |
'<td><input type="'.$input_type.'" name="'. |
'<td><input type="'.$input_type.'" name="'. |
$resultname.".forminput".'"'; |
$resultname."_forminput".'"'; |
my $user = $student->[0]; |
my $user = $student->[0]; |
|
|
# Figure out which students are checked by default... |
# Figure out which students are checked by default... |
Line 383 SCRIPT
|
Line 398 SCRIPT
|
. '</td>'.&Apache::loncommon::end_data_table_row(). |
. '</td>'.&Apache::loncommon::end_data_table_row(). |
"\n"; |
"\n"; |
} |
} |
$result .= &Apache::loncommon::end_data_table(). |
$result .= &Apache::loncommon::end_data_table(); |
" <br /> <hr />\n"; |
if ($context ne 'email') { |
|
$result .= "<br /> <hr />\n"; |
|
} |
|
|
return $result; |
return $result; |
} |
} |