Diff for /loncom/interface/lonmenu.pm between versions 1.369.2.5 and 1.369.2.6

version 1.369.2.5, 2012/05/23 00:29:22 version 1.369.2.6, 2012/05/24 23:36:17
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 137  The javascript is usually similar to "go Line 149  The javascript is usually similar to "go
   
 =item utilityfunctions()  =item utilityfunctions()
   
   Output from this routine is a number of javascript functions called by
   items in the inline menu, and in some cases items in the Main Menu page. 
   
 =item serverform()  =item serverform()
   
 =item constspaceform()  =item constspaceform()
Line 221  sub primary_menu { Line 236  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">'.$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">'.  
                                  $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 371  sub secondary_menu { Line 367  sub secondary_menu {
   
         my $title = $menuitem->[3];          my $title = $menuitem->[3];
         if (defined($secondary_submenu{$title})) {          if (defined($secondary_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 @scndsub;                 my @scndsub;   
             if (ref($secondary_submenu{$title}) eq 'ARRAY') {              if (ref($secondary_submenu{$title}) eq 'ARRAY') {
                 $numsub = 0;  
                 foreach my $item (@{$secondary_submenu{$title}}) {                  foreach my $item (@{$secondary_submenu{$title}}) {
                     if (ref($item) eq 'ARRAY') {                      if (ref($item) eq 'ARRAY') {
                         next if ($item->[2] eq 'vgr' && !$canvgr);                          next if ($item->[2] eq 'vgr' && !$canvgr);
Line 390  sub secondary_menu { Line 384  sub secondary_menu {
                         next if ($item->[2] eq 'mgr' && !$canmgr);                          next if ($item->[2] eq 'mgr' && !$canmgr);
                         next if ($item->[2] eq 'vcg' && !$canviewgrps);                          next if ($item->[2] eq 'vcg' && !$canviewgrps);
                         push(@scndsub,$item);                           push(@scndsub,$item); 
                         $numsub ++;  
                     }                      }
                 }                  }
                 if ($numsub) {                  if (@scndsub > 0) {
                     $title =                      $menu .= &create_submenu($link,$target,$title,\@scndsub);
                         '<span class="LC_nobreak">'.$title.                  } elsif ($link) {
                         '<span class="LC_fontsize_small" style="font-weight:normal">'.                      $menu .= '<li><a href="'.$link.'" target="'.$target.'">'.$title.'</a></li>';
                         ' &#9660;</span></span>';  
                 }  
             }  
             $menu .= '<li class="LC_hoverable">'.  
                      '<a href="'.$link.'" target="'.$target.'">'.$title.'</a>';  
             if ($numsub) {  
                 $menu .= '<ul>';  
                 my $count = 0;  
                 foreach my $item (@scndsub) {  
                     $count ++;  
                     if (ref($item) eq 'ARRAY') {  
                         my $borderbot;  
                         my ($padtop,$padbot) = (0,0);  
                         if ($count == 1)  {  
                             $padtop = '5px';  
                         }  
                         if ($count == $numsub) {  
                             $padbot = '5px';  
                             $borderbot = 'border-bottom:1px solid black;';  
                         }  
                         $menu .= '<li style="margin:0;padding-left:0;padding-right:0;'.  
                                  'padding-top:'.$padtop.';padding-bottom:'.$padbot.';'.  
                                  $borderbot.'"><a href="'.$item->[0].  
                                  '" style="padding: 0 5px 0 10px">'.  
                                  $item->[1].'</a></li>';  
                     }  
                 }                  }
                 $menu .= '</ul>';  
             }              }
             $menu .= '</li>';  
         } elsif ($$menuitem[3] eq 'Roles' && $env{'request.course.id'}) {          } elsif ($$menuitem[3] eq 'Roles' && $env{'request.course.id'}) {
             # special treatment for role selector              # special treatment for role selector
             my $roles_selector = &roles_selector(              my $roles_selector = &roles_selector(
Line 463  sub secondary_menu { Line 428  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].'">'.
                        '" style="padding: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.369.2.5  
changed lines
  Added in v.1.369.2.6


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