--- loncom/interface/lonmenu.pm 2016/10/26 15:12:46 1.369.2.60 +++ loncom/interface/lonmenu.pm 2016/10/30 18:12:43 1.369.2.63 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines to control the menu # -# $Id: lonmenu.pm,v 1.369.2.60 2016/10/26 15:12:46 raeburn Exp $ +# $Id: lonmenu.pm,v 1.369.2.63 2016/10/30 18:12:43 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -677,7 +677,7 @@ sub registerurl { } sub innerregister { - my ($forcereg,$bread_crumbs,$group) = @_; + my ($forcereg,$bread_crumbs,$group,$pagebuttonshide) = @_; my $const_space = ($env{'request.state'} eq 'construct'); my $is_const_dir = 0; @@ -1031,22 +1031,24 @@ ENDMENUITEMS my $addremote=0; foreach (@inlineremote) { if ($_ ne '') { $addremote=1; last;} } if ($addremote) { - - &Apache::lonhtmlcommon::clear_breadcrumb_tools(); - - &Apache::lonhtmlcommon::add_breadcrumb_tool( - 'navigation', @inlineremote[21,23]); - - my $countdown; + my ($countdown,$buttonshide); if ($env{'request.filename'} =~ /\.page$/) { my %breadcrumb_tools = &Apache::lonhtmlcommon::current_breadcrumb_tools(); if (ref($breadcrumb_tools{'tools'}) eq 'ARRAY') { - $countdown = $breadcrumb_tools{'tools'}[0]; + $countdown = $breadcrumb_tools{'tools'}->[0]; } + $buttonshide = $pagebuttonshide; } else { $countdown = &countdown_timer(); + $buttonshide = &hidden_button_check(); } - if (&hidden_button_check() eq 'yes') { + + &Apache::lonhtmlcommon::clear_breadcrumb_tools(); + + &Apache::lonhtmlcommon::add_breadcrumb_tool( + 'navigation', @inlineremote[21,23]); + + if ($buttonshide eq 'yes') { if ($countdown) { &Apache::lonhtmlcommon::add_breadcrumb_tool('tools',$countdown); } @@ -2356,7 +2358,7 @@ sub roles_selector { } else { $ccrole = 'cc'; } - my ($priv,$gotsymb,$destsymb); + my ($privref,$gotsymb,$destsymb); my $destinationurl = $ENV{'REQUEST_URI'}; if ($destinationurl =~ /\?symb=/) { $gotsymb = 1; @@ -2377,12 +2379,15 @@ sub roles_selector { my $destination = $destinationurl; $destination =~ s/(\?.*)$//; if (exists($reqprivs->{$destination})) { - $priv = $reqprivs->{$destination}; + if ($reqprivs->{$destination} =~ /,/) { + @{$privref} = split(/,/,$reqprivs->{$destination}); + } else { + $privref = [$reqprivs->{$destination}]; + } } } if ($env{'user.role.'.$ccrole.'./'.$cdom.'/'.$cnum}) { my ($start,$end) = split(/\./,$env{'user.role.'.$ccrole.'./'.$cdom.'/'.$cnum}); - if ((($start) && ($start<0)) || (($end) && ($end<$now)) || (($start) && ($now<$start))) { @@ -2392,7 +2397,9 @@ sub roles_selector { } } if ($is_cc) { - &get_all_courseroles($cdom,$cnum,\%courseroles,\%seccount,\%courseprivs,$priv); + &get_all_courseroles($cdom,$cnum,\%courseroles,\%seccount,\%courseprivs); + } elsif ($env{'request.role'} =~ m{^\Qcr/$cdom/$cdom-domainconfig/\E(\w+)\.\Q/$cdom/$cnum\E}) { + &get_customadhoc_roles($cdom,$cnum,\%courseroles,\%seccount,\%courseprivs,$privref); } else { my %gotnosection; foreach my $item (keys(%env)) { @@ -2408,7 +2415,7 @@ sub roles_selector { $gotnosection{$role} = 1; } } - if ($priv ne '') { + if ((ref($privref) eq 'ARRAY') && (@{$privref} > 0)) { my $cnumsec = $cnum; if ($sec ne '') { $cnumsec .= "/$sec"; @@ -2446,7 +2453,7 @@ sub roles_selector { } if ((keys(%seccount) > 1) || ($numdiffsec > 1)) { my @submenu; - $js = &jump_to_role($cdom,$cnum,\%seccount,\%courseroles,\%courseprivs,$priv); + $js = &jump_to_role($cdom,$cnum,\%seccount,\%courseroles,\%courseprivs,$privref); $form = '