From 44e86aa3bb7206991bbe1118ee3a35b6949b6ac9 Mon Sep 17 00:00:00 2001 From: Petr Vobornik Date: Mon, 30 Jul 2012 13:31:11 +0200 Subject: Add external group Group can be normal, posix and external. Posix checkbox was removed and was replaced by radio for selecting group type. This adds possibility of adding of external group. https://fedorahosted.org/freeipa/ticket/2895 --- install/ui/group.js | 70 ++++++++++++++++++++++++-------------- install/ui/test/data/ipa_init.json | 5 ++- 2 files changed, 48 insertions(+), 27 deletions(-) (limited to 'install') diff --git a/install/ui/group.js b/install/ui/group.js index 5ad9ba1f1..ad26676ab 100644 --- a/install/ui/group.js +++ b/install/ui/group.js @@ -111,10 +111,25 @@ IPA.group.entity = function(spec) { name: 'description' }, { - type: 'nonposix_checkbox', - name: 'nonposix', - label: IPA.messages.objects.group.posix, - checked: true + type: 'radio', + name: 'type', + label: IPA.messages.objects.group.type, + flags: ['no_command'], + default_value: 'normal', + options: [ + { + value: 'normal', + label: IPA.messages.objects.group.normal + }, + { + value: 'external', + label: IPA.messages.objects.group.external + }, + { + value: 'posix', + label: IPA.messages.objects.group.posix + } + ] }, 'gidnumber' ] @@ -124,43 +139,46 @@ IPA.group.entity = function(spec) { return that; }; -IPA.group_nonposix_checkbox_widget = function (spec) { +IPA.group_adder_dialog = function(spec) { spec = spec || {}; - var that = IPA.checkbox_widget(spec); + var that = IPA.entity_adder_dialog(spec); + + var init = function() { - that.save = function() { - var value = that.checkbox_save()[0]; - // convert posix into non-posix - return [!value]; + var type_field = that.fields.get_field('type'); + type_field.widget.value_changed.attach(that.on_type_change); }; - return that; -}; + that.on_type_change = function(value) { -IPA.widget_factories['nonposix_checkbox'] = IPA.group_nonposix_checkbox_widget; -IPA.field_factories['nonposix_checkbox'] = IPA.checkbox_field; + var gid_field = that.fields.get_field('gidnumber'); + var external_field = that.fields.get_field('external'); -IPA.group_adder_dialog = function(spec) { + var posix = value[0] === 'posix'; - spec = spec || {}; + if (!posix) { + gid_field.reset(); + } - var that = IPA.entity_adder_dialog(spec); + gid_field.set_enabled(posix); + }; - var init = function() { + that.create_add_command = function(record) { - var posix_field = that.fields.get_field('nonposix'); - posix_field.widget.value_changed.attach(that.on_posix_change); - }; + var command = that.entity_adder_dialog_create_add_command(record); - that.on_posix_change = function (value) { + var type_field = that.fields.get_field('type'); + var type = type_field.save()[0]; - var gid_field = that.fields.get_field('gidnumber'); - if (value[0]) { - gid_field.reset(); + if (type === 'normal') { + command.set_option('nonposix', true); + } else if (type === 'external') { + command.set_option('external', true); } - gid_field.set_enabled(!value[0]); + + return command; }; init(); diff --git a/install/ui/test/data/ipa_init.json b/install/ui/test/data/ipa_init.json index 4325a5552..9854c4a0f 100644 --- a/install/ui/test/data/ipa_init.json +++ b/install/ui/test/data/ipa_init.json @@ -268,7 +268,10 @@ }, "group": { "details": "Group Settings", - "posix": "POSIX group" + "external": "External", + "normal": "Normal", + "posix": "POSIX", + "type": "Group Type" }, "hbacrule": { "any_host": "Any Host", -- cgit