--- loncom/homework/bridgetask.pm 2006/05/25 19:39:13 1.155 +++ loncom/homework/bridgetask.pm 2006/05/25 19:55:10 1.156 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # definition of tags that give a structure to a document # -# $Id: bridgetask.pm,v 1.155 2006/05/25 19:39:13 albertel Exp $ +# $Id: bridgetask.pm,v 1.156 2006/05/25 19:55:10 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1198,6 +1198,24 @@ sub add_to_queue { return &Apache::lonnet::cput($queue,\%data,$cdom,$cnum); } +sub get_limited_classlist { + my ($sections) = @_; + + my $classlist = &Apache::loncoursedata::get_classlist(); + + if (!grep('all',@{ $sections })) { + foreach my $student (keys(%$classlist)) { + my $section = + $classlist->{$student}[&Apache::loncoursedata::CL_SECTION()]; + if (! grep($section,@{ $sections })) { + delete($classlist->{$student}); + } + } + } + return $classlist; +} + + sub show_queue { my ($queue,$with_selects)=@_; my $result; @@ -1207,14 +1225,25 @@ sub show_queue { my @chosen_sections= &Apache::loncommon::get_env_multiple('form.chosensections'); - &Apache::grades::init_perm(); - my ($classlist,$section,$fullname)=&Apache::grades::getclasslist(\@chosen_sections,); - &Apache::grades::reset_perm(); + + my $classlist = &get_limited_classlist(\@chosen_sections); + if (!(grep(/^all$/,@chosen_sections))) { $result.='
Showing only sections '.join(', ',@chosen_sections). '.
'."\n"; } + my ($view,$view_section); + my $scope = $env{'request.course.id'}; + if (!($view=&Apache::lonnet::allowed('vgr',$scope))) { + $scope .= '/'.$env{'request.course.sec'}; + if ( $view = &Apache::lonnet::allowed('vgr',$scope)) { + $view_section=$env{'request.course.sec'}; + } else { + undef($view); + } + } + my $regexp="^$symb\0"; my %queue=&Apache::lonnet::dump($queue,$cdom,$cnum,$regexp); my ($tmp)=%queue; @@ -1228,6 +1257,16 @@ sub show_queue { foreach my $key (sort(keys(%queue))) { my ($symb,$uname,$udom) = &decode_queue_key($key); if (!defined($classlist->{$uname.':'.$udom})) { next; } + + my $section = $classlist->{$uname.':'.$udom}[&Apache::loncoursedata::CL_SECTION()]; + + my $can_view=1; + if (!$view + || ($view_section && !$section) + || ($view_section && $section && ($view_section ne $section))) { + $can_view=0; + } + if ($key=~/locked$/ && !$with_selects) { $result.="