--- loncom/interface/lonmenu.pm 2009/12/07 20:04:18 1.309.2.1
+++ loncom/interface/lonmenu.pm 2010/10/07 15:39:27 1.309.2.17
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines to control the menu
#
-# $Id: lonmenu.pm,v 1.309.2.1 2009/12/07 20:04:18 raeburn Exp $
+# $Id: lonmenu.pm,v 1.309.2.17 2010/10/07 15:39:27 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -131,6 +131,7 @@ use Apache::lonhtmlcommon();
use Apache::loncommon();
use Apache::lonenc();
use Apache::lonlocal;
+use Apache::loncoursequeueadmin;
use LONCAPA qw(:DEFAULT :match);
use HTML::Entities();
@@ -150,6 +151,9 @@ sub prep_menuitem {
} else { # textual Link
$link = &mt($$menuitem[3]);
}
+ if($$menuitem[4] eq 'newmsg'){ #special style for New Messages
+ return '
'.$link.' ';
+ }
return ''.$link.' ';
}
@@ -176,6 +180,12 @@ sub primary_menu {
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
+ 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'));
+ 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
@@ -212,10 +222,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 +253,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,36 +303,30 @@ 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{'managetest'} = '/adm/roles?selectrole=1&cm=1&orgurl=%2fadm%2fmenu';
}
}
- $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'))) {
- $current = $key;
- }
- }
+ my @menutabs = ('review','submit','managetest','tutorial');
my $tabs;
foreach my $item (@menutabs) {
if ($item eq $current) {
@@ -522,6 +533,11 @@ ENDINLINEMENU
}
sub show_return_link {
+ return unless ($env{'request.course.id'});
+ if (($env{'request.noversionuri'} =~ m{^/adm/(viewclasslist|navmaps)($|\?)})
+ || ($env{'request.noversionuri'} =~ m{^/adm/.*/aboutme($|\?)})) {
+ return if ($env{'form.register'});
+ }
return (($env{'request.noversionuri'}=~m{^/(res|public)/} &&
$env{'request.symb'} eq '')
||
@@ -530,7 +546,7 @@ sub show_return_link {
(($env{'request.noversionuri'}=~/^\/adm\//) &&
($env{'request.noversionuri'}!~/^\/adm\/wrapper\//) &&
($env{'request.noversionuri'}!~
- m[^/adm/.*/(smppg|bulletinboard|aboutme)($|\?)])
+ m[^/adm/.*/(smppg|bulletinboard)($|\?)])
));
}
@@ -603,9 +619,13 @@ sub innerregister {
} else {
$contentstext = &mt('Course Contents');
}
- my @crumbs = ({text => $contentstext,
- href => "Javascript:gonav('/adm/navmaps')"});
-
+ my @crumbs;
+ unless (($forcereg) && ($env{'request.noversionuri'} eq '/adm/navmaps')
+ && ($mapurl eq $env{'course.'.$env{'request.course.id'}.'.url'})) {
+ @crumbs = ({text => Apache::loncommon::course_type()
+ . ' Contents',
+ href => "Javascript:gopost('/adm/navmaps','')"});
+ }
if ($mapurl ne $env{'course.'.$env{'request.course.id'}.'.url'}) {
push(@crumbs, {text => '...',
no_mt => 1});
@@ -849,7 +869,7 @@ $menuitems.="Make notes and annotations
"&go('/adm/requestcourse')&Course requests\n";
}
}
- unless ($env{'request.noversionuri'}=~/\/(bulletinboard|smppg|navmaps|syllabus|aboutme)(\?|$)/) {
+ unless ($env{'request.noversionuri'}=~/\/(bulletinboard|smppg|navmaps|syllabus|aboutme|portfolio)(\?|$)/) {
if ((!$env{'request.enc'}) && ($env{'request.noversionuri'} !~ m{^/adm/wrapper/ext/})) {
$menuitems.=(<'.
- ''.
- ''.&mt('Utilities').' '.
- '';
- if ($switcher) {
- $output .= ' ';
+ my (%can_request,%request_domains,$canreq,$createtext);
+ my $role = 'st';
+ my $custommenu = &Apache::loncommon::needs_gci_custom();
+ if ($custommenu) {
+ $role = 'cc';
+ }
+ my %courses = &Apache::loncommon::existing_gcitest_courses($role);
+ my $numcourses = keys(%courses);
+ my ($switcher_js,$switcher);
+ my $formname = 'testpicker';
+ if ($numcourses > 0) {
+ $switcher = &Apache::loncommon::gcitest_switcher($role,$formname,%courses);
+ my $current;
+ my $cid = $env{'request.course.id'};
+ if ($cid) {
+ $current = $role.'./'.$env{'course.'.$cid.'.domain'}.
+ '/'.$env{'course.'.$cid.'.num'};
+ }
+ $switcher_js = &Apache::loncommon::gcitest_switcher_js($current,$numcourses,$formname);
+ if ($switcher_js) {
+ $switcher_js= <<"ENDSCRIPT";
+
+
+ENDSCRIPT
+ }
+ $switcher = $switcher_js.$switcher;
}
- $output .= '
';
- if (($env{'request.course.id'}) &&
- (&Apache::lonnet::allowed('mdc',$env{'request.course.id'}))) {
- $output.= ''.
- '
'.
- ''.&mt('Test Management').' '.
- ' ';
+ if ($env{'user.domain'} eq 'gci') {
+ $canreq =
+ &Apache::lonnet::check_can_request('gcitest',\%can_request,\%request_domains);
+ $createtext = &mt('Create Concept Test');
+ if ($numcourses) {
+ $createtext = &mt('Create New Test');
+ }
+ }
+ if ($env{'request.course.id'}) {
+ if (&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) {
+ $output .=
+ ' ';
+ } else {
+ my $navtext = &mt('Table of Contents');
+ my $navdesc = &mt('Display Table of Contents for Geoscience Concept Inventory');
+ if ($env{'request.role.domain'} eq 'gcitest') {
+ $navtext = &mt('Display Test Contents');
+ $navdesc = &mt('Display the table of contents for this Concept Test');
+ }
+ $output .=
+ ' ';
+ }
+ } elsif ($switcher || $canreq) {
+ $output .= ' '.
+ ' ';
+ }
+ } elsif ($context eq 'gcinorole') {
+ my $queued = &Apache::loncoursequeueadmin::queued_selfenrollment('notitle');
+ if ($queued) {
+ $output .=
+ ''.
+ '
'.&mt('Pending Enrollment Requests').' '.
+ $queued.
+ '';
}
- $output.='';
+ $output='';
for (my $col=1; $col<=2; $col++) {
$output.='';
for (my $row=1; $row<=8; $row++) {
@@ -1431,6 +1543,7 @@ sub inlinemenu {
}
$output.='
';
$output.='';
+ }
}
$output.="";
}
@@ -1737,7 +1850,7 @@ sub utilityfunctions {
my $gcimenujs;
if ($custommenu) {
- my %concepttests = &Apache::loncommon::existing_gcitest_courses();
+ my %concepttests = &Apache::loncommon::existing_gcitest_courses('cc');
my $managetesturl = '/adm/menu';
my $createtesturl = '/adm/requestcourse';
if (($env{'request.course.id'}) &&
@@ -1769,6 +1882,9 @@ function switchpage(caller) {
if (caller == 'managetest') {
document.location.href = '$managetesturl';
}
+ if (caller == 'tutorial') {
+ document.location.href = '/adm/roles?selectrole=1&st./gci/5422913620b814c90gcil1=1';
+ }
return;
}
@@ -2014,7 +2130,9 @@ sub hidden_button_check {
return;
}
if ($env{'request.role.adv'}) {
- return;
+ unless (&Apache::loncommon::needs_gci_custom()) {
+ return;
+ }
}
my $buttonshide = &Apache::lonnet::EXT('resource.0.buttonshide');
return $buttonshide;