From bfffe1930465ef7af23c1915e8c22719dc6751e0 Mon Sep 17 00:00:00 2001
From: Adam Young <ayo...@redhat.com>
Date: Thu, 27 Jan 2011 20:30:22 -0500
Subject: [PATCH] aci rights widget

Fixes is_dirty and save

https://fedorahosted.org/freeipa/ticket/77
https://fedorahosted.org/freeipa/ticket/667
---
 install/ui/aci.js |   40 +++++++++++++++++++++++++++++++++++-----
 install/ui/ipa.js |    8 +++-----
 2 files changed, 38 insertions(+), 10 deletions(-)

diff --git a/install/ui/aci.js b/install/ui/aci.js
index 3bad384a2b80e3842395ba54004b2808928f28cf..3448b8f457d3bdf0a6a55898761f181a51722512 100644
--- a/install/ui/aci.js
+++ b/install/ui/aci.js
@@ -222,10 +222,40 @@ IPA.rights_widget = function(spec){
     };
     var values = [];
 
+    function get_selector(){
+        return  '.'+ that.entity_name +"_"+ that.name;
+    }
+
+    that.is_dirty = function(){
+
+        var checkboxes = $(get_selector());
+        var checked = {};
+
+        checkboxes.each(function (){
+            checked[this.id] = this.checked;
+        });
+
+        for (var i = 0; i < values.length; i +=1){
+            var key = values[i];
+
+            if ( !checked[key] ){
+                return true;
+            }
+            checked[key] = false;
+        }
+
+        for (key in checked){
+            if (checked[key] ){
+                return true;
+            }
+        }
+
+        return false;
+    };
+
     that.reset = function(){
-        var selector = '.'+ that.entity_name +"_"+ that.name;
 
-        var checkboxes = $(selector);
+        var checkboxes = $(get_selector());
 
         for (var i = 0; i < checkboxes.length; i +=1){
             checkboxes.attr('checked','');
@@ -233,7 +263,7 @@ IPA.rights_widget = function(spec){
 
         for (var j = 0; j < values.length; j +=1){
             var value = values[j];
-            var cb = $('#'+value+ selector);
+            var cb = $('#'+value+ get_selector());
             cb.attr('checked', 'checked');
         }
 
@@ -245,7 +275,7 @@ IPA.rights_widget = function(spec){
     };
 
     that.save = function(){
-        var rights_input =  $('.'+ that.entity_name +"_"+ that.name);
+        var rights_input =  $(get_selector()+":checked");
         var retval = "";
         for (var i =0; i < rights_input.length; i+=1){
             if (i > 0) {
@@ -592,7 +622,7 @@ IPA.entity_factories.permission = function () {
                       input({ name: 'description'})).
               section(IPA.rights_section()).
               section(IPA.target_section()));
-    return that;
+
 };
 
 
diff --git a/install/ui/ipa.js b/install/ui/ipa.js
index 128413b1e6b3e65d66062c7b3329cea399b0552b..a5ad6d0625f888a6bbdb4c808a8dbb81a88b264e 100644
--- a/install/ui/ipa.js
+++ b/install/ui/ipa.js
@@ -155,9 +155,7 @@ var IPA = ( function () {
             }
         }
         return true;
-    }
-
-
+    };
 
     that.show_page = function (entity_name, facet_name) {
         if (!IPA.test_dirty()){
@@ -170,19 +168,19 @@ var IPA = ( function () {
     };
 
     that.switch_and_show_page = function (this_entity,  facet_name, pkey) {
-
         if (!IPA.test_dirty()){
             return false;
         }
 
         if (!pkey){
             that.show_page(this_entity,  facet_name);
-            return;
+            return false;
         }
         var state = {};
         state[this_entity+'-pkey'] = pkey;
         state[this_entity + '-facet'] = facet_name;
         $.bbq.pushState(state);
+        return true;
     };
 
     return that;
-- 
1.7.3.5

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

Reply via email to