--- loncom/interface/lonmenu.pm 2019/01/08 23:40:16 1.496 +++ loncom/interface/lonmenu.pm 2020/02/17 23:04:18 1.501 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines to control the menu # -# $Id: lonmenu.pm,v 1.496 2019/01/08 23:40:16 raeburn Exp $ +# $Id: lonmenu.pm,v 1.501 2020/02/17 23:04:18 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -448,10 +448,9 @@ sub secondary_menu { $showresv = 1; } } - my %groups = &Apache::lonnet::get_active_groups( - $env{'user.domain'}, $env{'user.name'},$cdom,$cnum); - if (%groups) { - foreach my $group (keys(%groups)) { + if ($env{'request.course.groups'} ne '') { + foreach my $group (split(/:/,$env{'request.course.groups'})) { + next unless ($group =~ /^\w+$/); my @privs = split(/:/,$env{"user.priv.$env{'request.role'}./$cdom/$cnum/$group"}); shift(@privs); if (@privs) { @@ -1366,17 +1365,20 @@ sub prepare_functions { if ((($cfile eq '') || (!$editbutton)) && ($resurl =~ /$LONCAPA::assess_re/)) { my $showurl = &Apache::lonnet::clutter($resurl); + my $crs_sec = $env{'request.course.id'} . (($env{'request.course.sec'} ne '') + ? "/$env{'request.course.sec'}" + : ''); if ((&Apache::lonnet::allowed('cre','/')) && (&Apache::lonnet::metadata($resurl,'sourceavail') eq 'open')) { $viewsrcbutton = 1; - } elsif (&Apache::lonnet::allowed('vxc',$env{'request.course.id'})) { + } elsif (&Apache::lonnet::allowed('vxc',$crs_sec)) { if ($showurl =~ m{^\Q/res/$cdom/\E($match_username)/}) { my $auname = $1; if (($env{'request.course.adhocsrcaccess'} ne '') && (grep(/^\Q$auname\E$/,split(/,/,$env{'request.course.adhocsrcaccess'})))) { $viewsrcbutton = 1; } elsif ((&Apache::lonnet::metadata($resurl,'sourceavail') eq 'open') && - (&Apache::lonnet::allowed('bre','/'))) { + (&Apache::lonnet::allowed('bre',$crs_sec))) { $viewsrcbutton = 1; } } @@ -1911,7 +1913,11 @@ sub done_button_js { my @resources=(); if ($type eq 'map') { my ($mapurl,$rid,$resurl)=&Apache::lonnet::decode_symb($env{'request.symb'}); - @resources=$navmap->retrieveResources($mapurl,sub { $_[0]->is_problem() }); + if ($env{'request.symb'} =~ /\.page$/) { + @resources=$navmap->retrieveResources($resurl,sub { $_[0]->is_problem() }); + } else { + @resources=$navmap->retrieveResources($mapurl,sub { $_[0]->is_problem() }); + } } else { my $res = $navmap->getBySymb($env{'request.symb'}); if (ref($res)) {