--- loncom/interface/lonmenu.pm 2022/05/24 16:23:03 1.516 +++ loncom/interface/lonmenu.pm 2022/05/28 15:55:34 1.519 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines to control the menu # -# $Id: lonmenu.pm,v 1.516 2022/05/24 16:23:03 raeburn Exp $ +# $Id: lonmenu.pm,v 1.519 2022/05/28 15:55:34 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -234,7 +234,7 @@ sub prep_menuitem { if ($ltitarget eq 'iframe') { $target =''; } elsif ($deeplinktarget eq '_self') { - $target = $deeplinktarget; + $target = ' target="'.$deeplinktarget.'"'; } return ($listclass?'
  • ':'
  • ').' @@ -2519,7 +2526,7 @@ sub hidden_button_check { } sub roles_selector { - my ($cdom,$cnum,$httphost) = @_; + my ($cdom,$cnum,$httphost,$menucoll,$menuref) = @_; my $crstype = &Apache::loncommon::course_type(); my $now = time; my (%courseroles,%seccount,%courseprivs,%roledesc); @@ -2626,7 +2633,8 @@ sub roles_selector { } if ((keys(%seccount) > 1) || ($numdiffsec > 1)) { my @submenu; - $js = &jump_to_role($cdom,$cnum,\%seccount,\%courseroles,\%courseprivs,\%roledesc,$privref); + $js = &jump_to_role($cdom,$cnum,\%seccount,\%courseroles,\%courseprivs, + \%roledesc,$privref,$menucoll,$menuref); $form = '
    '."\n". ' 0) && (ref($courseprivs) eq 'HASH')) { my %disallowed; foreach my $role (sort(keys(%{$courseprivs}))) { @@ -2915,8 +2927,22 @@ sub jump_to_role { $checkroles = 1; $js .= " var disallow = new Array('".join("','",keys(%disallowed))."');\n". " var rolecheck = 1;\n"; + if ($menucoll) { + if (ref($menuref) eq 'HASH') { + if ($menuref->{'main'} eq 'n') { + $fallback = '/adm/navmaps'; + if (&Apache::loncommon::course_type() eq 'Community') { + $displaymsg = &mt('Switch role, but display Community Contents page instead?'); + } else { + $displaymsg = &mt('Switch role, but display Course Contents page instead?'); + } + &js_escape(\$displaymsg); + } + } + } } } + &js_escape(\$fallback); if (!$checkroles) { $js .= " var disallow = new Array();\n". " rolecheck = 0;\n"; @@ -2939,8 +2965,8 @@ function adhocRole(newrole) { if (rolecheck > 0) { for (var i=0; i