danielebarchiesi@4
|
1 (function($) {
|
danielebarchiesi@4
|
2
|
danielebarchiesi@4
|
3 /**
|
danielebarchiesi@4
|
4 * Live preview of Administration menu components.
|
danielebarchiesi@4
|
5 */
|
danielebarchiesi@4
|
6 Drupal.behaviors.adminMenuLivePreview = {
|
danielebarchiesi@4
|
7 attach: function (context, settings) {
|
danielebarchiesi@4
|
8 $('input[name^="admin_menu_components"]', context).once('admin-menu-live-preview')
|
danielebarchiesi@4
|
9 .change(function () {
|
danielebarchiesi@4
|
10 var target = $(this).attr('rel');
|
danielebarchiesi@4
|
11 $(target).toggle(this.checked);
|
danielebarchiesi@4
|
12 })
|
danielebarchiesi@4
|
13 .trigger('change');
|
danielebarchiesi@4
|
14 }
|
danielebarchiesi@4
|
15 };
|
danielebarchiesi@4
|
16
|
danielebarchiesi@4
|
17 /**
|
danielebarchiesi@4
|
18 * Automatically enables required permissions on demand.
|
danielebarchiesi@4
|
19 *
|
danielebarchiesi@4
|
20 * Many users do not understand that two permissions are required for the
|
danielebarchiesi@4
|
21 * administration menu to appear. Since Drupal core provides no facility for
|
danielebarchiesi@4
|
22 * this, we implement a simple manual confirmation for automatically enabling
|
danielebarchiesi@4
|
23 * the "other" permission.
|
danielebarchiesi@4
|
24 */
|
danielebarchiesi@4
|
25 Drupal.behaviors.adminMenuPermissionsSetupHelp = {
|
danielebarchiesi@4
|
26 attach: function (context, settings) {
|
danielebarchiesi@4
|
27 $('#permissions', context).once('admin-menu-permissions-setup', function () {
|
danielebarchiesi@4
|
28 // Retrieve matrix/mapping - these need to use the same indexes for the
|
danielebarchiesi@4
|
29 // same permissions and roles.
|
danielebarchiesi@4
|
30 var $roles = $(this).find('th:not(:first)');
|
danielebarchiesi@4
|
31 var $admin = $(this).find('input[name$="[access administration pages]"]');
|
danielebarchiesi@4
|
32 var $menu = $(this).find('input[name$="[access administration menu]"]');
|
danielebarchiesi@4
|
33
|
danielebarchiesi@4
|
34 // Retrieve the permission label - without description.
|
danielebarchiesi@4
|
35 var adminPermission = $.trim($admin.eq(0).parents('td').prev().children().get(0).firstChild.textContent);
|
danielebarchiesi@4
|
36 var menuPermission = $.trim($menu.eq(0).parents('td').prev().children().get(0).firstChild.textContent);
|
danielebarchiesi@4
|
37
|
danielebarchiesi@4
|
38 $admin.each(function (index) {
|
danielebarchiesi@4
|
39 // Only proceed if both are not enabled already.
|
danielebarchiesi@4
|
40 if (!(this.checked && $menu[index].checked)) {
|
danielebarchiesi@4
|
41 // Stack both checkboxes and attach a click event handler to both.
|
danielebarchiesi@4
|
42 $(this).add($menu[index]).click(function () {
|
danielebarchiesi@4
|
43 // Do nothing when disabling a permission.
|
danielebarchiesi@4
|
44 if (this.checked) {
|
danielebarchiesi@4
|
45 // Figure out which is the other, check whether it still disabled,
|
danielebarchiesi@4
|
46 // and if so, ask whether to auto-enable it.
|
danielebarchiesi@4
|
47 var other = (this == $admin[index] ? $menu[index] : $admin[index]);
|
danielebarchiesi@4
|
48 if (!other.checked && confirm(Drupal.t('Also allow !name role to !permission?', {
|
danielebarchiesi@4
|
49 '!name': $roles[index].textContent,
|
danielebarchiesi@4
|
50 '!permission': (this == $admin[index] ? menuPermission : adminPermission)
|
danielebarchiesi@4
|
51 }))) {
|
danielebarchiesi@4
|
52 other.checked = 'checked';
|
danielebarchiesi@4
|
53 }
|
danielebarchiesi@4
|
54 }
|
danielebarchiesi@4
|
55 });
|
danielebarchiesi@4
|
56 }
|
danielebarchiesi@4
|
57 });
|
danielebarchiesi@4
|
58 });
|
danielebarchiesi@4
|
59 }
|
danielebarchiesi@4
|
60 };
|
danielebarchiesi@4
|
61
|
danielebarchiesi@4
|
62 })(jQuery);
|