--- loncom/interface/lonmenu.pm 2015/05/26 13:25:43 1.431.2.3
+++ loncom/interface/lonmenu.pm 2016/02/26 21:44:39 1.439
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines to control the menu
#
-# $Id: lonmenu.pm,v 1.431.2.3 2015/05/26 13:25:43 raeburn Exp $
+# $Id: lonmenu.pm,v 1.439 2016/02/26 21:44:39 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -288,6 +288,11 @@ sub primary_menu {
push(@primsub,$item);
}
if (@primsub > 0) {
+ if ($title eq 'Personal' && $env{'user.name'} && $env{'user.domain'} ) {
+ $title = &Apache::loncommon::plainname($env{'user.name'},$env{'user.domain'});
+ } else {
+ $title = &mt($title);
+ }
$menu{$position} .= &create_submenu($link,$target,$title,\@primsub,1);
} elsif ($link) {
$menu{$position} .= '
'.&mt($title).'';
@@ -366,7 +371,8 @@ sub secondary_menu {
my $canmgr = &Apache::lonnet::allowed('mgr', $crs_sec);
my $author = &getauthor();
- my ($cdom,$cnum,$showsyllabus,$showfeeds,$showresv);
+ my ($cdom,$cnum,$showsyllabus,$showfeeds,$showresv,$grouptools);
+ $grouptools = 0;
if ($env{'request.course.id'}) {
$cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
$cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
@@ -392,6 +398,17 @@ sub secondary_menu {
$showresv = 1;
}
}
+ my %groups = &Apache::lonnet::get_active_groups(
+ $env{'user.domain'}, $env{'user.name'},$cdom,$cnum);
+ if (%groups) {
+ foreach my $group (keys(%groups)) {
+ my @privs = split(/:/,$env{"user.priv.$env{'request.role'}./$cdom/$cnum/$group"});
+ shift(@privs);
+ if (@privs) {
+ $grouptools ++;
+ }
+ }
+ }
}
my ($canmodifycoauthor);
@@ -402,12 +419,6 @@ sub secondary_menu {
$canmodifycoauthor = 1;
}
}
-
- my %groups = &Apache::lonnet::get_active_groups(
- $env{'user.domain'}, $env{'user.name'},
- $env{'course.' . $env{'request.course.id'} . '.domain'},
- $env{'course.' . $env{'request.course.id'} . '.num'});
-
my ($roleswitcher_js,$roleswitcher_form);
foreach my $menuitem (@secondary_menu) {
@@ -436,7 +447,7 @@ sub secondary_menu {
&& !$canmodpara;
next if $$menuitem[4] =~ /showgroups$/
&& !$canviewgrps
- && !%groups;
+ && !$grouptools;
next if $$menuitem[4] eq 'showsyllabus'
&& !$showsyllabus;
next if $$menuitem[4] eq 'showfeeds'
@@ -510,19 +521,9 @@ sub create_submenu {
if ($target ne '') {
$disptarget = ' target="'.$target.'"';
}
- my $name;
- if ($title eq 'Personal') {
- if ($env{'user.name'} && $env{'user.domain'}) {
- $name = &Apache::loncommon::plainname($env{'user.name'},$env{'user.domain'});
- } else {
- $name = &mt($title);
- }
- } else {
- $name = &mt($title);
- }
my $menu = ''.
''.
- ''.$name.
+ ''.$title.
''.
' ▼'.
'';
@@ -639,8 +640,18 @@ sub innerregister {
&& $maptitle ne $coursetitle);
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'});
@@ -776,6 +787,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);
@@ -839,7 +853,7 @@ if ($env{'browser.mobile'}) {
$is_mobile = 1;
}
- unless ($env{'request.noversionuri'}=~/\/(bulletinboard|smppg|navmaps|syllabus|aboutme|viewclasslist|portfolio)(\?|$)/) {
+ unless ($env{'request.noversionuri'}=~/\/(bulletinboard|smppg|navmaps|syllabus|aboutme|viewclasslist|portfolio|exttools?)(\?|$)/) {
if ((!$env{'request.enc'}) && ($env{'request.noversionuri'} !~ m{^/adm/wrapper/ext/}) && ($env{'request.noversionuri'} !~ m{^/uploaded/$match_domain/$match_courseid/docs/})) {
$menuitems.=(< 0) {
- $switcher = &create_submenu('','',$switchtext,\@submenu);
+ $switcher = &create_submenu('','',&mt('Switch role'),\@submenu);
}
}
return ($js,$form,$switcher);
@@ -2263,10 +2293,12 @@ sub countdown_timer {
}
my $duedate = &Apache::lonnet::EXT("resource.0.duedate");
my @interval=&Apache::lonnet::EXT("resource.0.interval");
+ my ($timelimit,$usesdone);
if (@interval > 1) {
+ ($timelimit,$usesdone) = split(/_/,$interval[0]);
my $first_access=&Apache::lonnet::get_first_access($interval[1]);
if ($first_access > 0) {
- if ($first_access+$interval[0] > time) {
+ if ($first_access+$timelimit > time) {
$hastimeleft = 1;
}
}
@@ -2280,7 +2312,9 @@ sub countdown_timer {
$currdisp = 'inline';
$collapse = '► ';
if ((@interval > 1) && ($hastimeleft)) {
- $donebutton = &done_button_js($interval[1]);
+ if ($usesdone eq 'done') {
+ $donebutton = &done_button_js($interval[1]);
+ }
}
} else {
$currdisp = 'none';