From e7c74e010774fa9a5a916a3e2741f6e5b491da4e Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Wed, 10 Mar 2010 04:07:01 +0000 Subject: [PATCH] MINOR Using PermissionCheckboxSetField.js instead of MemberTableField.js git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/branches/2.4@100791 467b73ca-7a2a-4603-9d3b-597d59a354a9 --- javascript/PermissionCheckboxSetField.js | 34 ++++++++++++++++++++++++ security/PermissionCheckboxSetField.php | 1 + 2 files changed, 35 insertions(+) create mode 100644 javascript/PermissionCheckboxSetField.js diff --git a/javascript/PermissionCheckboxSetField.js b/javascript/PermissionCheckboxSetField.js new file mode 100644 index 000000000..b141eb9ae --- /dev/null +++ b/javascript/PermissionCheckboxSetField.js @@ -0,0 +1,34 @@ +(function($) { + Behaviour.register({ + /** + * Automatically check and disable all checkboxes if ADMIN permissions are selected. + * As they're disabled, any changes won't be submitted (which is intended behaviour), + * checking all boxes is purely presentational. + */ + '.permissioncheckboxset .valADMIN input': { + initialize: function() { + this.toggleCheckboxes(); + }, + onclick: function(e) { + this.toggleCheckboxes(); + }, + toggleCheckboxes: function() { + var checkboxes = $(this).parents('.field:eq(0)').find('.checkbox').not(this); + + if($(this).is(':checked')) { + checkboxes.each(function() { + $(this).data('SecurityAdmin.oldChecked', $(this).attr('checked')); + $(this).data('SecurityAdmin.oldDisabled', $(this).attr('disabled')); + $(this).attr('disabled', 'disabled'); + $(this).attr('checked', 'checked'); + }); + } else { + checkboxes.each(function() { + $(this).attr('checked', $(this).data('SecurityAdmin.oldChecked')); + $(this).attr('disabled', $(this).data('SecurityAdmin.oldDisabled')); + }); + } + } + } + }); +}(jQuery)); \ No newline at end of file diff --git a/security/PermissionCheckboxSetField.php b/security/PermissionCheckboxSetField.php index 53d4d0067..f93d94eb0 100644 --- a/security/PermissionCheckboxSetField.php +++ b/security/PermissionCheckboxSetField.php @@ -72,6 +72,7 @@ class PermissionCheckboxSetField extends FormField { function Field() { Requirements::css(SAPPHIRE_DIR . '/css/CheckboxSetField.css'); + Requirements::javascript(SAPPHIRE_DIR . '/javascript/PermissionCheckboxSetField.js'); $uninheritedCodes = array(); $inheritedCodes = array();