From 76786348d9b0cf8fc5b0760a1ce4053fdf60c73e Mon Sep 17 00:00:00 2001
From: Adam Young <ayo...@redhat.com>
Date: Thu, 16 Jun 2011 12:44:47 -0400
Subject: [PATCH] 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
---
 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 3e31b4c4a5a62be189e2eb4dd0bb6f4581caca79..4dc2d5f81b68fb3637f3b7c0032b3f3b2c946e39 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();
         });
 
-- 
1.7.5.2

_______________________________________________
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel

Reply via email to