Diff for /loncom/interface/lonmenu.pm between versions 1.374 and 1.375

version 1.374, 2012/05/22 16:44:06 version 1.375, 2012/05/24 22:56:30
Line 115  entries from mydesk.tab Line 115  entries from mydesk.tab
   
 Same as primary_menu() but operates on @secondary_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 <li> 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()  =item innerregister()
   
 This gets called in order to register a URL in the body of the document  This gets called in order to register a URL in the body of the document
Line 225  sub primary_menu { Line 237  sub primary_menu {
                   
         my $title = $menuitem->[3];          my $title = $menuitem->[3];
         if (defined($primary_submenu{$title})) {          if (defined($primary_submenu{$title})) {
             my ($link,$target,$numsub);              my ($link,$target);
             if ($menuitem->[0] ne '') {              if ($menuitem->[0] ne '') {
                 $link = $menuitem->[0];                  $link = $menuitem->[0];
                 $target = '_top';                  $target = '_top';
             } else {              } else {
                 $link = '#';                  $link = '#';
             }              }
               my @primsub;
             if (ref($primary_submenu{$title}) eq 'ARRAY') {              if (ref($primary_submenu{$title}) eq 'ARRAY') {
                 $numsub = @{$primary_submenu{$title}};                  foreach my $item (@{$primary_submenu{$title}}) {
                 if ($numsub) {                      next if (($item->[2] eq 'wishlist') &&
                     $title =                               ((!&Apache::lonnet::allowed('bre',"/res/$env{'user.domain'}/")) &&
                         '<span class="LC_nobreak">'.&mt($title).                                (!&Apache::lonnet::allowed('bro',"/res/$env{'user.domain'}/"))));
                         '<span class="LC_fontsize_small">'.                      next if (($item->[2] eq 'reqcrs') && (!&check_for_rcrs()));
                         '&#9660;</span></span>';                      next if ((($item->[2] eq 'portfolio') ||
                                ($item->[2] eq 'blog')) &&
                                (!&Apache::lonnet::usertools_access('','',$item->[2],
                                                              undef,'tools')));
                       push(@primsub,$item);
                 }                  }
             }                  if (@primsub > 0) {
             $menu .= '<li class="LC_hoverable">'.                      $menu .= &create_submenu($link,$target,$title,\@primsub);
                      '<a href="'.$link.'" target="'.$target.'">'.$title.'</a>';                  } elsif ($link) {
             if ($numsub) {                      $menu .= '<li><a href="'.$link.'" target="'.$target.'">'.$title.'</a></li>';
                 $menu .= '<ul>';  
                 foreach my $item (@{$primary_submenu{$menuitem->[3]}}) {  
                     if (ref($item) eq 'ARRAY') {  
                         if ($item->[2] eq 'wishlist') {  
                             next unless ((&Apache::lonnet::allowed('bre',"/res/$env{'user.domain'}/")) ||  
                                          (&Apache::lonnet::allowed('bro',"/res/$env{'user.domain'}/")));  
                         } elsif ($item->[2] eq 'reqcrs') {  
                             next unless(&check_for_rcrs());  
                         } elsif (($item->[2] eq 'portfolio') ||  
                                  ($item->[2] eq 'blog')) {  
                             if (!&Apache::lonnet::usertools_access(  
                                     $env{'user.name'},  
                                     $env{'user.domain'},  
                                     $item->[2],undef,'tools')) {  
                                 next;  
                             }  
                         }  
                         $menu .= '<li style="margin:0;padding:0">'.  
                                  '<a href="'.$item->[0].  
                                  '" style="padding:0 0 0 10px">'.  
                                  &mt($item->[1]).'</a></li>';  
                     }  
                 }                  }
                 $menu .= '</ul>';  
             }              }
             $menu .= '</li>';  
         } elsif ($$menuitem[3] eq 'Help') { # special treatment for helplink          } elsif ($$menuitem[3] eq 'Help') { # special treatment for helplink
             if ($public) {              if ($public) {
                 my $origmail = $Apache::lonnet::perlvar{'lonSupportEMail'};                  my $origmail = $Apache::lonnet::perlvar{'lonSupportEMail'};
Line 405  sub secondary_menu { Line 398  sub secondary_menu {
     return "<ul id=\"LC_secondary_menu\">$menu</ul>";      return "<ul id=\"LC_secondary_menu\">$menu</ul>";
 }  }
   
   sub create_submenu {
       my ($link,$target,$title,$submenu) = @_;
       return unless (ref($submenu) eq 'ARRAY');
       my $menu = '<li class="LC_hoverable">'.
                  '<a href="'.$link.'" target="'.$target.'">'.
                  '<span class="LC_nobreak">'.$title.
                  '<span class="LC_fontsize_small" style="font-weight:normal;">'.
                  ' &#9660;</span></span></a>'.
                  '<ul>';
       my $count = 0;
       my $numsub = scalar(@{$submenu});
       foreach my $item (@{$submenu}) {
           $count ++;
           if (ref($item) eq 'ARRAY') {
               my $borderbot;
               if ($count == $numsub) {
                   $borderbot = 'border-bottom:1px solid black;';
               }
               $menu .= '<li style="margin:0;padding:0;'.
                        $borderbot.'"><a href="'.$item->[0].'">'.
                        $item->[1].'</a></li>';
           }
       }
       $menu .= '</ul></li>';
       return $menu;
   }
   
 sub innerregister {  sub innerregister {
     my ($forcereg,$bread_crumbs) = @_;      my ($forcereg,$bread_crumbs) = @_;
     my $const_space = ($env{'request.state'} eq 'construct');      my $const_space = ($env{'request.state'} eq 'construct');

Removed from v.1.374  
changed lines
  Added in v.1.375


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>