summaryrefslogtreecommitdiffstats
path: root/install/ui/rule.js
diff options
context:
space:
mode:
Diffstat (limited to 'install/ui/rule.js')
-rw-r--r--install/ui/rule.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/install/ui/rule.js b/install/ui/rule.js
index d36cd3d3..3b1308bc 100644
--- a/install/ui/rule.js
+++ b/install/ui/rule.js
@@ -105,6 +105,29 @@ IPA.rule_association_table_widget = function(spec) {
that.enabled = spec.enabled !== undefined ? spec.enabled : true;
+ that.setup_column = function(column, div, record) {
+ var suppress_link = false;
+ if (that.external) {
+ suppress_link = record[that.external] === 'true';
+ }
+ column.setup(div, record, suppress_link);
+ };
+
+ that.create_columns = function() {
+
+ if (!that.columns.length) {
+ that.association_table_widget_create_columns();
+ if (that.external) {
+ that.create_column({
+ name: that.external,
+ label: IPA.messages.objects.sudorule.external,
+ entity_name: that.other_entity,
+ format: IPA.boolean_format
+ });
+ }
+ }
+ };
+
that.create_add_dialog = function() {
var entity_label = that.entity.metadata.label_singular;
@@ -138,12 +161,30 @@ IPA.rule_association_table_field = function(spec) {
that.external = spec.external;
+ that.set_values_external = function(values, external) {
+
+ for (var i=0; i<values.length; i++) {
+
+ var record = values[i];
+
+ if (typeof record !== 'object') {
+ record = {};
+ record[that.name] = values[i];
+ }
+
+ record[that.external] = external;
+
+ values[i] = record;
+ }
+ };
that.load = function(result) {
that.values = result[that.name] || [];
if (that.external) {
+ that.set_values_external(that.values, '');
var external_values = result[that.external] || [];
+ that.set_values_external(external_values, 'true');
$.merge(that.values, external_values);
}