|;
}
# primary_menu() evaluates @primary_menu and returns XHTML for the menu
@@ -161,8 +165,14 @@ sub prep_menuitem {
sub primary_menu {
my $menu;
my $custommenu = &Apache::loncommon::needs_gci_custom();
+ my $numdc = &Apache::loncommon::check_for_gci_dc();
# each element of @primary contains following array:
# (link url, icon path, alt text, link text, condition)
+ my $public;
+ if ((($env{'user.name'} eq 'public') && ($env{'user.domain'} eq 'public'))
+ || (($env{'user.name'} eq '') && ($env{'user.domain'} eq ''))) {
+ $public = 1;
+ }
foreach my $menuitem (@primary_menu) {
# evaluate conditions
next if ref($menuitem) ne 'ARRAY'; #
@@ -171,11 +181,18 @@ sub primary_menu {
next if $$menuitem[4] eq 'newmsg' # arrived or not
&& !&Apache::lonmsg::mynewmail(); #
next if $$menuitem[4] !~ /public/ ##we've a public user,
- && $env{'user.name'} eq 'public' ##who should not see all
- && $env{'user.domain'} eq 'public'; ##links
+ && $public; ##who should not see all
+ ##links
next if $$menuitem[4] eq 'onlypublic'# hide links which are
- && $env{'user.name'} ne 'public' # only visible to public
- && $env{'user.domain'} ne 'public'; # users
+ && !$public; # only visible to public
+ # users
+ next if $$menuitem[4] eq 'gci'
+ && (!$custommenu || $env{'request.role'} =~ m{^st\./gcitest/});
+ next if $$menuitem[4] eq 'home'
+ && (($custommenu) || ($env{'user.domain'} eq 'gcitest') ||
+ (($env{'user.domain'} eq 'gci') && !$numdc));
+ next if $$menuitem[4] eq 'gcitest'
+ && (($env{'user.domain'} eq 'gci') || ($env{'request.role'} eq 'cm'));
next if $$menuitem[4] eq 'roles' # hide links which are
&& $custommenu; # not visible when GCI
next if $$menuitem[4] eq 'courses' # tabbed interface in use
@@ -187,11 +204,20 @@ sub primary_menu {
if ($$menuitem[3] eq 'Help') { # special treatment for helplink
- $menu .= '
'.&Apache::loncommon::top_nav_help('Help').'
';
+ if ($public) {
+ my $origmail = $Apache::lonnet::perlvar{'lonSupportEMail'};
+ my $defdom = &Apache::lonnet::default_login_domain();
+ my $to = &Apache::loncommon::build_recipient_list(undef,
+ 'helpdeskmail',
+ $defdom,$origmail);
+ if ($to ne '') {
+ $menu .= &prep_menuitem($menuitem);
+ }
+ } else {
+ $menu .= '
'.&Apache::loncommon::top_nav_help('Help').'
';
+ }
} else {
- my @items = @{$menuitem};
- $items[0] = 'javascript:'.$menuitem->[0].';';
- $menu .= &prep_menuitem(\@items);
+ $menu .= &prep_menuitem($menuitem);
}
}
@@ -212,10 +238,16 @@ sub secondary_menu {
$env{'user.domain'}, $env{'user.name'},
$env{'course.' . $env{'request.course.id'} . '.domain'},
$env{'course.' . $env{'request.course.id'} . '.num'});
+ my $custommenu = &Apache::loncommon::needs_gci_custom();
+ my $numdc = &Apache::loncommon::check_for_gci_dc();
+ my $role = $env{'request.role'};
foreach my $menuitem (@secondary_menu) {
# evaluate conditions
next if ref($menuitem) ne 'ARRAY';
- next if $$menuitem[4] ne 'always'
+ next if $$menuitem[4] eq 'showmenu'
+ && ($custommenu || (!$numdc && $role eq 'cm'));
+ next if $$menuitem[4] ne 'showmenu'
+ && $$menuitem[4] ne 'author'
&& !$env{'request.course.id'};
next if $$menuitem[4] eq 'showreturn'
&& !$showlink
@@ -237,8 +269,9 @@ sub secondary_menu {
next if $$menuitem[4] =~ /showgroups$/
&& !$canviewgrps
&& !%groups;
-
- if ($$menuitem[3] eq 'Roles' && $env{'request.course.id'}) {
+ next if $$menuitem[4] eq 'showroles'
+ && ($custommenu || !$numdc || ($numdc && $env{'request.noversionuri'} eq '/adm/roles'));
+ if ($$menuitem[3] eq 'Roles' && $env{'request.course.id'} && !$custommenu) {
# special treatment for role selector
my $roles_selector = &roles_selector(
$env{'course.' . $env{'request.course.id'} . '.domain'},
@@ -286,43 +319,41 @@ sub gci_secondary_menu {
my %courses = (
'review' => 'gci_9615072b469884921gcil1',
'submit' => 'gci_1H96711d710194bfegcil1',
+ 'tutorial' => 'gci_5422913620b814c90gcil1',
);
my %linktext = (
'review' => 'Review Questions',
'submit' => 'Submit Questions',
- 'createtest' => 'Create a Test',
+ 'managetest' => 'Manage Tests',
+ 'tutorial' => 'Tutorials',
);
- my (%links,$current);
+ my %links = (
+ 'managetest' => '/adm/menu',
+ );
+ my $current = 'managetest';
+ if ($env{'form.destinationurl'} eq '/adm/gci_info') {
+ undef($current);
+ }
foreach my $key (keys(%courses)) {
$links{$key} = "javascript:switchpage('$key');";
if ($env{'request.course.id'} eq $courses{$key}) {
- $links{$key} = '/adm/navmaps';
- $current = $key;
- }
- }
- $links{'createtest'} = "javascript:switchpage('createtest');";
- if (($ENV{'REQUEST_URI'} eq '/adm/requestcourse') ||
- ($env{'form.orgurl'} eq '/adm/requestcourse')) {
- $current = 'createtest';
- }
- my @menutabs = ('review','submit','createtest');
- if ($env{'user.adv'}) {
- my $key = 'managetest';
- push(@menutabs,$key);
- $linktext{$key} = 'Manage Tests';
- $links{$key} = "javascript:switchpage('$key');";
- if (($current eq '') && (($ENV{'REQUEST_URI'} eq '/adm/menu') ||
- ($env{'form.orgurl'} eq '/adm/menu'))) {
+ if ($env{'environment.remotenavmap'} eq 'on') {
+ $links{$key} = "javascript:gonav('/adm/navmaps')";
+ } else {
+ $links{$key} = '/adm/navmaps';
+ }
$current = $key;
+ $links{'managetest'} = '/adm/roles?selectrole=1&cm=1&orgurl=%2fadm%2fmenu';
}
}
+ my @menutabs = ('review','submit','managetest','tutorial');
my $tabs;
foreach my $item (@menutabs) {
if ($item eq $current) {
- $tabs .= '