# The LearningOnline Network with CAPA # displays the main menu # # $Id: lonmainmenu.pm,v 1.8.4.8 2010/10/04 18:54:46 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # # This file is part of the LearningOnline Network with CAPA (LON-CAPA). # # LON-CAPA is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # LON-CAPA is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with LON-CAPA; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # /home/httpd/html/adm/gpl.txt # # http://www.lon-capa.org/ # # # There are two parameters controlling the action of this module: # # browser.interface - if this is 'textual', it overrides the second parameter # and goes to screen reader PDA mode # # environment.remote - if this is 'on', the routines controll the remote # control, otherwise they render the main window controls; ignored it # browser.interface is 'textual' # 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; &Apache::loncommon::no_cache($r); &Apache::loncommon::content_type($r,'text/html'); $r->send_http_header; return OK if $r->header_only; 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 $script_tag; if ($env{'environment.remote'} ne 'off') { my $utility=&Apache::lonmenu::utilityfunctions('/adm/menu'); $script_tag=(< $utility ENDSCRIPT } # ---- Print the screen, pretend to be in text mode to generate text-based menu # 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::end_page()); return OK; } 1; __END__