--- loncom/interface/lonmenu.pm 2010/11/08 22:51:23 1.309.2.18 +++ loncom/interface/lonmenu.pm 2012/10/29 17:38:56 1.388 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines to control the menu # -# $Id: lonmenu.pm,v 1.309.2.18 2010/11/08 22:51:23 raeburn Exp $ +# $Id: lonmenu.pm,v 1.388 2012/10/29 17:38:56 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -26,10 +26,6 @@ # http://www.lon-capa.org/ # # -# There is one parameter controlling the action of this module: -# -# environment.remote - if this is 'on', the routines controll the remote -# control, otherwise they render the main window controls; =head1 NAME @@ -37,53 +33,103 @@ Apache::lonmenu =head1 SYNOPSIS -Coordinates the response to clicking an image. +Loads contents of /home/httpd/lonTabs/mydesk.tab, +used to generate inline menu, and Main Menu page. This is part of the LearningOnline Network with CAPA project described at http://www.lon-capa.org. -=head1 SUBROUTINES +=head1 GLOBAL VARIABLES =over -Little texts +=item @desklines -=item initlittle() +Each element of this array contains a line of mydesk.tab that doesn't start with +cat, prim or scnd. +It gets filled in the BEGIN block of this module. -=item menubuttons() +=item %category_names -This gets called at the top of the body section +The keys of this hash are the abbreviations used in mydesk.tab in those lines that +start with cat, the values are strings representing titles. +It gets filled in the BEGIN block of this module. -=item show_return_link() +=item %category_members -=item registerurl() +TODO -This gets called in the header section +=item %category_positions -=item innerregister() +The keys of this hash are the abbreviations used in mydesk.tab in those lines that +start with cat, its values are position vectors (column, row). +It gets filled in the BEGIN block of this module. + +=item $readdesk + +Indicates that mydesk.tab has been read. +It is set to 'done' in the BEGIN block of this module. + +=item @primary_menu -This gets called in order to register a URL, both with the Remote -and in the body of the document +The elements of this array reference arrays that are made up of the components +of those lines of mydesk.tab that start with prim:. +It is used by primary_menu() to generate the corresponding menu. +It gets filled in the BEGIN block of this module. -=item loadevents() +=item %primary_sub_menu -=item unloadevents() +The keys of this hash reference are the names of items in the primary_menu array +which have sub-menus. For each key, the corresponding value is a reference to +an array containing components extracted from lines in mydesk.tab which begin +with primsub:. +This hash, which is used by primary_menu to generate sub-menus, is populated in +the BEGIN block. -=item startupremote() +=item @secondary_menu -=item setflags() +The elements of this array reference arrays that are made up of the components +of those lines of mydesk.tab that start with scnd. +It is used by secondary_menu() to generate the corresponding menu. +It gets filled in the BEGIN block of this module. + +=back + +=head1 SUBROUTINES + +=over -=item maincall() +=item prep_menuitems(\@menuitem) -=item load_remote_msg() +This routine wraps a menuitem in proper HTML. It is used by primary_menu() and +secondary_menu(). -=item get_menu_name() +=item primary_menu() -=item reopenmenu() +This routine evaluates @primary_menu and returns XHTML for the menu +that contains following links: About, Message, Roles, Help, Logout +@primary_menu is filled within the BEGIN block of this module with +entries from mydesk.tab -=item open() +=item secondary_menu() -Open the menu +Same as primary_menu() but operates on @secondary_menu. + +=item create_submenu() + +Creates XHTML for unordered list of sub-menu items which belong to a +particular top-level menu item. Uses hover pseudo class in css to display +dropdown list when mouse hovers over top-level item. Support for IE6 +(no hover psuedo class) via LC_hoverable class for
$link
-ENDREMOTEFORM -} - -sub get_menu_name { - my $hostid = $Apache::lonnet::perlvar{'lonHostID'}; - $hostid =~ s/\W//g; - return 'LCmenu'.$hostid; -} - - -sub reopenmenu { - if ($env{'environment.remote'} eq 'off') { return ''; } - my $menuname = &get_menu_name(); - my $nothing = &Apache::lonhtmlcommon::javascript_nothing(); - return('window.open('.$nothing.',"'.$menuname.'","",false);'); -} - - -sub open { - my $returnval=''; - if ($env{'environment.remote'} eq 'off') { - return - ''; - } - my $menuname = &get_menu_name(); - -# unless (shift eq 'unix') { -# resizing does not work on linux because of virtual desktop sizes -# $returnval.=(<';
+ for (my $row=1; $row<=8; $row++) {
+ foreach my $cat (keys(%category_members)) {
+ if ($category_positions{$cat} ne "$col,$row") { next; }
+ #$output.='
'.
- ' '.&mt('Management').''. - ''.
- ' '.
- '
'; - } 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'); - } - my $navlink; - if ($env{'environment.remotenavmap'} eq 'on') { - $navlink = "javascript:gonav('/adm/navmaps');" - } else { - $navlink = '/adm/navmaps'; - } - $output .= - ' '.
- ' '.&mt('Utilities').''. - ''.
- ' ';
- if ($canreq) {
- $output .= '
'.
- ' ';
- }
- $output .= '
'; - } - } elsif ($switcher || $canreq) { - $output .= ' '. - ' '.
- ' '.&mt('Utilities').''. - ''.
- ' ';
- if ($switcher) {
- $output .= '
'.
- ' ';
- }
- $output .= '
'; - } - } elsif ($context eq 'gcinorole') { - my $queued = &Apache::loncoursequeueadmin::queued_selfenrollment('notitle'); - if ($queued) { - $output .= - ' '.
- ' ';
- }
- } else {
- # calling rawconfig with "1" will evaluate mydesk.tab,
- # even if there is no active remote control
- &rawconfig(1);
- $output=''.&mt('Pending Enrollment Requests').''. - $queued. - '
|