--- loncom/interface/lonmainmenu.pm 2006/04/07 22:28:40 1.1 +++ loncom/interface/lonmainmenu.pm 2010/10/04 18:54:46 1.8.4.8 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # displays the main menu # -# $Id: lonmainmenu.pm,v 1.1 2006/04/07 22:28:40 albertel Exp $ +# $Id: lonmainmenu.pm,v 1.8.4.8 2010/10/04 18:54:46 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -41,6 +41,10 @@ package Apache::lonmainmenu; use strict; use Apache::Constants qw(:common); use Apache::loncommon(); +use Apache::lonnet; +use Apache::lonmenu(); +use Apache::lonlocal; +use LONCAPA qw(:DEFAULT :match); sub handler { my $r = shift; @@ -49,26 +53,24 @@ sub handler { $r->send_http_header; return OK if $r->header_only; - my $form; - if ($env{'environment.remote'} ne 'off' && - $env{'browser.interface'} ne 'textual') { + my $custommenu = &Apache::loncommon::needs_gci_custom(); + my $cid = $env{'request.course.id'}; + my %gcicourses = ( + gci_9615072b469884921gcil1 => 'review', + gci_1H96711d710194bfegcil1 => 'submit', + gci_5422913620b814c90gcil1 => 'tutorial', + ); + if (($custommenu && $cid ne '' && ($gcicourses{$cid} || $env{'request.role'} !~ m{^cc\./gcitest/})) || + ($env{'user.domain'} eq 'gcitest')) { + $r->internal_redirect('/adm/navmaps'); + return OK; + } + + my $form; + if ($env{'environment.remote'} ne 'off') { $form=&Apache::lonmenu::serverform(); } - my $function='student'; - if ($env{'request.role'}=~/^(cc|in|ta|ep)/) { - $function='coordinator'; - } - if ($env{'request.role'}=~/^(su|dc|ad|li)/) { - $function='admin'; - } - if (($env{'request.role'}=~/^(au|ca)/) || - ($env{'request.noversionuri'}=~/^(\/priv|\~)/)) { - $function='author'; - } - my $domain=&Apache::loncommon::determinedomain(); - $pgbg=&Apache::loncommon::designparm($function.'.pgbg',$domain); - $tabbg=&Apache::loncommon::designparm($function.'.tabbg',$domain); - $font=&Apache::loncommon::designparm($function.'.font',$domain); + my $script_tag; if ($env{'environment.remote'} ne 'off') { my $utility=&Apache::lonmenu::utilityfunctions('/adm/menu'); @@ -79,17 +81,37 @@ $utility ENDSCRIPT } # ---- Print the screen, pretend to be in text mode to generate text-based menu - unless ($env{'browser.interface'} eq 'textual') { - $env{'browser.interface'}='faketextual'; - $env{'environment.remote'}='off'; +# temporarily set interface to "faketextual" and remote to "off", which renders +# the main menu + $env{'browser.interface'}='faketextual'; + $env{'environment.remote'}='off'; + + # Breadcrumbs + my $args; + unless ($custommenu && !$env{'request.course.id'}) { + my $brcrum = []; + $args = {bread_crumbs => $brcrum}; + } + $r->print(&Apache::loncommon::start_page('Main Menu',$script_tag,$args)); + + my ($rolecount,$numcourses) = (0,0); + unless (($custommenu) || ($env{'user.domain'} eq 'gcitest')) { + foreach my $envkey (keys(%env)) { + next unless ($envkey =~ /^user\.role\./); + $rolecount ++; + } + } + if ($custommenu) { + $r->print(&Apache::lonmenu::inlinemenu('gcicustom').$form); + } elsif (!$rolecount) { + $r->print(&Apache::lonmenu::inlinemenu('gcinorole').$form); + } else { + $r->print(&Apache::lonmenu::inlinemenu().$form); } - $r->print(&Apache::loncommon::start_page('Main Menu',$script_tag)); - $r->print(''.&Apache::lonmenu::inlinemenu().'
'.$form); $r->print(&Apache::loncommon::end_page()); return OK; } - 1; __END__