summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--install/ui/group.js70
-rw-r--r--install/ui/test/data/ipa_init.json5
-rw-r--r--ipalib/plugins/internal.py5
3 files changed, 52 insertions, 28 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",
diff --git a/ipalib/plugins/internal.py b/ipalib/plugins/internal.py
index 08d7a255f..a0b9f75c3 100644
--- a/ipalib/plugins/internal.py
+++ b/ipalib/plugins/internal.py
@@ -405,7 +405,10 @@ class i18n_messages(Command):
},
"group": {
"details": _("Group Settings"),
- "posix": _("POSIX group"),
+ "external": _("External"),
+ "normal": _("Normal"),
+ "posix": _("POSIX"),
+ "type": _("Group Type"),
},
"hbacrule": {
"any_host": _("Any Host"),