--- loncom/interface/lonmenu.pm 2018/04/27 23:01:05 1.490 +++ loncom/interface/lonmenu.pm 2018/05/08 20:30:12 1.491 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines to control the menu # -# $Id: lonmenu.pm,v 1.490 2018/04/27 23:01:05 raeburn Exp $ +# $Id: lonmenu.pm,v 1.491 2018/05/08 20:30:12 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -247,8 +247,8 @@ sub prep_menuitem { # @primary_menu is filled within the BEGIN block of this module with # entries from mydesk.tab sub primary_menu { - my ($crstype) = @_; - my (%menu); + my ($crstype,$ltimenu) = @_; + my (%menu,%ltiexc); # each element of @primary contains following array: # (link url, icon path, alt text, link text, condition, position) my $public; @@ -265,9 +265,17 @@ sub primary_menu { my %roles_in_env; $rolecount = &Apache::lonroles::roles_from_env(\%roles_in_env,$update); } - my $ltitarget; + my ($lti,$ltitarget); if ($env{'request.lti.login'}) { + $lti = 1; $ltitarget = $env{'request.lti.target'}; + if (ref($ltimenu) eq 'HASH') { + foreach my $item ('fullname','logout') { + unless ($ltimenu->{$item}) { + $ltiexc{$item} = 1; + } + } + } } foreach my $menuitem (@primary_menu) { # evaluate conditions @@ -283,9 +291,15 @@ sub primary_menu { && !$public; # only visible to public # users next if $$menuitem[4] eq 'roles' ##show links depending on - && &Apache::loncommon::show_course(); ##term 'Courses' or - next if $$menuitem[4] eq 'courses' ##'Roles' wanted - && !&Apache::loncommon::show_course(); ## + && (&Apache::loncommon::show_course() ##term 'Courses' or + || $env{'request.lti.login'}); ##'Roles' wanted + next if $$menuitem[4] eq 'courses' ##and not LTI access + && (!&Apache::loncommon::show_course() + || !$env{'request.lti.login'}); + next if $$menuitem[4] eq 'notlti' + && $lti; + next if $$menuitem[4] eq 'ltiexc' + && exists($ltiexc{lc($menuitem->[3])}); my $title = $menuitem->[3]; if (($crstype eq 'Placement') && (!$env{'request.role.adv'})) { if ($menuitem->[4] eq 'courses') { @@ -320,7 +334,9 @@ sub primary_menu { push(@primsub,$item); } if ($title eq 'Personal' && $env{'user.name'} && $env{'user.domain'} ) { - $title = &Apache::loncommon::plainname($env{'user.name'},$env{'user.domain'}); + unless ($ltiexc{'fullname'}) { + $title = &Apache::loncommon::plainname($env{'user.name'},$env{'user.domain'}); + } } else { $title = &mt($title); } @@ -384,7 +400,7 @@ sub getauthor{ } sub secondary_menu { - my ($httphost,$ltiscope) = @_; + my ($httphost,$ltiscope,$ltimenu,$noprimary) = @_; my $menu; my $crstype = &Apache::loncommon::course_type(); @@ -408,7 +424,7 @@ sub secondary_menu { my $canplc = &Apache::lonnet::allowed('plc', $crs_sec); my $author = &getauthor(); - my ($cdom,$cnum,$showsyllabus,$showfeeds,$showresv,$grouptools); + my ($cdom,$cnum,$showsyllabus,$showfeeds,$showresv,$grouptools,$lti,$ltimapres,%ltiexc); $grouptools = 0; if ($env{'request.course.id'}) { $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; @@ -443,6 +459,19 @@ sub secondary_menu { } } } + if ($env{'request.lti.login'}) { + $lti = 1; + if (ref($ltimenu) eq 'HASH') { + foreach my $item ('fullname','coursetitle','role','logout','grades') { + unless ($ltimenu->{$item}) { + $ltiexc{$item} = 1; + } + } + } + if (($ltiscope eq 'map') || ($ltiscope eq 'resource')) { + $ltimapres = 1; + } + } } my ($canmodifycoauthor); @@ -453,6 +482,7 @@ sub secondary_menu { $canmodifycoauthor = 1; } } + my ($roleswitcher_js,$roleswitcher_form,$ltitarget); if ($env{'request.lti.login'}) { $ltitarget = $env{'request.lti.target'}; @@ -468,7 +498,7 @@ sub secondary_menu { next if $$menuitem[4] =~ /^crsedit/ && (!$canedit && !$canvieweditor); next if $$menuitem[4] eq 'nvgr' - && $canvgr; + && ($canvgr || $ltiexc{'grades'}); next if $$menuitem[4] eq 'vgr' && !$canvgr; next if $$menuitem[4] eq 'viewusers' @@ -496,7 +526,13 @@ sub secondary_menu { next if $$menuitem[4] eq 'cca' && !$canmodifycoauthor; next if $$menuitem[4] eq 'notltimapres' - && (($ltiscope eq 'resource') || ($ltiscope eq 'map')); + && $ltimapres; + next if $$menuitem[4] eq 'notlti' + && $lti; + next if $$menuitem[4] eq 'lti' + && (!$lti || !$noprimary); + next if $$menuitem[3] eq 'Logout' + && $ltiexc{'logout'}; my $title = $menuitem->[3]; if (defined($secondary_submenu{$title})) { @@ -523,9 +559,21 @@ sub secondary_menu { next if ($item->[2] eq 'params' && !$canmodpara && !$canviewpara); next if ($item->[2] eq 'author' && !$author); next if ($item->[2] eq 'cca' && !$canmodifycoauthor); + next if ($item->[2] eq 'lti' && !$lti); + if ($item->[2] =~ /^lti(portfolio|wishlist|blog)$/) { + my $tool = $1; + next if !$lti; + next if (!&Apache::lonnet::usertools_access('','',$tool, + undef,'tools')); + } push(@scndsub,$item); } } + if ($title eq 'Personal' && $env{'user.name'} && $env{'user.domain'} ) { + unless ($ltiexc{'fullname'}) { + $title = &Apache::loncommon::plainname($env{'user.name'},$env{'user.domain'}); + } + } if (@scndsub > 0) { $menu .= &create_submenu($link,$target,$title,\@scndsub,1); } elsif ($link ne '#') { @@ -534,15 +582,16 @@ sub secondary_menu { } } elsif ($$menuitem[3] eq 'Roles' && $env{'request.course.id'}) { # special treatment for role selector - unless ($env{'request.lti.login'}) { - ($roleswitcher_js,$roleswitcher_form,my $switcher) = - &roles_selector( - $env{'course.' . $env{'request.course.id'} . '.domain'}, - $env{'course.' . $env{'request.course.id'} . '.num'}, - $httphost,$ltitarget - ); - $menu .= $switcher; - } + ($roleswitcher_js,$roleswitcher_form,my $switcher) = + &roles_selector( + $env{'course.' . $env{'request.course.id'} . '.domain'}, + $env{'course.' . $env{'request.course.id'} . '.num'}, + $httphost,$ltitarget + ); + $menu .= $switcher; + } elsif ($$menuitem[3] eq 'Help') { # special treatment for helplink + next if ($crstype eq 'Placement'); + $menu .= '
  • '.&Apache::loncommon::top_nav_help('Help').'
  • '; } else { if ($$menuitem[3] eq 'Syllabus' && $env{'request.course.id'}) { my $url = $$menuitem[0]; @@ -589,7 +638,7 @@ sub secondary_menu { } $menu =~ s/\[uname\]/$$author{user}/g; $menu =~ s/\[udom\]/$$author{dom}/g; - $menu =~ s/\[javascript\]/javascript:/; + $menu =~ s/\[javascript\]/javascript:/g; if ($env{'request.course.id'}) { $menu =~ s/\[cnum\]/$cnum/g; $menu =~ s/\[cdom\]/$cdom/g; @@ -2235,6 +2284,18 @@ function open_source() { 'height=500,width=600,resizable=yes,location=no,menubar=no,toolbar=no,scrollbars=yes'); } +function open_aboutLC() { + var isMobile = "$env{'browser.mobile'}"; + var url = '/adm/about.html'; + if (isMobile == 1) { + openMyModal(url,600,400,'yes'); + } else { + window.open(url,"aboutLONCAPA","height=400,width=600,scrollbars=1,resizable=1,menubar=0,location=1"); + } + return; +} + + (function (\$) { \$(document).ready(function () { \$.single=function(a){return function(b){a[0]=b;return a}}(\$([1]));