From ec59e618da26b3514c9e174b7a7e8aa3e0deb462 Mon Sep 17 00:00:00 2001 From: Adam Young Date: Tue, 1 Feb 2011 13:06:58 -0500 Subject: use entity select widget for permissions https://fedorahosted.org/freeipa/ticket/879 --- install/ui/aci.js | 154 ++----------------------------------------- install/ui/test/aci_tests.js | 2 +- 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 caa1435c..67c2d5f8 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 = $('', { - id: that.name + '-entity-select', - change: function(){ - - } - }).appendTo(dd); - - - that.entity_filter = $('',{ - size:10, - type: 'text', - id: 'entity_filter', - style: 'display: none;', - keypress: function(){ - populate_select(); - } - }).appendTo(dd); - - $('',{ - 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){ + + $('
' ). append($('', { type: 'radio', @@ -539,24 +403,16 @@ IPA.target_section = function () { })). appendTo(dl); - that.group_filter = $('',{ - type: 'text', - id: 'group_filter' }); var span = $('', { name: 'targetgroup' }).appendTo(dl); - $('
', { + var dd = $('
', { 'class': 'aci_by_group first' }). - append(that.group_filter). - append($('')). appendTo(span); - var 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 58864f4b..1d966599 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 4a77dda8..b5c02ee3 100644 --- a/install/ui/widget.js +++ b/install/ui/widget.js @@ -1,6 +1,7 @@ /*jsl:import ipa.js */ /* Authors: * Endi Sukma Dewata + * Adam Young * * 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 = + $('
').appendTo(container); + + that.entity_select = $('',{ + size:10, + type: 'text', + id: 'entity_filter', + style: 'display: none;', + keypress: function(){ + populate_select(); + } + }).appendTo(dd); + + $('',{ + 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 -- cgit