diff options
author | Adam Young <ayoung@redhat.com> | 2011-02-01 13:06:58 -0500 |
---|---|---|
committer | Endi S. Dewata <edewata@redhat.com> | 2011-02-01 14:56:41 -0500 |
commit | ec59e618da26b3514c9e174b7a7e8aa3e0deb462 (patch) | |
tree | da9d9319854cdd1974c5acf59f44113b6accce91 /install | |
parent | 5c6232e24d008d062bb5e70dae5b111c32e96169 (diff) | |
download | freeipa-ec59e618da26b3514c9e174b7a7e8aa3e0deb462.tar.gz freeipa-ec59e618da26b3514c9e174b7a7e8aa3e0deb462.tar.xz freeipa-ec59e618da26b3514c9e174b7a7e8aa3e0deb462.zip |
use entity select widget for permissions
https://fedorahosted.org/freeipa/ticket/879
Diffstat (limited to 'install')
-rw-r--r-- | install/ui/aci.js | 154 | ||||
-rw-r--r-- | install/ui/test/aci_tests.js | 2 | ||||
-rw-r--r-- | install/ui/widget.js | 91 |
3 files changed, 97 insertions, 150 deletions
diff --git a/install/ui/aci.js b/install/ui/aci.js index caa1435c9..67c2d5f87 100644 --- a/install/ui/aci.js +++ b/install/ui/aci.js @@ -165,56 +165,7 @@ IPA.attribute_table_widget = function(spec) { return that; }; -IPA.targetgroup_widget = function(spec) { - spec = spec || {}; - - var that = IPA.select_widget(spec); - - that.filter = spec.filter || ''; - - that.create = function(container) { - that.select = $('<select/>', { - name: that.name, - id: 'aci_target_group_select' - }).appendTo(container); - }; - - that.load = function(record) { - - that.empty(); - - that.select.append($('<option/>', { - text: '', - value: '' - })); - - var command = IPA.command({ - method: 'group_find', - args: [that.filter], - options: {} - }); - - command.on_success = function(data, text_status, xhr) { - - var groups = data.result.result; - - for (var i=0; i<data.result.count; i++) { - var option = groups[i].cn[0]; - that.select.append($('<option/>', { - text: groups[i].cn[0], - value: groups[i].cn[0] - })); - } - - that.select_load(record); - }; - - command.execute(); - }; - - return that; -}; IPA.type_widget = function(spec) { @@ -234,96 +185,7 @@ IPA.type_widget = function(spec) { return that; }; -IPA.entity_select_widget = function(spec){ - - var that = IPA.widget(spec); - var entity = spec.entity || 'group'; - - function populate_select(value){ - function find_success(result){ - $('option', that.entity_select).remove(); - var entities = result.result.result; - for (var i =0; i < result.result.count; i +=1){ - var option = - $('<option/>',{ - text:entities[i].cn[0], - value:entities[i].cn[0] - }). - appendTo(that.entity_select); - if (value === entities[i].cn[0]){ - option.attr('selected','selected'); - } - } - } - function find_error(err){ - } - IPA.command({ - method: entity+'_find', - args:[that.entity_filter.val()], - options:{}, - on_success:find_success, - on_error:find_error - }).execute(); - } - - that.create = function(container){ - var dd = $('<dd/>').appendTo(container); - - that.entity_select = $('<select/>', { - id: that.name + '-entity-select', - change: function(){ - - } - }).appendTo(dd); - - - that.entity_filter = $('<input/>',{ - size:10, - type: 'text', - id: 'entity_filter', - style: 'display: none;', - keypress: function(){ - populate_select(); - } - }).appendTo(dd); - - $('<a />',{ - href:"", - text: 'add ' +entity + ' filter: ', - click:function(){ - that.entity_filter.css('display','inline'); - $(this).css('display','none'); - return false; - } - }).appendTo(dd); - populate_select(); - }; - that.reset = function(){ - that.entity_filter.val(that.values[0]); - populate_select(that.values[0]); - - }; - - that.is_dirty = function(){ - return (that.save()[0] !== that.values[0]); - }; - - that.load = function(record){ - var value = record[that.name]; - if (value instanceof Array) { - that.values = value; - } else { - that.values = value ? [value] : ['']; - } - that.reset(); - }; - - that.save = function(){ - return [$('option:selected', that.entity_select).val()]; - }; - return that; -}; IPA.rights_widget = function(spec){ var rights = ['write','add','delete']; @@ -528,6 +390,8 @@ IPA.target_section = function () { } function display_group_target(dl){ + + $('<dt/>' ). append($('<input />', { type: 'radio', @@ -539,24 +403,16 @@ IPA.target_section = function () { })). appendTo(dl); - that.group_filter = $('<input/>',{ - type: 'text', - id: 'group_filter' }); var span = $('<span/>', { name: 'targetgroup' }).appendTo(dl); - $('<dd/>', { + var dd = $('<dd/>', { 'class': 'aci_by_group first' }). - append(that.group_filter). - append($('<label>Group Filter</label>')). appendTo(span); - var dd = $('<dd/>', { - 'class': 'aci_by_group other' - }).appendTo(span); that.group_select.create(dd); } @@ -619,7 +475,6 @@ IPA.target_section = function () { that.load = function(record) { set_aci_type(record); - that.group_select.filter = that.group_filter.val(); that.attribute_table.object_type = record.type; that.section_load(record); @@ -637,7 +492,8 @@ IPA.target_section = function () { that.add_field(IPA.text_widget({name: 'filter'})); that.add_field(IPA.textarea_widget({name: 'subtree'})); - that.group_select = IPA.targetgroup_widget({name: 'targetgroup'}); + that.group_select = IPA.entity_select_widget( + {name: 'targetgroup', entity:'group'}); that.add_field(that.group_select); that.type_select = IPA.type_widget({name: 'type'}); diff --git a/install/ui/test/aci_tests.js b/install/ui/test/aci_tests.js index 58864f4b4..1d9665990 100644 --- a/install/ui/test/aci_tests.js +++ b/install/ui/test/aci_tests.js @@ -50,7 +50,7 @@ test("Testing aci grouptarget.", function() { var sample_data_filter_only = {"targetgroup":"ipausers"}; target_section.load(sample_data_filter_only); ok($('#aci_by_group')[0].checked, 'aci_by_group control selected'); - ok ($('#aci_target_group_select option').length > 2,'group select populated'); + ok ($('#targetgroup-entity-select option').length > 2,'group select populated'); }); diff --git a/install/ui/widget.js b/install/ui/widget.js index 4a77dda83..b5c02ee33 100644 --- a/install/ui/widget.js +++ b/install/ui/widget.js @@ -1,6 +1,7 @@ /*jsl:import ipa.js */ /* Authors: * Endi Sukma Dewata <edewata@redhat.com> + * Adam Young <ayoung@redhat.com> * * Copyright (C) 2010 Red Hat * see file 'COPYING' for use and warranty information @@ -1061,3 +1062,93 @@ IPA.table_widget = function (spec) { return that; }; +IPA.entity_select_widget = function(spec){ + + var that = IPA.widget(spec); + var entity = spec.entity || 'group'; + + function populate_select(value){ + function find_success(result){ + $('option', that.entity_select).remove(); + var entities = result.result.result; + for (var i =0; i < result.result.count; i +=1){ + var option = + $('<option/>',{ + text:entities[i].cn[0], + value:entities[i].cn[0] + }). + appendTo(that.entity_select); + if (value === entities[i].cn[0]){ + option.attr('selected','selected'); + } + } + } + function find_error(err){ + } + IPA.command({ + method: entity+'_find', + args:[that.entity_filter.val()], + options:{}, + on_success:find_success, + on_error:find_error + }).execute(); + } + + that.create = function(container){ + var dd = $('<dd/>').appendTo(container); + + that.entity_select = $('<select/>', { + id: that.name + '-entity-select', + change: function(){ + + } + }).appendTo(dd); + + + that.entity_filter = $('<input/>',{ + size:10, + type: 'text', + id: 'entity_filter', + style: 'display: none;', + keypress: function(){ + populate_select(); + } + }).appendTo(dd); + + $('<a />',{ + href:"", + text: 'add ' +entity + ' filter: ', + click:function(){ + that.entity_filter.css('display','inline'); + $(this).css('display','none'); + return false; + } + }).appendTo(dd); + populate_select(); + }; + that.reset = function(){ + that.entity_filter.val(that.values[0]); + populate_select(that.values[0]); + + }; + + that.is_dirty = function(){ + return (that.save()[0] !== that.values[0]); + }; + + that.load = function(record){ + var value = record[that.name]; + if (value instanceof Array) { + that.values = value; + } else { + that.values = value ? [value] : ['']; + } + that.reset(); + }; + + that.save = function(){ + return [$('option:selected', that.entity_select).val()]; + }; + + return that; +};
\ No newline at end of file |