diff options
author | Adam Young <ayoung@redhat.com> | 2011-06-16 12:44:47 -0400 |
---|---|---|
committer | Endi S. Dewata <edewata@redhat.com> | 2011-06-16 17:21:22 +0000 |
commit | f02b544aaf53156cb1fee8e64456eee31866c10f (patch) | |
tree | 558e3101abd1219983be3c6b89ec07c064156aca | |
parent | d6343f4bb079eec744553078c75205abec7e692d (diff) | |
download | freeipa-f02b544aaf53156cb1fee8e64456eee31866c10f.tar.gz freeipa-f02b544aaf53156cb1fee8e64456eee31866c10f.tar.xz freeipa-f02b544aaf53156cb1fee8e64456eee31866c10f.zip |
test for dirty
instead of always setting dirty, we do the original test, and then set the flag and show the link.
https://fedorahosted.org/freeipa/ticket/1337
-rw-r--r-- | install/ui/widget.js | 48 |
1 files changed, 47 insertions, 1 deletions
diff --git a/install/ui/widget.js b/install/ui/widget.js index 3e31b4c4a..4dc2d5f81 100644 --- a/install/ui/widget.js +++ b/install/ui/widget.js @@ -141,6 +141,52 @@ IPA.widget = function(spec) { } } }; + /** + * This function compares the original values and the + * values entered in the UI. If the values have changed + * it will return true. + */ + that.test_dirty = function(){ + + if (that.read_only) { + return false; + } + + var values = that.save(); + + if (!values) { // ignore null values + return false; + } + + if (!that.values) { + + if (values instanceof Array) { + + if ((values.length === 0) || + (values.length === 1) && + (values[0] === '')) { + return false; + } + } + + return true; + } + + if (values.length != that.values.length) { + return true; + } + + values.sort(); + that.values.sort(); + + for (var i=0; i<values.length; i++) { + if (values[i] != that.values[i]) { + return true; + } + } + + return false; + }; that.create = function(container) { that.container = container; @@ -324,7 +370,7 @@ IPA.text_widget = function(spec) { var input = $('input[name="'+that.name+'"]', that.container); input.keyup(function() { - that.set_dirty(true); + that.set_dirty(that.test_dirty()); that.validate(); }); |