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