1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- (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);
|