--- loncom/interface/lonselstudent.pm 2006/05/23 21:41:26 1.7 +++ loncom/interface/lonselstudent.pm 2016/10/22 01:53:27 1.16 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # lonselstudent.pm : Reusable subs for student selection. # -# $Id: lonselstudent.pm,v 1.7 2006/05/23 21:41:26 foxr Exp $ +# $Id: lonselstudent.pm,v 1.16 2016/10/22 01:53:27 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -28,8 +28,9 @@ package Apache::lonselstudent; use Apache::lonnet; -use Apache::loncoursedata; -use HTML::Entities; +use Apache::lonlocal; +use Apache::loncoursedata(); +use HTML::Entities(); # # Utility function used when rendering tags. @@ -60,7 +61,7 @@ use HTML::Entities; # Course personnel elements include: # [0] Last, First of the user. # [1] Role held by the user. -# [2] Empty. +# [2] Section associated with role. # [3] Empty # [4] username:domain of the user. # @@ -73,25 +74,30 @@ use HTML::Entities; # [4] username:domain of the user. # sub get_people_in_class { - my ($section_restriction) = @_; - my %coursepersonnel = &Apache::lonnet::get_course_adv_roles(); + my ($section_restriction,$personnel_section) = @_; + my %coursepersonnel = &Apache::lonnet::get_course_adv_roles($env{'request.course.id'},1); + my $crstype = &Apache::loncommon::course_type(); # # Enumerate the course_personnel. # my @course_personnel; - for my $role (sort(keys(%coursepersonnel))) { + foreach my $key (sort(keys(%coursepersonnel))) { + my ($role,$section) = split(/:/,$key); # extract the names so we can sort them + next if (($personnel_section ne '') && ($personnel_section ne $section)); my @people; - for my $person (split(/,/, $coursepersonnel{$role})) { + + foreach my $person (split(/,/, $coursepersonnel{$key})) { my ($uname,$domain) = split(/:/, $person); push(@people, [&Apache::loncommon::plainname($uname,$domain), $uname,$domain]); } @people = sort { $a->[0] cmp $b->[0] } (@people); - for my $person (@people) { + foreach my $person (@people) { push(@course_personnel, [join(':', $person->[1],$person->[2]), - $person->[0], '', '', $role]); + $person->[0], $section, 'Active', + &Apache::lonnet::plaintext($role)]); } } # Students must be split into the three categories: @@ -110,12 +116,10 @@ sub get_people_in_class { my $classlist = &Apache::loncoursedata::get_classlist(); my @keys = keys(%{$classlist}); - # Sort by: Section, name + # Sort by: fullname, username @keys = sort { - if ($classlist->{$a}->[$section] ne $classlist->{$b}->[$section]) { - return $classlist->{$a}->[$section] cmp $classlist->{$b}->[$section]; - } - return $classlist->{$a}->[$fullname] cmp $classlist->{$b}->[$fullname]; + lc($classlist->{$a}[$fullname]) cmp lc($classlist->{$b}[$fullname]) || + lc($a) cmp lc($b) } (@keys); @@ -179,25 +183,30 @@ sub get_people_in_class { # This should be true for the first call for a page # and false for all other calls... only matters if # multiselect is true. +# $context - If email, do not include

tags at the end +# of the data table. # Returns: # HTML text to add to the rendering of the helper. # sub render_student_list { my ($students, $formname, $formprefix, $defaultusers, - $multiselect, $resultname, $javascript) = @_; + $multiselect, $resultname, $javascript, $context) = @_; my $result = ""; + # no students so no output + return if (!@$students); + if ($javascript && $multiselect) { $result .= < // @@ -319,21 +328,21 @@ SCRIPT if ($size > 5) { $size = 5; } - $result .= ''; + $result .= ''; + $result .= ''; $result .= ''; + .'.unselect" value="'.&mt('Unselect').'" onclick='. + "'unselectSections(\"$formprefix.chosensections\", \"$formprefix\", document.forms.$formname)' ".' />'; } # Now we list the students, but the form element type @@ -343,11 +352,11 @@ SCRIPT $result .= &Apache::loncommon::start_data_table(); $result .= &Apache::loncommon::start_data_table_header_row(); - $result .= 'Name'."\n"; - $result .= ' Section'."\n"; - $result .= ' Status'."\n"; - $result .= ' Role'."\n"; - $result .= ' Username : Domain'."\n"; + $result .= ''.&mt('Name').''."\n"; + $result .= ' '.&mt('Section').''."\n"; + $result .= ' '.&mt('Status').''."\n"; + $result .= ' '.&mt('Role').''."\n"; + $result .= ' '.&mt('Username : Domain').''."\n"; $result .= &Apache::loncommon::end_data_table_header_row(); my $input_type; @@ -361,7 +370,7 @@ SCRIPT for my $student (@$students) { $result .= &Apache::loncommon::start_data_table_row(). '[0]; # Figure out which students are checked by default... @@ -394,8 +403,10 @@ SCRIPT . ''.&Apache::loncommon::end_data_table_row(). "\n"; } - $result .= &Apache::loncommon::end_data_table(). - "

\n"; + $result .= &Apache::loncommon::end_data_table(); + if ($context ne 'email') { + $result .= "

\n"; + } return $result; }