summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Young <ayoung@redhat.com>2011-06-16 12:44:47 -0400
committerEndi S. Dewata <edewata@redhat.com>2011-06-16 17:21:22 +0000
commitf02b544aaf53156cb1fee8e64456eee31866c10f (patch)
tree558e3101abd1219983be3c6b89ec07c064156aca
parentd6343f4bb079eec744553078c75205abec7e692d (diff)
downloadfreeipa-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.js48
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();
});