--- loncom/interface/lonpickstudent.pm 2009/11/05 14:24:01 1.28 +++ loncom/interface/lonpickstudent.pm 2020/02/12 16:25:47 1.33 @@ -1,7 +1,7 @@ # The LearningOnline Network # Pick a student from the classlist # -# $Id: lonpickstudent.pm,v 1.28 2009/11/05 14:24:01 raeburn Exp $ +# $Id: lonpickstudent.pm,v 1.33 2020/02/12 16:25:47 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -50,18 +50,20 @@ sub handler { &Apache::loncommon::get_unprocessed_cgi ($ENV{'QUERY_STRING'},['filter','form','unameelement','udomelement', - 'roles','courseadvonly']); + 'roles','courseadv','clicker']); # Allowed? my $allowed; - my $scope = $env{'request.course.id'}; - if (!($allowed = &Apache::lonnet::allowed('srm',$scope))) { - $scope .= '/'.$env{'request.course.sec'}; - $allowed = &Apache::lonnet::allowed('srm',$scope); - if ($allowed) { $allowed = 'section'; } + if ($env{'request.course.id'}) { + if (!($allowed = &Apache::lonnet::allowed('srm',$env{'request.course.id'}))) { + if ($env{'request.course.sec'}) { + $allowed = &Apache::lonnet::allowed('srm', + "$env{'request.course.id'}/$env{'request.course.sec'}"); + if ($allowed) { $allowed = 'section'; } + } + } } - unless (($env{'form.roles'}) || - (($env{'request.course.id'}) && ($allowed))) { + unless (($env{'form.roles'}) || ($allowed)) { $r->print(&mt('No context.'). &Apache::loncommon::end_page()); return OK; @@ -77,16 +79,23 @@ sub handler { FILTER - foreach my $name ('form','unameelement','udomelement','roles') { + foreach my $name ('form','unameelement','udomelement','roles','courseadv','clicker') { my $value = &HTML::Entities::encode($env{"form.$name"},'<>&"'); $filterbutton .= < HIDDEN } - unless ($env{'form.courseadvonly'}) { - $filtermsg = '
'. - &mt('Showing users with a name starting with [_1]', - $filterbutton).'
'; + unless ($env{'form.courseadv'} eq 'only') { + if ($env{'request.course.id'}) { + my $crstype = &Apache::loncommon::course_type(); + my $showrole = &Apache::lonnet::plaintext('st',$crstype); + $filtermsg = &mt("Showing users with role of '[_1]' with name starting: [_2]", + $showrole,$filterbutton); + } else { + $filtermsg = + &mt('Showing users with a name starting with [_1]', + $filterbutton); + } } if ($filter eq '') { $filter = '.' @@ -108,34 +117,58 @@ function gochoose(uname,udom) { ENDSCRIPT - $r->print('
'); + $r->print(''); if ($allowed && (!$env{'form.roles'})) { + unless ($env{'form.courseadv'} eq 'none') { # -------------------------------------------------------- Get course personnel - $r->print('

'.$env{'course.'.$env{'request.course.id'}.'.description'}. - '

'); - my %coursepersonnel= - &Apache::lonnet::get_course_adv_roles(); - $r->print(&Apache::loncommon::start_data_table()); - foreach my $role (sort(keys(%coursepersonnel))) { - 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()); - } - } - $r->print(&Apache::loncommon::end_data_table().'

 '); + $r->print('

'.$env{'course.'.$env{'request.course.id'}.'.description'}. + '

'); + my %coursepersonnel= + &Apache::lonnet::get_course_adv_roles(); + $r->print(&Apache::loncommon::start_data_table()); + foreach my $role (sort(keys(%coursepersonnel))) { + 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()); + } + } + $r->print(&Apache::loncommon::end_data_table().'

'); + } - $r->print($filtermsg); + if ($filtermsg ne '') { + $r->print('

'.$filtermsg.'

'); + } - $r->print('

'); + $r->rflush(); - unless ($env{'form.courseadvonly'}) { + unless ($env{'form.courseadv'} eq 'only') { # ------------------------------------------------------------------ Students + +# Do we have a clicker? + + my $clicker=$env{'form.clicker'}; + my @fragments=(); + if ($clicker) { + $r->print('

'.&mt('Clicker: [_1]',$clicker).'

'); + my $clicklength=length($clicker); + my $maxlength=$clicklength-1; + if ($maxlength>2) { + my $minlength=$maxlength-2; + if ($minlength<2) { $minlength=2; } + for (my $length=$maxlength;$length>=$minlength;$length--) { + for (my $startidx=0; $startidx<=$clicklength-$length; $startidx++) { + push(@fragments,substr($clicker,$startidx,$length)); + } + } + } + } + my $result; my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; @@ -164,9 +197,23 @@ ENDSCRIPT } } $grouplist =~ s/,$//; + my $markedupclicker; + if ($clicker) { + $markedupclicker=(&Apache::lonnet::userenvironment($udom,$uname,'clickers'))[1]; + if ($markedupclicker!~/\w/) { + $markedupclicker='-'; + } else { + foreach my $frag (@fragments) { + if ($markedupclicker=~/\Q$frag\E/is) { + $markedupclicker=~s/(\Q$frag\E)/$1<\/b><\/font>/gis; + last; + } + } + } + } $result .=&Apache::loncommon::start_data_table_row(). ''. - ''. ''.$uname.' '.$udom. ''. @@ -174,6 +221,7 @@ ENDSCRIPT $uname,$udom). ''.$id.''.$section. ''.$grouplist.''. + ($clicker?''.$markedupclicker.'':''). &Apache::loncommon::end_data_table_row(); } } @@ -191,6 +239,7 @@ ENDSCRIPT ''.&mt('ID').''. ''.&mt('section').''. ''.&mt('active group(s)').''. + ($clicker?''.&mt('clicker').'':''). &Apache::loncommon::end_data_table_header_row(). $result. &Apache::loncommon::end_data_table()); @@ -201,6 +250,7 @@ ENDSCRIPT &Apache::loncommon::plainname($env{'user.name'}, $env{'user.domain'}).''); $r->print($filtermsg); + $r->rflush(); $r->print('

'.&Apache::loncommon::start_data_table()); my %user_role=&Apache::lonnet::get_my_roles(); @@ -221,7 +271,7 @@ ENDSCRIPT my ($uname,$udom) = split(':',$user); $r->print(&Apache::loncommon::start_data_table_row(). ''. - ''. ''.$uname.''. ''.$udom.''. @@ -237,7 +287,7 @@ ENDSCRIPT } $r->print('

'.&Apache::loncommon::end_page()); return OK; -} +} 1; __END__