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

version 1.369.2.5, 2012/05/23 00:29:22 version 1.369.2.9, 2012/05/26 13:57:02
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 164  use Apache::lonlocal; Line 179  use Apache::lonlocal;
 use Apache::lonmsg();  use Apache::lonmsg();
 use LONCAPA qw(:DEFAULT :match);  use LONCAPA qw(:DEFAULT :match);
 use HTML::Entities();  use HTML::Entities();
   use Apache::lonwishlist();
   
 use vars qw(@desklines %category_names %category_members %category_positions   use vars qw(@desklines %category_names %category_members %category_positions 
             $readdesk @primary_menu %primary_submenu @secondary_menu %secondary_submenu);              $readdesk @primary_menu %primary_submenu @secondary_menu %secondary_submenu);
Line 221  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">'.$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 .= &create_submenu($link,$target,$title,\@primsub);
                   } elsif ($link) {
                       $menu .= '<li><a href="'.$link.'" target="'.$target.'">'.&mt($title).'</a></li>';
                 }                  }
             }              }
             $menu .= '<li class="LC_hoverable">'.  
                      '<a href="'.$link.'" target="'.$target.'">'.$title.'</a>';  
             if ($numsub) {  
                 $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 368  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 385  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.'">'.&mt($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 429  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">'.&mt($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].'">'.
                        &mt($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');
Line 743  c&6&3 Line 736  c&6&3
 c&8&1  c&8&1
 c&8&2  c&8&2
 s&8&3&prt.png&Print&printout[_1]&gopost('/adm/printout',currentURL)&Prepare a printable document  s&8&3&prt.png&Print&printout[_1]&gopost('/adm/printout',currentURL)&Prepare a printable document
 s&9&1&sbkm.png&Bookmark&set[_1]bookmark[_2]&set_bookmark()&Set a bookmark for this resource&&1  
   
 ENDMENUITEMS  ENDMENUITEMS
               if (&Apache::lonnet::allowed('bre', $env{'request.course.id'}) eq 'F' && $env{'request.uri'} =~ /^\/res/) {
                   # wishlist is only available for users with access to resource-pool
                   # and links can only be set for resources within the resource-pool
                   $menuitems .= (<<ENDMENUITEMS);
   s&9&1&wishlist-link.png&Stored Links&wishlistlink[_2]&set_wishlistlink()&Save a link for this resource in your personal Stored Links repository&&1
   ENDMENUITEMS
               }
   
 my $currentURL = &Apache::loncommon::get_symb();  my $currentURL = &Apache::loncommon::get_symb();
 my ($symb_old,$symb_old_enc) = &Apache::loncommon::clean_symb($currentURL);  my ($symb_old,$symb_old_enc) = &Apache::loncommon::clean_symb($currentURL);
Line 775  ENDREALRES Line 773  ENDREALRES
     $menuitems .= (<<ENDMENUITEMS);      $menuitems .= (<<ENDMENUITEMS);
 s&8&3&prt.png&Print&printout[_1]&gopost('/adm/printout',currentURL)&Prepare a printable document  s&8&3&prt.png&Print&printout[_1]&gopost('/adm/printout',currentURL)&Prepare a printable document
 ENDMENUITEMS  ENDMENUITEMS
               if (&Apache::lonnet::allowed('bre', $env{'request.course.id'}) eq 'F') {
                   # wishlist is only available for users with access to resource-pool
                   $menuitems .= (<<ENDMENUITEMS);
   s&9&1&wishlist-link.png&Stored Links&wishlistlink[_2]&set_wishlistlink()&Save a link for this resource in your personal Stored Links repository&&1
   ENDMENUITEMS
               }
  }   }
         my $buttons='';          my $buttons='';
         foreach (split(/\n/,$menuitems)) {          foreach (split(/\n/,$menuitems)) {
Line 1413  sub utilityfunctions { Line 1417  sub utilityfunctions {
     my $end_page_annotate =       my $end_page_annotate = 
         &Apache::loncommon::end_page({'js_ready' => 1});          &Apache::loncommon::end_page({'js_ready' => 1});
   
     my $start_page_bookmark =  
         &Apache::loncommon::start_page('Bookmarks',undef,  
                                        {'only_body' => 1,  
                                         'js_ready'  => 1,  
                                         'bgcolor'   => '#BBBBBB',});  
   
     my $end_page_bookmark =  
         &Apache::loncommon::end_page({'js_ready' => 1});  
   
     my $confirm_switch = &mt("Editing requires switching to the resource's home server.").'\n'.      my $confirm_switch = &mt("Editing requires switching to the resource's home server.").'\n'.
                          &mt('Switch server?');                           &mt('Switch server?');
   
Line 1538  function group_chat(group) { Line 1533  function group_chat(group) {
    grpchat=window.open(url,winName,'height=320,width=280,resizable=yes,location=no,menubar=no,toolbar=no');     grpchat=window.open(url,winName,'height=320,width=280,resizable=yes,location=no,menubar=no,toolbar=no');
 }  }
   
 function edit_bookmarks() {  
    go('');  
    w_BookmarkPal_flag=1;  
    bookmarkpal=window.open("/adm/bookmarks",  
                "BookmarkPal", "width=500,height=505,scrollbars=0");  
 }  
   
 function annotate() {  function annotate() {
    w_Annotator_flag=1;     w_Annotator_flag=1;
    annotator=window.open('','Annotator','width=365,height=265,scrollbars=0');     annotator=window.open('','Annotator','width=365,height=265,scrollbars=0');
Line 1558  function annotate() { Line 1546  function annotate() {
    annotator.document.close();     annotator.document.close();
 }  }
   
   function open_StoredLinks_Import(rat) {
      var newWin;
      if (rat) {
          newWin = window.open('/adm/wishlist?inhibitmenu=yes&mode=import&rat='+rat,
                               'wishlistImport','scrollbars=1,resizable=1,menubar=0');
      }
      else {
          newWin = window.open('/adm/wishlist?inhibitmenu=yes&mode=import',
                               'wishlistImport','scrollbars=1,resizable=1,menubar=0');
      }
      newWin.focus();
   }
   
 (function (\$) {  (function (\$) {
   \$(document).ready(function () {    \$(document).ready(function () {
     \$.single=function(a){return function(b){a[0]=b;return a}}(\$([1]));      \$.single=function(a){return function(b){a[0]=b;return a}}(\$([1]));
Line 1572  function annotate() { Line 1573  function annotate() {
   });    });
 }(jQuery));  }(jQuery));
   
 function set_bookmark() {  
    go('');  
    clienttitle=document.title;  
    clienthref=location.pathname;  
    w_bmquery_flag=1;  
    bmquery=window.open('','bmquery','width=365,height=165,scrollbars=0');  
    bmquery.document.write(  
    '$start_page_bookmark'  
    +'<center><form method="post"'  
    +' name="newlink" action="/adm/bookmarks" target="bmquery" '  
    +'> <table width="340" height="150" '  
    +'bgcolor="#FFFFFF" align="center"><tr><td>Link Name:<br /><input '  
    +'type="text" name="title" size="45" value="'+clienttitle+'" />'  
    +'<br />Address:<br /><input type="text" name="address" size="45" '  
    +'value="'+clienthref+'" /><br /><center><input type="submit" '  
    +'value="Save" /> <input type="button" value="Close" '  
    +'onclick="javascript:window.close();" /></center></td>'  
    +'</tr></table></form></center>'  
    +'$end_page_bookmark' );  
    bmquery.document.close();  
 }  
   
 ENDUTILITY  ENDUTILITY
 }  }
   

Removed from v.1.369.2.5  
changed lines
  Added in v.1.369.2.9


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