--- loncom/interface/lonmenu.pm 2013/05/26 22:42:06 1.369.2.42 +++ loncom/interface/lonmenu.pm 2016/08/10 04:10:03 1.369.2.56 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines to control the menu # -# $Id: lonmenu.pm,v 1.369.2.42 2013/05/26 22:42:06 raeburn Exp $ +# $Id: lonmenu.pm,v 1.369.2.56 2016/08/10 04:10:03 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -281,7 +281,7 @@ sub primary_menu { push(@primsub,$item); } if (@primsub > 0) { - $menu{$position} .= &create_submenu($link,$target,$title,\@primsub); + $menu{$position} .= &create_submenu($link,$target,$title,\@primsub,1); } elsif ($link) { $menu{$position} .= '
  • '.&mt($title).'
  • '; } @@ -303,8 +303,14 @@ sub primary_menu { $menu{$position} .= prep_menuitem($menuitem); } } - return ("
      $menu{'left'}
    ", - "
      $menu{'right'}
    "); + my @output = ('',''); + if ($menu{'left'} ne '') { + $output[0] = "
      $menu{'left'}
    "; + } + if ($menu{'right'} ne '') { + $output[1] = "
      $menu{'right'}
    "; + } + return @output; } #returns hashref {user=>'',dom=>''} containing: @@ -333,6 +339,7 @@ sub getauthor{ } sub secondary_menu { + my ($httphost) = @_; my $menu; my $crstype = &Apache::loncommon::course_type(); @@ -341,6 +348,9 @@ sub secondary_menu { : ''); my $canedit = &Apache::lonnet::allowed('mdc', $env{'request.course.id'}); my $canviewroster = $env{'course.'.$env{'request.course.id'}.'.student_classlist_view'}; + if ($canviewroster eq 'disabled') { + undef($canviewroster); + } my $canviewgrps = &Apache::lonnet::allowed('vcg', $crs_sec); my $canmodifyuser = &Apache::lonnet::allowed('cst', $crs_sec); my $canviewwnew = &Apache::lonnet::allowed('whn', $crs_sec); @@ -349,7 +359,7 @@ sub secondary_menu { my $canmgr = &Apache::lonnet::allowed('mgr', $crs_sec); my $author = &getauthor(); - my ($cdom,$cnum,$showsyllabus,$showfeeds); + my ($cdom,$cnum,$showsyllabus,$showfeeds,$showresv); if ($env{'request.course.id'}) { $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; @@ -366,6 +376,12 @@ sub secondary_menu { $showfeeds = 1; } } + unless ($canmgr) { + my %slots = &Apache::lonnet::get_course_slots($cnum,$cdom); + if (keys(%slots) > 0) { + $showresv = 1; + } + } } my ($canmodifycoauthor); @@ -406,8 +422,8 @@ sub secondary_menu { && ($canmodifyuser || !$canviewroster); next if $$menuitem[4] eq 'mgr' && !$canmgr; - next if $$menuitem[4] eq 'nmgr' - && $canmgr; + next if $$menuitem[4] eq 'showresv' + && !$showresv; next if $$menuitem[4] eq 'whn' && !$canviewwnew; next if $$menuitem[4] eq 'opa' @@ -432,7 +448,7 @@ sub secondary_menu { } else { $link = '#'; } - my @scndsub; + my @scndsub; if (ref($secondary_submenu{$title}) eq 'ARRAY') { foreach my $item (@{$secondary_submenu{$title}}) { if (ref($item) eq 'ARRAY') { @@ -446,7 +462,7 @@ sub secondary_menu { } } if (@scndsub > 0) { - $menu .= &create_submenu($link,$target,$title,\@scndsub); + $menu .= &create_submenu($link,$target,$title,\@scndsub,1); } elsif ($link ne '#') { $menu .= '
  • '.&mt($title).'
  • '; } @@ -456,7 +472,8 @@ sub secondary_menu { ($roleswitcher_js,$roleswitcher_form,my $switcher) = &roles_selector( $env{'course.' . $env{'request.course.id'} . '.domain'}, - $env{'course.' . $env{'request.course.id'} . '.num'} + $env{'course.' . $env{'request.course.id'} . '.num'}, + $httphost ); $menu .= $switcher; } else { @@ -508,7 +525,7 @@ sub secondary_menu { } sub create_submenu { - my ($link,$target,$title,$submenu) = @_; + my ($link,$target,$title,$submenu,$translate) = @_; return unless (ref($submenu) eq 'ARRAY'); my $disptarget; if ($target ne '') { @@ -535,17 +552,27 @@ sub create_submenu { foreach my $item (@{$submenu}) { $count ++; if (ref($item) eq 'ARRAY') { + my $href = $item->[0]; + if ($href =~ /(aboutme|rss\.html)$/) { + next unless (($env{'user.name'} ne '') && ($env{'user.domain'} ne '')); + $href =~ s/\[domain\]/$env{'user.domain'}/g; + $href =~ s/\[user\]/$env{'user.name'}/g; + } my $borderbot; if ($count == $numsub) { $borderbot = 'border-bottom:1px solid black;'; } - if ($item->[0] =~ /(aboutme|rss\.html)$/) { - $item->[0] =~ s/\[domain\]/$env{'user.domain'}/g; - $item->[0] =~ s/\[user\]/$env{'user.name'}/g; + unless (($href eq '') || ($href =~ /^\#/)) { + $target = ' target="_top"'; } $menu .= '
  • '. - &mt($item->[1]).'
  • '; + $borderbot.'">'; + if ($translate) { + $menu .= &mt($item->[1]); + } else { + $menu .= $item->[1]; + } + $menu .= ''; } } $menu .= ''; @@ -633,9 +660,19 @@ sub innerregister { && $maptitle ne 'default.sequence' && $maptitle ne $coursetitle); - push @crumbs, {text => $restitle, no_mt => 1} if $restitle; + push @crumbs, {text => $restitle, no_mt => 1} if $restitle; + my @tools; + if ($env{'request.filename'} =~ /\.page$/) { + my %breadcrumb_tools = &Apache::lonhtmlcommon::current_breadcrumb_tools(); + if (ref($breadcrumb_tools{'tools'}) eq 'ARRAY') { + @tools = @{$breadcrumb_tools{'tools'}}; + } + } &Apache::lonhtmlcommon::clear_breadcrumbs(); &Apache::lonhtmlcommon::add_breadcrumb(@crumbs); + if (@tools) { + &Apache::lonhtmlcommon::add_breadcrumb_tool('tools',@tools); + } } else { $resurl = $env{'request.noversionuri'}; my $courseurl = &Apache::lonnet::courseid_to_courseurl($env{'request.course.id'}); @@ -786,6 +823,9 @@ sub innerregister { my $currdir = '/priv/'.$udom.'/'.$uname.'/'.$thisdisfn; if ($currdir =~ m-/$-) { $is_const_dir = 1; + if ($thisdisfn eq '') { + $is_const_dir = 2; + } } else { $currdir =~ s|[^/]+$||; my $cleandisfn = &Apache::loncommon::escape_single($thisdisfn); @@ -833,7 +873,7 @@ ENDMENUITEMS # wishlist is only available for users with access to resource-pool # and links can only be set for resources within the resource-pool $menuitems .= (< 0){ } $menuitems.="&$swtext{'anot'}&tations[_1]&annotate()&"; $menuitems.="Make notes and annotations about this resource&&1\n"; +my $is_mobile; +if ($env{'browser.mobile'}) { + $is_mobile = 1; +} unless ($env{'request.noversionuri'}=~/\/(bulletinboard|smppg|navmaps|syllabus|aboutme|viewclasslist|portfolio)(\?|$)/) { if ((!$env{'request.enc'}) && ($env{'request.noversionuri'} !~ m{^/adm/wrapper/ext/}) && ($env{'request.noversionuri'} !~ m{^/uploaded/$match_domain/$match_courseid/docs/})) { $menuitems.=(<'."\n". + '
    '."\n". ' '."\n". ' '."\n".