summaryrefslogtreecommitdiffstats
path: root/install/ui/field.js
diff options
context:
space:
mode:
authorPetr Vobornik <pvoborni@redhat.com>2012-03-09 15:52:05 +0100
committerPetr Vobornik <pvoborni@redhat.com>2012-03-15 16:08:02 +0100
commit3ca0f6aee5b04758f8473359cc14979d27d31530 (patch)
tree3d7b2ef8a65219e66e3f7155b1a06da5608c3f8b /install/ui/field.js
parent51601ac794ce589981c0cc3501d91518cea27f15 (diff)
downloadfreeipa-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.js24
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;
};