1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- (function($) {
- Drupal.behaviors.adminToolbarMenu = {};
- Drupal.behaviors.adminToolbarMenu.attach = function(context) {
- if (jQuery().drilldown) {
- $('#admin-toolbar div.admin-block:has(ul.menu):not(.admin-toolbar-menu)')
- .addClass('admin-toolbar-menu')
- .each(function() {
- var menu = $(this);
- var trail = '#admin-toolbar div.admin-tab.' + $(this).attr('id').split('block-')[1] + ' span';
- var rootTitle = $(trail).text();
- if ($('a:has(span.menu-description)', menu).size() > 0) {
- menu.addClass('admin-toolbar-menu-hover');
- $('a:has(span.menu-description)', menu).hover(
- function() {
- $('<a></a>')
- .attr('class', $(this).attr('class'))
- .addClass('menu-hover')
- .addClass('overlay-exclude')
- .append($('span.menu-description', this).clone())
- .appendTo(menu)
- .show();
- },
- function() {
- $(menu)
- .children('a.menu-hover')
- .remove();
- }
- );
- }
- // Replace the standard trail click handler with one that only
- // adjusts menu if the admin tab is active. Otherwise, switch
- // to that admin tab.
- menu.bind('refresh.drilldown', function() {
- $(trail + ' a').unbind('click').click(function() {
- if ($(this).parents('div.admin-tab').is('.admin-tab-active')) {
- var settings = {'activeLink': $(this).data('original'), 'trail': trail};
- // If the clicked link does not reference the current
- // active menu, set it to be active.
- if (settings.activeLink.siblings('ul.drilldown-active-menu').size() === 0) {
- menu.drilldown('setActive', settings);
- return false;
- }
- // Otherwise, pass-through and allow the link to be clicked.
- return menu.drilldown('goTo', settings);
- }
- $(this).parents('div.admin-tab').click();
- return false;
- });
- });
- // Init drilldown plugin.
- menu.drilldown('init', {
- activePath: Drupal.settings.activePath,
- trail: trail,
- rootTitle: rootTitle
- });
- });
- }
- };
- })(jQuery);
|