65 lines
2.3 KiB
JavaScript
65 lines
2.3 KiB
JavaScript
(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); |