diff options
author | Petr Vobornik <pvoborni@redhat.com> | 2012-03-09 15:52:05 +0100 |
---|---|---|
committer | Petr Vobornik <pvoborni@redhat.com> | 2012-03-15 16:08:02 +0100 |
commit | 3ca0f6aee5b04758f8473359cc14979d27d31530 (patch) | |
tree | 3d7b2ef8a65219e66e3f7155b1a06da5608c3f8b /install/ui/field.js | |
parent | 51601ac794ce589981c0cc3501d91518cea27f15 (diff) | |
download | freeipa-3ca0f6aee5b04758f8473359cc14979d27d31530.tar.gz freeipa-3ca0f6aee5b04758f8473359cc14979d27d31530.tar.xz freeipa-3ca0f6aee5b04758f8473359cc14979d27d31530.zip |
Fixed evaluating checkbox dirty status
Problem:
When value in checkbox is modified twice in a row (so it is at its original value) an 'undo' button is still visible even when it shouldn't be.
Cause:
IPA server sends boolean values as 'TRUE' or 'FALSE' (strings). Checkbox_widget converts them to JavaScript? boolean (true, false). Save method in checkbox_widget is returning array with a boolean. So test_dirty method always evaluates to dirty because 'FALSE' != false.
This patch is fixing the problem.
https://fedorahosted.org/freeipa/ticket/2494
Diffstat (limited to 'install/ui/field.js')
-rw-r--r-- | install/ui/field.js | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/install/ui/field.js b/install/ui/field.js index 5f073705d..162ec81ba 100644 --- a/install/ui/field.js +++ b/install/ui/field.js @@ -487,6 +487,23 @@ IPA.checkbox_field = function(spec) { var that = IPA.field(spec); that.checked = spec.checked || false; + that.boolean_formatter = IPA.boolean_formatter(); + + that.load = function(record) { + + that.record = record; + + that.values = that.get_value(record, that.param); + + var value = that.boolean_formatter.parse(that.values); + if (value === '') value = that.widget.checked; //default value + + that.values = [value]; + + that.load_writable(record); + + that.reset(); + }; that.widgets_created = function() { @@ -510,13 +527,6 @@ IPA.checkboxes_field = function(spec) { var that = IPA.field(spec); - that.checkbox_load = that.load; -/* - // a checkbox will always have a value, so it's never required - that.is_required = function() { - return false; - }; -*/ return that; }; |