Diff for /loncom/interface/lonmenu.pm between versions 1.490 and 1.491

version 1.490, 2018/04/27 23:01:05 version 1.491, 2018/05/08 20:30:12
Line 247  sub prep_menuitem { Line 247  sub prep_menuitem {
 # @primary_menu is filled within the BEGIN block of this module with   # @primary_menu is filled within the BEGIN block of this module with 
 # entries from mydesk.tab  # entries from mydesk.tab
 sub primary_menu {  sub primary_menu {
     my ($crstype) = @_;      my ($crstype,$ltimenu) = @_;
     my (%menu);      my (%menu,%ltiexc);
     # each element of @primary contains following array:      # each element of @primary contains following array:
     # (link url, icon path, alt text, link text, condition, position)      # (link url, icon path, alt text, link text, condition, position)
     my $public;      my $public;
Line 265  sub primary_menu { Line 265  sub primary_menu {
         my %roles_in_env;          my %roles_in_env;
         $rolecount = &Apache::lonroles::roles_from_env(\%roles_in_env,$update);          $rolecount = &Apache::lonroles::roles_from_env(\%roles_in_env,$update);
     }      }
     my $ltitarget;      my ($lti,$ltitarget);
     if ($env{'request.lti.login'}) {      if ($env{'request.lti.login'}) {
           $lti = 1;
         $ltitarget = $env{'request.lti.target'};          $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) {      foreach my $menuitem (@primary_menu) {
         # evaluate conditions           # evaluate conditions 
Line 283  sub primary_menu { Line 291  sub primary_menu {
                 && !$public;                           # only visible to public                  && !$public;                           # only visible to public
                                                        # users                                                         # users
         next if    $$menuitem[4]        eq 'roles'     ##show links depending on          next if    $$menuitem[4]        eq 'roles'     ##show links depending on
                 && &Apache::loncommon::show_course();  ##term 'Courses' or                   && (&Apache::loncommon::show_course()  ##term 'Courses' or
         next if    $$menuitem[4]        eq 'courses'   ##'Roles' wanted                  || $env{'request.lti.login'});         ##'Roles' wanted
                 && !&Apache::loncommon::show_course(); ##          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];          my $title = $menuitem->[3];
         if (($crstype eq 'Placement') && (!$env{'request.role.adv'})) {          if (($crstype eq 'Placement') && (!$env{'request.role.adv'})) {
             if ($menuitem->[4] eq 'courses') {              if ($menuitem->[4] eq 'courses') {
Line 320  sub primary_menu { Line 334  sub primary_menu {
                     push(@primsub,$item);                      push(@primsub,$item);
                 }                  }
                 if ($title eq 'Personal' && $env{'user.name'} && $env{'user.domain'} ) {                  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 {                  } else {
                     $title = &mt($title);                      $title = &mt($title);
                 }                  }
Line 384  sub getauthor{ Line 400  sub getauthor{
 }  }
   
 sub secondary_menu {  sub secondary_menu {
     my ($httphost,$ltiscope) = @_;      my ($httphost,$ltiscope,$ltimenu,$noprimary) = @_;
     my $menu;      my $menu;
   
     my $crstype = &Apache::loncommon::course_type();      my $crstype = &Apache::loncommon::course_type();
Line 408  sub secondary_menu { Line 424  sub secondary_menu {
     my $canplc        = &Apache::lonnet::allowed('plc', $crs_sec);      my $canplc        = &Apache::lonnet::allowed('plc', $crs_sec);
     my $author        = &getauthor();      my $author        = &getauthor();
   
     my ($cdom,$cnum,$showsyllabus,$showfeeds,$showresv,$grouptools);      my ($cdom,$cnum,$showsyllabus,$showfeeds,$showresv,$grouptools,$lti,$ltimapres,%ltiexc);
     $grouptools = 0;      $grouptools = 0;
     if ($env{'request.course.id'}) {      if ($env{'request.course.id'}) {
         $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};          $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
Line 443  sub secondary_menu { Line 459  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);       my ($canmodifycoauthor); 
Line 453  sub secondary_menu { Line 482  sub secondary_menu {
             $canmodifycoauthor = 1;              $canmodifycoauthor = 1;
         }          }
     }      }
   
     my ($roleswitcher_js,$roleswitcher_form,$ltitarget);      my ($roleswitcher_js,$roleswitcher_form,$ltitarget);
     if ($env{'request.lti.login'}) {      if ($env{'request.lti.login'}) {
         $ltitarget = $env{'request.lti.target'};          $ltitarget = $env{'request.lti.target'};
Line 468  sub secondary_menu { Line 498  sub secondary_menu {
         next if    $$menuitem[4]   =~ /^crsedit/          next if    $$menuitem[4]   =~ /^crsedit/
                 && (!$canedit && !$canvieweditor);                  && (!$canedit && !$canvieweditor);
         next if    $$menuitem[4]  eq 'nvgr'          next if    $$menuitem[4]  eq 'nvgr'
                 && $canvgr;                  && ($canvgr || $ltiexc{'grades'});
         next if    $$menuitem[4]  eq 'vgr'          next if    $$menuitem[4]  eq 'vgr'
                 && !$canvgr;                  && !$canvgr;
         next if    $$menuitem[4]   eq 'viewusers'          next if    $$menuitem[4]   eq 'viewusers'
Line 496  sub secondary_menu { Line 526  sub secondary_menu {
         next if    $$menuitem[4]    eq 'cca'          next if    $$menuitem[4]    eq 'cca'
                 && !$canmodifycoauthor;                  && !$canmodifycoauthor;
         next if    $$menuitem[4]    eq 'notltimapres'          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];          my $title = $menuitem->[3];
         if (defined($secondary_submenu{$title})) {          if (defined($secondary_submenu{$title})) {
Line 523  sub secondary_menu { Line 559  sub secondary_menu {
                         next if ($item->[2] eq 'params' && !$canmodpara && !$canviewpara);                          next if ($item->[2] eq 'params' && !$canmodpara && !$canviewpara);
                         next if ($item->[2] eq 'author' && !$author);                          next if ($item->[2] eq 'author' && !$author);
                         next if ($item->[2] eq 'cca' && !$canmodifycoauthor);                          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);                          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) {                  if (@scndsub > 0) {
                     $menu .= &create_submenu($link,$target,$title,\@scndsub,1);                      $menu .= &create_submenu($link,$target,$title,\@scndsub,1);
                 } elsif ($link ne '#') {                  } elsif ($link ne '#') {
Line 534  sub secondary_menu { Line 582  sub secondary_menu {
             }              }
         } elsif ($$menuitem[3] eq 'Roles' && $env{'request.course.id'}) {          } elsif ($$menuitem[3] eq 'Roles' && $env{'request.course.id'}) {
             # special treatment for role selector              # special treatment for role selector
             unless ($env{'request.lti.login'}) {              ($roleswitcher_js,$roleswitcher_form,my $switcher) =
                 ($roleswitcher_js,$roleswitcher_form,my $switcher) =                  &roles_selector(
                     &roles_selector(                      $env{'course.' . $env{'request.course.id'} . '.domain'},
                         $env{'course.' . $env{'request.course.id'} . '.domain'},                      $env{'course.' . $env{'request.course.id'} . '.num'},
                         $env{'course.' . $env{'request.course.id'} . '.num'},                      $httphost,$ltitarget
                         $httphost,$ltitarget                  );
                     );              $menu .= $switcher;
                 $menu .= $switcher;          } elsif ($$menuitem[3] eq 'Help') { # special treatment for helplink
             }              next if ($crstype eq 'Placement');
               $menu .= '<li>'.&Apache::loncommon::top_nav_help('Help').'</li>';
         } else {          } else {
             if ($$menuitem[3] eq 'Syllabus' && $env{'request.course.id'}) {              if ($$menuitem[3] eq 'Syllabus' && $env{'request.course.id'}) {
                 my $url = $$menuitem[0];                  my $url = $$menuitem[0];
Line 589  sub secondary_menu { Line 638  sub secondary_menu {
     }      }
     $menu =~ s/\[uname\]/$$author{user}/g;      $menu =~ s/\[uname\]/$$author{user}/g;
     $menu =~ s/\[udom\]/$$author{dom}/g;      $menu =~ s/\[udom\]/$$author{dom}/g;
     $menu =~ s/\[javascript\]/javascript:/;      $menu =~ s/\[javascript\]/javascript:/g;
     if ($env{'request.course.id'}) {      if ($env{'request.course.id'}) {
         $menu =~ s/\[cnum\]/$cnum/g;          $menu =~ s/\[cnum\]/$cnum/g;
         $menu =~ s/\[cdom\]/$cdom/g;          $menu =~ s/\[cdom\]/$cdom/g;
Line 2235  function open_source() { Line 2284  function open_source() {
                          'height=500,width=600,resizable=yes,location=no,menubar=no,toolbar=no,scrollbars=yes');                           '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 (\$) {  (function (\$) {
   \$(document).ready(function () {    \$(document).ready(function () {
     \$.single=function(a){return function(b){a[0]=b;return a}}(\$([1]));      \$.single=function(a){return function(b){a[0]=b;return a}}(\$([1]));

Removed from v.1.490  
changed lines
  Added in v.1.491


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>