--- loncom/interface/lonpickstudent.pm 2007/07/21 00:48:55 1.21
+++ loncom/interface/lonpickstudent.pm 2009/03/01 01:17:20 1.26
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Pick a student from the classlist
#
-# $Id: lonpickstudent.pm,v 1.21 2007/07/21 00:48:55 albertel Exp $
+# $Id: lonpickstudent.pm,v 1.26 2009/03/01 01:17:20 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -70,25 +70,24 @@ sub handler {
# See if filter present
my $filter=$env{'form.filter'};
my $filtermsg;
- if ($filter eq '') {
- $filter = '.'
- } else {
- my $encoded_filter = &HTML::Entities::encode($filter,'<>&"');
- $filter = quotemeta($filter);
- my $change = &mt('Change');
- my $filterbutton =<&"');
+ $filter = quotemeta($filter);
+ my $change = &mt('Change');
+ my $filterbutton =<
FILTER
- foreach my $name ('form','unameelement','udomelement','roles') {
- my $value = &HTML::Entities::encode($env{"form.$name"},'<>&"');
- $filterbutton .= <&"');
+ $filterbutton .= <
HIDDEN
- }
- $filtermsg = ' '.
- &mt('Showing users with a name starting with [_1]',
- $filterbutton).' ';
+ }
+ $filtermsg = ' '.
+ &mt('Showing users with a name starting with [_1]',
+ $filterbutton).' ';
+ if ($filter eq '') {
+ $filter = '.'
}
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
@@ -123,13 +122,11 @@ ENDSCRIPT
&Apache::lonnet::get_course_adv_roles();
$r->print(&Apache::loncommon::start_data_table());
foreach my $role (sort(keys(%coursepersonnel))) {
- foreach (split(/\,/,$coursepersonnel{$role})) {
- my ($puname,$pudom)=split(/\:/,$_);
- $role = &Apache::lonnet::plaintext($role,
- &Apache::loncommon::course_type());
+ foreach my $user (split(/\,/,$coursepersonnel{$role})) {
+ my ($puname,$pudom)=split(/\:/,$user);
$r->print(&Apache::loncommon::start_data_table_row().
''.
- ' '.$role.' '.
&Apache::loncommon::aboutmewrapper(&Apache::loncommon::plainname($puname,$pudom),$puname,$pudom).' '.
&Apache::loncommon::end_data_table_row());
@@ -139,19 +136,10 @@ ENDSCRIPT
$r->print($filtermsg);
- $r->print('
'.
- &Apache::loncommon::start_data_table().
- &Apache::loncommon::start_data_table_header_row().
- &Apache::loncommon::end_data_table_header_row().
- '
'.
- ''.&mt('username').' '.
- ''.&mt('domain').' '.
- ''.&mt('Name').' '.
- ''.&mt('ID').' '.
- ''.&mt('section').' '.
- ''.&mt('active group(s)').' '.
- &Apache::loncommon::end_data_table_header_row());
+ $r->print('');
+
# ------------------------------------------------------------------ Students
+ my $result;
foreach my $user (sort(keys(%$classlist))) {
# the following undefs are for 'domain', and 'username' respectively.
my (undef,undef,$end,$start,$id,$section,$fullname,$status)=
@@ -173,7 +161,7 @@ ENDSCRIPT
}
}
$grouplist =~ s/,$//;
- $r->print(&Apache::loncommon::start_data_table_row().
+ $result .=&Apache::loncommon::start_data_table_row().
''.
' '.
@@ -183,12 +171,27 @@ ENDSCRIPT
$uname,$udom).
''.$id.' '.$section.
' '.$grouplist.' '.
- &Apache::loncommon::end_data_table_row());
+ &Apache::loncommon::end_data_table_row();
}
}
}
-
- $r->print(&Apache::loncommon::end_data_table().'');
+ if (!$result) {
+ $r->print(''.&mt('No students found.').'
');
+ } else {
+ $r->print(&Apache::loncommon::start_data_table().
+ &Apache::loncommon::start_data_table_header_row().
+ &Apache::loncommon::end_data_table_header_row().
+ ' '.
+ ''.&mt('username').' '.
+ ''.&mt('domain').' '.
+ ''.&mt('Name').' '.
+ ''.&mt('ID').' '.
+ ''.&mt('section').' '.
+ ''.&mt('active group(s)').' '.
+ &Apache::loncommon::end_data_table_header_row().
+ $result.
+ &Apache::loncommon::end_data_table());
+ }
} else {
$r->print(''.&mt('Users with Roles Assigned by').' '.
&Apache::loncommon::plainname($env{'user.name'},
@@ -196,28 +199,35 @@ ENDSCRIPT
$r->print($filtermsg);
$r->print(' '.&Apache::loncommon::start_data_table());
- my %users=&Apache::lonnet::get_my_roles();
- foreach my $user (sort(keys(%users))) {
- if ($user =~
- /^($LONCAPA::username_re)\:($LONCAPA::domain_re)\:(\w+)$/) {
- my ($uname,$udom,$urole)=($1,$2,$3);
- my $fullname=&Apache::loncommon::plainname($uname,$udom);
- if (($uname=~/^$filter/) ||
- ($fullname=~/^$filter/i)) {
- $r->print(&Apache::loncommon::start_data_table_row().
- '
'.
- ' '.
- ''.$uname.' '.$udom.
- ' '.
- &Apache::loncommon::aboutmewrapper(
- $fullname,
- $uname,$udom).' '.
- &Apache::lonnet::plaintext($urole).
- ' '.
- &Apache::loncommon::end_data_table_row());
- }
+ my %user_role=&Apache::lonnet::get_my_roles();
+ my %users;
+ foreach my $user_role (keys(%user_role)) {
+ next if ($user_role !~
+ /^($LONCAPA::username_re):($LONCAPA::domain_re):(\w+)$/);
+ my ($uname,$udom,$urole)=($1,$2,$3);
+ my $fullname=&Apache::loncommon::plainname($uname,$udom);
+ next if (($uname!~/^$filter/i) && ($fullname !~/^$filter/i));
+
+ if (!exists($users{"$uname:$udom"})) {
+ $users{"$uname:$udom"} = {'fullname' => $fullname };
}
+ push(@{$users{"$uname:$udom"}{'roles'}},$urole);
+ }
+ foreach my $user (sort {lc($a) cmp lc($b)} (keys(%users))) {
+ my ($uname,$udom) = split(':',$user);
+ $r->print(&Apache::loncommon::start_data_table_row().
+ ''.
+ ' '.
+ ''.$uname.' '.
+ ''.$udom.' '.
+ &Apache::loncommon::aboutmewrapper($users{$user}{'fullname'},
+ $uname,$udom).' '.
+ ''.
+ join(', ',sort(map {&Apache::lonnet::plaintext($_)}
+ (@{$users{$user}{'roles'}}))).
+ ' '.
+ &Apache::loncommon::end_data_table_row());
}
$r->print(&Apache::loncommon::end_data_table().'');
}