summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xinstall/static/sudorule.js74
-rw-r--r--install/static/test/data/sudorule_show.json6
2 files changed, 54 insertions, 26 deletions
diff --git a/install/static/sudorule.js b/install/static/sudorule.js
index 219671b2..bc1ba95b 100755
--- a/install/static/sudorule.js
+++ b/install/static/sudorule.js
@@ -137,7 +137,8 @@ function ipa_sudorule_details_facet(spec) {
section.add_field(ipa_sudorule_association_table_widget({
'id': that.entity_name+'-memberuser_user',
'name': 'memberuser_user', 'label': 'Users', 'category': category,
- 'other_entity': 'user', 'add_method': 'add_user', 'remove_method': 'remove_user'
+ 'other_entity': 'user', 'add_method': 'add_user', 'remove_method': 'remove_user',
+ 'external': 'externaluser'
}));
section.add_field(ipa_sudorule_association_table_widget({
'id': that.entity_name+'-memberuser_group',
@@ -164,7 +165,8 @@ function ipa_sudorule_details_facet(spec) {
section.add_field(ipa_sudorule_association_table_widget({
'id': that.entity_name+'-memberhost_host',
'name': 'memberhost_host', 'label': 'Host', 'category': category,
- 'other_entity': 'host', 'add_method': 'add_host', 'remove_method': 'remove_host'
+ 'other_entity': 'host', 'add_method': 'add_host', 'remove_method': 'remove_host',
+ 'external': 'externalhost'
}));
section.add_field(ipa_sudorule_association_table_widget({
'id': that.entity_name+'-memberhost_hostgroup',
@@ -745,6 +747,8 @@ function ipa_sudorule_association_table_widget(spec) {
var that = ipa_rule_association_table_widget(spec);
+ that.external = spec.external;
+
that.create_add_dialog = function() {
var pkey = $.bbq.getState(that.entity_name + '-pkey', true) || '';
var label = IPA.metadata[that.other_entity].label;
@@ -760,10 +764,20 @@ function ipa_sudorule_association_table_widget(spec) {
'entity_name': that.entity_name,
'pkey': pkey,
'other_entity': that.other_entity,
+ 'external': that.external,
'template': template
});
};
+ that.load = function(result) {
+ that.values = result[that.name] || [];
+ if (that.external) {
+ var external_values = result[that.external] || [];
+ $.merge(that.values, external_values);
+ }
+ that.reset();
+ };
+
return that;
}
@@ -773,6 +787,8 @@ function ipa_sudorule_association_adder_dialog(spec) {
var that = ipa_association_adder_dialog(spec);
+ that.external = spec.external;
+
that.init = function() {
if (!that.columns.length) {
@@ -830,9 +846,11 @@ function ipa_sudorule_association_adder_dialog(spec) {
'class': 'adder-dialog-results'
}).appendTo(that.container);
+ var class_name = that.external ? 'adder-dialog-internal' : 'adder-dialog-available';
+
var available_panel = $('<div/>', {
name: 'available',
- 'class': 'adder-dialog-internal'
+ 'class': class_name
}).appendTo(results_panel);
$('<div/>', {
@@ -873,40 +891,44 @@ function ipa_sudorule_association_adder_dialog(spec) {
that.selected_table.create(selected_panel);
- var external_panel = $('<div/>', {
- name: 'external',
- 'class': 'adder-dialog-external'
- }).appendTo(results_panel);
-
- $('<div/>', {
- html: 'External',
- 'class': 'ui-widget-header'
- }).appendTo(external_panel);
-
- $('<input/>', {
- type: 'text',
- name: 'external',
- style: 'width: 244px'
- }).appendTo(external_panel);
+ if (that.external) {
+ var external_panel = $('<div/>', {
+ name: 'external',
+ 'class': 'adder-dialog-external'
+ }).appendTo(results_panel);
+
+ $('<div/>', {
+ html: 'External',
+ 'class': 'ui-widget-header'
+ }).appendTo(external_panel);
+
+ $('<input/>', {
+ type: 'text',
+ name: 'external',
+ style: 'width: 244px'
+ }).appendTo(external_panel);
+ }
};
that.setup = function() {
that.association_adder_dialog_setup();
- that.external_field = $('input[name=external]', that.container);
+ if (that.external) that.external_field = $('input[name=external]', that.container);
};
that.add = function() {
var rows = that.available_table.remove_selected_rows();
that.selected_table.add_rows(rows);
- var pkey_name = IPA.metadata[that.other_entity].primary_key;
- var value = that.external_field.val();
- if (!value) return;
+ if (that.external) {
+ var pkey_name = IPA.metadata[that.other_entity].primary_key;
+ var value = that.external_field.val();
+ if (!value) return;
- var record = {};
- record[pkey_name] = value;
- that.selected_table.add_record(record);
- that.external_field.val('');
+ var record = {};
+ record[pkey_name] = value;
+ that.selected_table.add_record(record);
+ that.external_field.val('');
+ }
};
return that;
diff --git a/install/static/test/data/sudorule_show.json b/install/static/test/data/sudorule_show.json
index 6f4b4752..5d847325 100644
--- a/install/static/test/data/sudorule_show.json
+++ b/install/static/test/data/sudorule_show.json
@@ -32,6 +32,12 @@
"test"
],
"dn": "ipauniqueid=4fc57a02-f23311df-b268e50e-a3b3ef71,cn=sudorules,dc=dev,dc=example,dc=com",
+ "externalhost": [
+ "external.example.com"
+ ],
+ "externaluser": [
+ "external"
+ ],
"ipasudorunas_user": [
"admin"
],