--- loncom/interface/lonpickstudent.pm 2007/08/02 01:39:26 1.22 +++ loncom/interface/lonpickstudent.pm 2007/08/10 23:20:09 1.23 @@ -1,7 +1,7 @@ # The LearningOnline Network # Pick a student from the classlist # -# $Id: lonpickstudent.pm,v 1.22 2007/08/02 01:39:26 albertel Exp $ +# $Id: lonpickstudent.pm,v 1.23 2007/08/10 23:20:09 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -122,8 +122,8 @@ 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(/\:/,$_); + foreach my $user (split(/\,/,$coursepersonnel{$role})) { + my ($puname,$pudom)=split(/\:/,$user); $role = &Apache::lonnet::plaintext($role, &Apache::loncommon::course_type()); $r->print(&Apache::loncommon::start_data_table_row(). @@ -201,28 +201,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().'

'); }