From 6b4257a9ec28260d8d14705fba7664101d93f0e9 Mon Sep 17 00:00:00 2001
From: Adam Young <ayo...@redhat.com>
Date: Tue, 1 Feb 2011 13:06:58 -0500
Subject: [PATCH] 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 c38244252fc6ca28770487fca6760758045f33e3..d53be62b5470dccafa1d58deba40b9e2e71f15fa 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 58864f4b472794e625fa28a622670a16b5bfea84..1d9665990b9d43c037c5b93bfb45fb016bc50ab3 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 4a77dda8332ab0e0e3bb6be8d838ed2d85446b72..b5c02ee33314ff175223ab01ed8c5407d57414d2 100644
--- a/install/ui/widget.js
+++ b/install/ui/widget.js
@@ -1,6 +1,7 @@
 /*jsl:import ipa.js */
 /*  Authors:
  *    Endi Sukma Dewata <edew...@redhat.com>
+ *    Adam Young <ayo...@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
-- 
1.7.3.5

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

Reply via email to