/** * @file */ (function ($) { /** * Live preview of Administration menu components. */ Drupal.behaviors.adminMenuLivePreview = { attach: function (context, settings) { $('input[name^="admin_menu_components"]', context).once('admin-menu-live-preview') .change(function () { var target = $(this).attr('rel'); $(target).toggle(this.checked); }) .trigger('change'); } }; /** * Automatically enables required permissions on demand. * * Many users do not understand that two permissions are required for the * administration menu to appear. Since Drupal core provides no facility for * this, we implement a simple manual confirmation for automatically enabling * the "other" permission. */ Drupal.behaviors.adminMenuPermissionsSetupHelp = { attach: function (context, settings) { $('#permissions', context).once('admin-menu-permissions-setup', function () { // Retrieve matrix/mapping - these need to use the same indexes for the // same permissions and roles. var $roles = $(this).find('th:not(:first)'); var $admin = $(this).find('input[name$="[access administration pages]"]'); var $menu = $(this).find('input[name$="[access administration menu]"]'); // Retrieve the permission label - without description. var adminPermission = $.trim($admin.eq(0).parents('td').prev().children().get(0).firstChild.textContent); var menuPermission = $.trim($menu.eq(0).parents('td').prev().children().get(0).firstChild.textContent); $admin.each(function (index) { // Only proceed if both are not enabled already. if (!(this.checked && $menu[index].checked)) { // Stack both checkboxes and attach a click event handler to both. $(this).add($menu[index]).click(function () { // Do nothing when disabling a permission. if (this.checked) { // Figure out which is the other, check whether it still disabled, // and if so, ask whether to auto-enable it. var other = (this == $admin[index] ? $menu[index] : $admin[index]); if (!other.checked && confirm(Drupal.t('Also allow @name role to @permission?', { '@name': $roles[index].textContent, '@permission': (this == $admin[index] ? menuPermission : adminPermission) }))) { other.checked = 'checked'; } } }); } }); }); } }; })(jQuery);