--- loncom/interface/lonmenu.pm 2021/06/07 03:32:02 1.507
+++ loncom/interface/lonmenu.pm 2022/05/24 16:23:03 1.516
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines to control the menu
#
-# $Id: lonmenu.pm,v 1.507 2021/06/07 03:32:02 raeburn Exp $
+# $Id: lonmenu.pm,v 1.516 2022/05/24 16:23:03 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -99,7 +99,7 @@ It gets filled in the BEGIN block of thi
=over
-=item prep_menuitems(\@menuitem,$ltitarget)
+=item prep_menuitems(\@menuitem,$ltitarget,$deeplinktarget,$listclass,$linkattr)
This routine wraps a menuitem in proper HTML. It is used by primary_menu() and
secondary_menu().
@@ -220,7 +220,7 @@ use vars qw(@desklines %category_names %
my @inlineremote;
sub prep_menuitem {
- my ($menuitem,$ltitarget) = @_;
+ my ($menuitem,$ltitarget,$deeplinktarget,$listclass,$linkattr) = @_;
return '' unless(ref($menuitem) eq 'ARRAY');
my $link;
if ($$menuitem[1]) { # graphical Link
@@ -233,11 +233,13 @@ sub prep_menuitem {
my $target = ' target="_top"';
if ($ltitarget eq 'iframe') {
$target ='';
+ } elsif ($deeplinktarget eq '_self') {
+ $target = $deeplinktarget;
}
- return '
|;
}
# primary_menu() evaluates @primary_menu and returns a two item array,
@@ -247,7 +249,7 @@ sub prep_menuitem {
# @primary_menu is filled within the BEGIN block of this module with
# entries from mydesk.tab
sub primary_menu {
- my ($crstype,$ltimenu,$menucoll,$menuref) = @_;
+ my ($crstype,$ltimenu,$menucoll,$menuref,$links_disabled) = @_;
my (%menu,%ltiexc,%menuopts);
# each element of @primary contains following array:
# (link url, icon path, alt text, link text, condition, position)
@@ -265,7 +267,7 @@ sub primary_menu {
my %roles_in_env;
$rolecount = &Apache::lonroles::roles_from_env(\%roles_in_env,$update);
}
- my ($lti,$ltitarget);
+ my ($lti,$ltitarget,$deeplinktarget);
if ($env{'request.lti.login'}) {
$lti = 1;
$ltitarget = $env{'request.lti.target'};
@@ -277,6 +279,9 @@ sub primary_menu {
}
}
}
+ if ($env{'request.deeplink.login'}) {
+ $deeplinktarget = $env{'request.deeplink.target'};
+ }
if (($menucoll) && (ref($menuref) eq 'HASH')) {
%menuopts = %{$menuref};
}
@@ -295,10 +300,10 @@ sub primary_menu {
# users
next if $$menuitem[4] eq 'roles' ##show links depending on
&& (&Apache::loncommon::show_course() ##term 'Courses' or
- || $env{'request.lti.login'}); ##'Roles' wanted
+ || $lti); ##'Roles' wanted
next if $$menuitem[4] eq 'courses' ##and not LTI access
&& (!&Apache::loncommon::show_course()
- || !$env{'request.lti.login'});
+ || $lti);
next if $$menuitem[4] eq 'notlti'
&& $lti;
next if $$menuitem[4] eq 'ltiexc'
@@ -316,13 +321,32 @@ sub primary_menu {
$position = 'right';
}
if ($env{'request.course.id'} && $menucoll) {
- next if (($menuitem->[6]) && (!$menuopts{$menuitem->[6]}));
+ if (($menuitem->[6]) && (!$menuopts{$menuitem->[6]})) {
+ if ($menuitem->[6] eq 'pers') {
+ if ($menuopts{'name'} && !$ltiexc{'fullname'} &&
+ $env{'user.name'} && $env{'user.domain'}) {
+ $menu{$position} .= '