--- loncom/interface/lonmenu.pm 2012/05/18 14:27:11 1.371 +++ loncom/interface/lonmenu.pm 2012/05/24 23:30:16 1.376 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines to control the menu # -# $Id: lonmenu.pm,v 1.371 2012/05/18 14:27:11 raeburn Exp $ +# $Id: lonmenu.pm,v 1.376 2012/05/24 23:30:16 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -115,6 +115,18 @@ entries from mydesk.tab 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
  • tag for top- +level item, which employs jQuery to handle behavior on mouseover. + +Inputs: 4 - (a) link and (b) target for anchor href in top level item, + (c) title for text wrapped by anchor tag in top level item. + (d) reference to array of arrays of sub-menu items. + =item innerregister() This gets called in order to register a URL in the body of the document @@ -225,50 +237,32 @@ sub primary_menu { my $title = $menuitem->[3]; if (defined($primary_submenu{$title})) { - my ($link,$target,$numsub); + my ($link,$target); if ($menuitem->[0] ne '') { $link = $menuitem->[0]; $target = '_top'; } else { $link = '#'; } + my @primsub; if (ref($primary_submenu{$title}) eq 'ARRAY') { - $numsub = @{$primary_submenu{$title}}; - if ($numsub) { - $title = - ''.$title. - ''. - '▼'; - } - } - $menu .= '
  • '.$title.''; - if ($numsub) { - $menu .= ''; } - $menu .= '
  • '; } elsif ($$menuitem[3] eq 'Help') { # special treatment for helplink if ($public) { my $origmail = $Apache::lonnet::perlvar{'lonSupportEMail'}; @@ -325,6 +319,7 @@ sub secondary_menu { ? "/$env{'request.course.sec'}" : ''); my $canedit = &Apache::lonnet::allowed('mdc', $env{'request.course.id'}); + my $canviewroster = $env{'course.'.$env{'request.course.id'}.'.student_classlist_view'}; my $canviewgrps = &Apache::lonnet::allowed('vcg', $crs_sec); my $canmodifyuser = &Apache::lonnet::allowed('cst', $crs_sec); my $canviewwnew = &Apache::lonnet::allowed('whn', $crs_sec); @@ -353,7 +348,7 @@ sub secondary_menu { next if $$menuitem[4] eq 'cst' && !$canmodifyuser; next if $$menuitem[4] eq 'ncst' - && $canmodifyuser; + && ($canmodifyuser || !$canviewroster); next if $$menuitem[4] eq 'mgr' && !$canmgr; next if $$menuitem[4] eq 'nmgr' @@ -404,6 +399,33 @@ sub secondary_menu { return ""; } +sub create_submenu { + my ($link,$target,$title,$submenu) = @_; + return unless (ref($submenu) eq 'ARRAY'); + my $menu = '
  • '. + ''. + ''.$title. + ''. + ' ▼'. + '
  • '; + return $menu; +} + sub innerregister { my ($forcereg,$bread_crumbs) = @_; my $const_space = ($env{'request.state'} eq 'construct'); @@ -724,7 +746,7 @@ ENDMENUITEMS if (&Apache::lonnet::allowed('bre', $env{'request.course.id'}) eq 'F') { # wishlist is only available for users with access to resource-pool $menuitems .= (<