summaryrefslogtreecommitdiffstats
path: root/install
diff options
context:
space:
mode:
authorPetr Vobornik <pvoborni@redhat.com>2012-07-30 14:30:31 +0200
committerMartin Kosek <mkosek@redhat.com>2012-08-14 08:09:31 +0200
commit271043ccf7dc16dd2c2f5d3dc99199a55ebe65b2 (patch)
treef4e4f0d0a5de052eaa219268cc66f5352b7c92cb /install
parent44e86aa3bb7206991bbe1118ee3a35b6949b6ac9 (diff)
downloadfreeipa-271043ccf7dc16dd2c2f5d3dc99199a55ebe65b2.tar.gz
freeipa-271043ccf7dc16dd2c2f5d3dc99199a55ebe65b2.tar.xz
freeipa-271043ccf7dc16dd2c2f5d3dc99199a55ebe65b2.zip
Make group external
New action for creating plain group external. Posix group can't be made external. https://fedorahosted.org/freeipa/ticket/2895
Diffstat (limited to 'install')
-rw-r--r--install/ui/details.js29
-rw-r--r--install/ui/group.js29
-rw-r--r--install/ui/test/data/group_show.json8
-rw-r--r--install/ui/test/data/ipa_init.json1
4 files changed, 66 insertions, 1 deletions
diff --git a/install/ui/details.js b/install/ui/details.js
index e652fa3e5..0530592d7 100644
--- a/install/ui/details.js
+++ b/install/ui/details.js
@@ -1068,6 +1068,33 @@ IPA.value_state_evaluator = function(spec) {
return that;
};
+IPA.object_class_evaluator = function(spec) {
+
+ spec.name = spec.name || 'object_class_evaluator';
+ spec.event = spec.event || 'post_load';
+
+ var that = IPA.state_evaluator(spec);
+
+
+ that.on_event = function(data) {
+
+ var old_state, classes, i;
+
+ old_state = that.state;
+ classes = data.result.result.objectclass;
+
+ that.state = [];
+
+ for (i=0; i<classes.length; i++) {
+ that.state.push('oc_'+classes[i]);
+ }
+
+ that.notify_on_change(old_state);
+ };
+
+ return that;
+};
+
IPA.object_action = function(spec) {
spec = spec || {};
@@ -1076,6 +1103,7 @@ IPA.object_action = function(spec) {
that.method = spec.method;
that.confirm_msg = spec.confirm_msg || IPA.messages.actions.confirm;
+ that.options = spec.options || {};
that.execute_action = function(facet, on_success, on_error) {
@@ -1088,6 +1116,7 @@ IPA.object_action = function(spec) {
entity: entity_name,
method: that.method,
args: [pkey],
+ options: that.options,
on_success: that.get_on_success(facet, on_success),
on_error: that.get_on_error(facet, on_error)
}).execute();
diff --git a/install/ui/group.js b/install/ui/group.js
index ad26676ab..f8d8e666f 100644
--- a/install/ui/group.js
+++ b/install/ui/group.js
@@ -53,7 +53,18 @@ IPA.group.entity = function(spec) {
'gidnumber'
]
}
- ]
+ ],
+ actions: [
+ IPA.select_action,
+ IPA.group.make_external_action,
+ IPA.delete_action
+ ],
+ header_actions: ['select_action', 'make_external', 'delete'],
+ state: {
+ evaluators: [
+ IPA.object_class_evaluator
+ ]
+ }
}).
association_facet({
name: 'member_user',
@@ -186,4 +197,20 @@ IPA.group_adder_dialog = function(spec) {
return that;
};
+IPA.group.make_external_action = function(spec) {
+
+ spec = spec || {};
+ spec.name = spec.name || 'make_external';
+ spec.method = spec.method || 'mod';
+ spec.label = spec.label || IPA.messages.objects.group.make_external;
+ spec.disable_cond = spec.disable_cond || ['oc_posixgroup','oc_ipaexternalgroup'];
+ spec.options = spec.options || {
+ external: true
+ };
+
+ var that = IPA.object_action(spec);
+
+ return that;
+};
+
IPA.register('group', IPA.group.entity);
diff --git a/install/ui/test/data/group_show.json b/install/ui/test/data/group_show.json
index 4ac6e0c06..136f8f0e7 100644
--- a/install/ui/test/data/group_show.json
+++ b/install/ui/test/data/group_show.json
@@ -264,6 +264,14 @@
],
"memberof_group": [
"editors"
+ ],
+ "objectclass": [
+ "top",
+ "groupofnames",
+ "nestedgroup",
+ "ipausergroup",
+ "ipaobject",
+ "posixgroup"
]
},
"summary": null,
diff --git a/install/ui/test/data/ipa_init.json b/install/ui/test/data/ipa_init.json
index 9854c4a0f..e0c22bf2d 100644
--- a/install/ui/test/data/ipa_init.json
+++ b/install/ui/test/data/ipa_init.json
@@ -269,6 +269,7 @@
"group": {
"details": "Group Settings",
"external": "External",
+ "make_external": "Change to external group",
"normal": "Normal",
"posix": "POSIX",
"type": "Group Type"