Index: admin_menu.js =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/admin_menu/admin_menu.js,v retrieving revision 1.7.2.6 diff -u -p -r1.7.2.6 admin_menu.js --- admin_menu.js 2 Nov 2008 21:36:22 -0000 1.7.2.6 +++ admin_menu.js 10 Dec 2008 01:38:36 -0000 @@ -1,31 +1,73 @@ /* $Id: admin_menu.js,v 1.7.2.6 2008/11/02 21:36:22 sun Exp $ */ -$(document).ready(function() { - // Apply margin-top if enabled; directly applying marginTop doesn't work in IE. - if ($('#admin-menu').size()) { - if (Drupal.settings.admin_menu.margin_top) { - $('body').addClass('admin-menu'); - } - if (Drupal.settings.admin_menu.position_fixed) { - $('#admin-menu').css('position', 'fixed'); - } - // Move page tabs into administration menu. - if (Drupal.settings.admin_menu.tweak_tabs) { - $('ul.tabs.primary li').each(function() { - $(this).addClass('admin-menu-tab').appendTo('#admin-menu > ul'); - }); - $('ul.tabs.secondary').appendTo('#admin-menu > ul > li.admin-menu-tab.active'); - } +Drupal.adminMenu = Drupal.adminMenu || {}; + +/** + * Core behavior for Administration menu. + * + * This tests whether there is an administration menu is in the output and + * executes all registered behaviors. + */ +Drupal.behaviors.adminMenu = function (context) { + var $adminMenu = $('#admin-menu'); + if ($adminMenu.size()) { + jQuery.each(Drupal.adminMenu, function() { + this(context, $adminMenu); + }); } +}; - // Collapse fieldsets on Modules page. For why multiple selectors see #111719. +/** + * Collapse fieldsets on Modules page. + * + * For why multiple selectors see #111719. + */ +Drupal.behaviors.adminMenuCollapseModules = function (context) { if (Drupal.settings.admin_menu.tweak_modules) { - $('#system-modules fieldset:not(.collapsed), #system-modules-1 fieldset:not(.collapsed)').addClass('collapsed'); + $('#system-modules fieldset:not(.collapsed), #system-modules-1 fieldset:not(.collapsed)', context).addClass('collapsed'); + } +}; + +/** + * Apply 'margin-top'; directly applying marginTop does not work in IE. + */ +Drupal.adminMenu.marginTop = function (context, $adminMenu) { + if (Drupal.settings.admin_menu.margin_top) { + $('body', context).addClass('admin-menu'); + } +}; + +/** + * Apply 'position: fixed'. + */ +Drupal.adminMenu.positionFixed = function (context, $adminMenu) { + if (Drupal.settings.admin_menu.position_fixed) { + $adminMenu.css('position', 'fixed'); } +}; +/** + * Move page tabs into administration menu. + */ +Drupal.adminMenu.pageTabs = function (context, $adminMenu) { + if (Drupal.settings.admin_menu.tweak_tabs) { + $('ul.tabs.primary li', context).each(function() { + $(this).addClass('admin-menu-tab').appendTo('#admin-menu > ul'); + }); + $('ul.tabs.secondary').appendTo('#admin-menu > ul > li.admin-menu-tab.active'); + } +}; + +/** + * Apply JavaScript-based hovering behaviors. + * + * @todo This has to run last. If another script registers additional behaviors + * it will not run last. + */ +Drupal.adminMenu.hover = function (context, $adminMenu) { // Hover emulation for IE 6. if ($.browser.msie && parseInt(jQuery.browser.version) == 6) { - $('#admin-menu li').hover(function() { + $('li', $adminMenu).hover(function() { $(this).addClass('iehover'); }, function() { $(this).removeClass('iehover'); @@ -33,7 +75,7 @@ $(document).ready(function() { } // Delayed mouseout. - $('#admin-menu li').hover(function() { + $('li', $adminMenu).hover(function() { // Stop the timer. clearTimeout(this.sfTimer); // Display child lists. @@ -47,4 +89,5 @@ $(document).ready(function() { uls.css({left: '-999em', display: 'none'}); }, 400); }); -}); +}; +