diff options
Diffstat (limited to 'install/ui')
-rw-r--r-- | install/ui/group.js | 70 | ||||
-rw-r--r-- | install/ui/test/data/ipa_init.json | 5 |
2 files changed, 48 insertions, 27 deletions
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", |