From c75f332af9225da285c54f0b09d87f28e3a2185b Mon Sep 17 00:00:00 2001 From: Adam Young Date: Thu, 27 Jan 2011 20:30:22 -0500 Subject: 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(-) (limited to 'install') diff --git a/install/ui/aci.js b/install/ui/aci.js index 01f6ce29..742a52c7 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 128413b1..a5ad6d06 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; -- cgit