summaryrefslogtreecommitdiffstats
path: root/install/static
diff options
context:
space:
mode:
authorEndi S. Dewata <edewata@redhat.com>2010-12-02 22:12:59 -0600
committerAdam Young <ayoung@redhat.com>2010-12-06 15:29:02 -0500
commit69e77212ea428f79742b9ff0452ef19d74cc76d4 (patch)
tree7e983cc373e099284743ff274e42cf0ac6ea8c19 /install/static
parent10f3c0825bfdffa6035e78066001eb3bdc759143 (diff)
downloadfreeipa-69e77212ea428f79742b9ff0452ef19d74cc76d4.tar.gz
freeipa-69e77212ea428f79742b9ff0452ef19d74cc76d4.tar.xz
freeipa-69e77212ea428f79742b9ff0452ef19d74cc76d4.zip
HBAC Service Groups adjustments
The association facet for HBAC Service Groups has been removed and replaced with an association table in the details page. The ipa_association_table_widget has been modified to support multiple columns in the table itself and in the adder dialog. The ipa_association_adder_dialog and ipa_association_facet have been refactored. The ipa_sudorule_association_widget and ipa_rule_association_widget has been removed because their functionalities have been merged into ipa_association_table_widget.
Diffstat (limited to 'install/static')
-rw-r--r--install/static/associate.js491
-rw-r--r--install/static/details.js1
-rw-r--r--install/static/entity.js2
-rwxr-xr-xinstall/static/hbac.js11
-rwxr-xr-xinstall/static/hbacsvcgroup.js30
-rw-r--r--install/static/host.js2
-rw-r--r--install/static/ipa.js4
-rwxr-xr-xinstall/static/rule.js167
-rw-r--r--install/static/service.js2
-rwxr-xr-xinstall/static/sudocmdgroup.js2
-rwxr-xr-xinstall/static/sudorule.js60
-rwxr-xr-xinstall/static/widget.js8
12 files changed, 403 insertions, 377 deletions
diff --git a/install/static/associate.js b/install/static/associate.js
index 04fc37598..1a96362f5 100644
--- a/install/static/associate.js
+++ b/install/static/associate.js
@@ -141,12 +141,6 @@ function ipa_association_adder_dialog(spec) {
that.pkey = spec.pkey;
that.other_entity = spec.other_entity;
- that.associator = spec.associator;
- that.method = spec.method || 'add_member';
-
- that.on_success = spec.on_success;
- that.on_error = spec.on_error;
-
that.init = function() {
if (!that.columns.length) {
var pkey_name = IPA.metadata[that.other_entity].primary_key;
@@ -165,7 +159,7 @@ function ipa_association_adder_dialog(spec) {
that.search = function() {
execute_search(that.get_filter());
- }
+ };
function execute_search(filter){
function on_success(data, text_status, xhr) {
@@ -179,22 +173,7 @@ function ipa_association_adder_dialog(spec) {
}
ipa_cmd('find', [filter], {'all': true}, on_success, null, that.other_entity);
- };
-
- that.add = function() {
-
- var associator = that.associator({
- 'entity_name': that.entity_name,
- 'pkey': that.pkey,
- 'other_entity': that.other_entity,
- 'values': that.get_selected_values(),
- 'method': that.method,
- 'on_success': that.on_success,
- 'on_error': that.on_error
- });
-
- associator.execute();
- };
+ }
return that;
}
@@ -246,7 +225,7 @@ function ipa_association_config(spec) {
that.name = spec.name;
that.associator = spec.associator;
that.add_method = spec.add_method;
- that.delete_method = spec.delete_method;
+ that.remove_method = spec.remove_method;
return that;
}
@@ -257,87 +236,98 @@ function ipa_association_table_widget(spec) {
var that = ipa_table_widget(spec);
- that.facet = spec.facet;
that.other_entity = spec.other_entity;
- that.add = spec.add;
- that.remove = spec.remove;
+ that.associator = spec.associator || bulk_associator;
+ that.add_method = spec.add_method || 'add_member';
+ that.remove_method = spec.remove_method || 'remove_member';
- that.create = function(container) {
+ that.adder_columns = [];
+ that.adder_columns_by_name = {};
- if (!that.columns.length) {
- var pkey_name = IPA.metadata[that.other_entity].primary_key;
+ that.get_adder_column = function(name) {
+ return that.adder_columns_by_name[name];
+ };
- var column = that.create_column({
- name: pkey_name,
- label: IPA.metadata[that.other_entity].label,
- primary_key: true
- });
+ that.add_adder_column = function(column) {
+ column.entity_name = that.entity_name;
+ that.adder_columns.push(column);
+ that.adder_columns_by_name[column.name] = column;
+ };
- column.setup = function(container, record) {
- container.empty();
+ that.create_adder_column = function(spec) {
+ var column = ipa_column(spec);
+ that.add_adder_column(column);
+ return column;
+ };
- var value = record[column.name];
- value = value ? value.toString() : '';
+ that.init = function() {
- $('<a/>', {
- 'href': '#'+value,
- 'html': value,
- 'click': function (value) {
- return function() {
- var state = IPA.tab_state(that.other_entity);
- state[that.other_entity + '-facet'] = 'details';
- state[that.other_entity + '-pkey'] = value;
- $.bbq.pushState(state);
- return false;
- }
- }(value)
- }).appendTo(container);
- };
+ var entity = IPA.get_entity(that.entity_name);
+ var association = entity.get_association(that.other_entity);
+
+ if (association) {
+ if (association.associator) {
+ that.associator = association.associator == 'serial' ? serial_associator : bulk_associator;
+ }
+
+ if (association.add_method) that.add_method = association.add_method;
+ if (association.remove_method) that.remove_method = association.remove_method;
+ }
+
+ // create a column if none defined
+ if (!that.columns.length) {
+ that.create_column({
+ 'name': that.name,
+ 'label': IPA.metadata[that.other_entity].label,
+ 'primary_key': true
+ });
}
+ that.table_init();
+ };
+
+ that.create = function(container) {
+
that.table_create(container);
- var action_panel = that.facet.get_action_panel();
- var li = $('.action-controls', action_panel);
+ var buttons = $('span[name=buttons]', container);
- // creating generic buttons for layout
$('<input/>', {
'type': 'button',
'name': 'remove',
- 'value': IPA.messages.button.remove
- }).appendTo(li);
+ 'value': 'Remove '+that.label
+ }).appendTo(buttons);
$('<input/>', {
'type': 'button',
'name': 'add',
- 'value': IPA.messages.button.enroll
- }).appendTo(li);
+ 'value': 'Add '+that.label
+ }).appendTo(buttons);
};
that.setup = function(container) {
that.table_setup(container);
- // replacing generic buttons with ipa_button and setting click handler
- var action_panel = that.facet.get_action_panel();
-
- var button = $('input[name=remove]', action_panel);
+ var button = $('input[name=remove]', container);
button.replaceWith(ipa_button({
'label': button.val(),
'icon': 'ui-icon-trash',
- 'click': function() { that.remove(); }
+ 'click': function() { that.show_remove_dialog(); }
}));
- button = $('input[name=add]', action_panel);
+ button = $('input[name=add]', container);
button.replaceWith(ipa_button({
'label': button.val(),
'icon': 'ui-icon-plus',
- 'click': function() { that.add() }
+ 'click': function() { that.show_add_dialog() }
}));
};
- that.get_records = function(pkeys, on_success, on_error) {
+ that.get_records = function(on_success, on_error) {
+
+ if (!that.values.length) return;
var batch = ipa_batch_command({
'name': that.entity_name+'_'+that.name,
@@ -345,12 +335,12 @@ function ipa_association_table_widget(spec) {
'on_error': on_error
});
- for (var i=0; i<pkeys.length; i++) {
- var pkey = pkeys[i];
+ for (var i=0; i<that.values.length; i++) {
+ var value = that.values[i];
var command = ipa_command({
'method': that.other_entity+'_show',
- 'args': [pkey],
+ 'args': [value],
'options': {
'all': true,
'rights': true
@@ -363,48 +353,150 @@ function ipa_association_table_widget(spec) {
batch.execute();
};
- that.refresh = function() {
+ that.load = function(result) {
+ that.values = result[that.name] || [];
+ that.reset();
+ };
- function on_success(data, text_status, xhr) {
+ that.set_values = function(values) {
- that.tbody.empty();
+ that.empty();
- var pkeys = data.result.result[that.name];
- if (!pkeys) return;
+ if (that.columns.length == 1) { // show pkey only
+ var name = that.columns[0].name;
+ for (var i=0; i<that.values.length; i++) {
+ var record = {};
+ record[name] = that.values[i];
+ that.add_record(record);
+ }
- if (that.columns.length == 1) { // show pkey only
- var name = that.columns[0].name;
- for (var i=0; i<pkeys.length; i++) {
- var record = {};
- record[name] = pkeys[i];
- that.add_record(record);
+ } else { // get and show additional fields
+ that.get_records(
+ function(data, text_status, xhr) {
+ var results = data.result.results;
+ for (var i=0; i<results.length; i++) {
+ var record = results[i].result;
+ that.add_record(record);
+ }
}
+ );
+ }
+ };
- } else { // get and show additional fields
- that.get_records(
- pkeys,
- function(data, text_status, xhr) {
- var results = data.result.results;
- for (var i=0; i<results.length; i++) {
- var record = results[i].result;
- that.add_record(record);
- }
- }
- );
- }
+ that.show_add_dialog = function() {
+
+ var pkey = $.bbq.getState(that.entity_name + '-pkey', true) || '';
+ var label = IPA.metadata[that.other_entity].label;
+ var title = 'Add '+label+' to '+that.entity_name+' '+pkey;
+
+ var dialog = ipa_association_adder_dialog({
+ 'title': title,
+ 'entity_name': that.entity_name,
+ 'pkey': pkey,
+ 'other_entity': that.other_entity
+ });
+
+ if (that.adder_columns.length) {
+ dialog.set_columns(that.adder_columns);
}
- function on_error(xhr, text_status, error_thrown) {
- var summary = $('span[name=summary]', that.tfoot).empty();
- summary.append('<p>Error: '+error_thrown.name+'</p>');
- summary.append('<p>'+error_thrown.title+'</p>');
- summary.append('<p>'+error_thrown.message+'</p>');
+ dialog.add = function() {
+ that.add(
+ dialog.get_selected_values(),
+ function() {
+ that.refresh();
+ dialog.close();
+ },
+ function() {
+ that.refresh();
+ dialog.close();
+ }
+ );
+ };
+
+ dialog.init();
+
+ dialog.open(that.container);
+ };
+
+ that.add = function(values, on_success, on_error) {
+
+ var pkey = $.bbq.getState(that.entity_name + '-pkey', true) || '';
+
+ var command = ipa_command({
+ 'method': that.entity_name+'_'+that.add_method,
+ 'args': [pkey],
+ 'on_success': on_success,
+ 'on_error': on_error
+ });
+ command.set_option(that.other_entity, values.join(','));
+
+ command.execute();
+ };
+
+ that.show_remove_dialog = function() {
+
+ var selected_values = that.get_selected_values();
+
+ if (!selected_values.length) {
+ alert('Select '+that.label+' to be removed.');
+ return;
}
var pkey = $.bbq.getState(that.entity_name + '-pkey', true) || '';
- ipa_cmd('show', [pkey], {'rights': true}, on_success, on_error, that.entity_name);
+ var label = IPA.metadata[that.other_entity].label;
+ var title = 'Remove '+label+' from '+that.entity_name+' '+pkey;
+
+ var dialog = ipa_association_deleter_dialog({
+ 'title': title,
+ 'entity_name': that.entity_name,
+ 'pkey': pkey,
+ 'other_entity': that.other_entity,
+ 'values': selected_values
+ });
+
+ dialog.remove = function() {
+ that.remove(
+ selected_values,
+ function() {
+ that.refresh();
+ dialog.close();
+ },
+ function() {
+ that.refresh();
+ dialog.close();
+ }
+ );
+ };
+
+ dialog.init();
+
+ dialog.open(that.container);
};
+ that.remove = function(values, on_success, on_error) {
+
+ var pkey = $.bbq.getState(that.entity_name + '-pkey', true) || '';
+
+ var command = ipa_command({
+ 'method': that.entity_name+'_'+that.remove_method,
+ 'args': [pkey],
+ 'on_success': on_success,
+ 'on_error': on_error
+ });
+
+ command.set_option(that.other_entity, values.join(','));
+
+ command.execute();
+ };
+
+ that.save = function() {
+ return null;
+ };
+
+ // methods that should be invoked by subclasses
+ that.association_table_widget_init = that.init;
+
return that;
}
@@ -418,7 +510,7 @@ function ipa_association_facet(spec) {
that.associator = spec.associator || bulk_associator;
that.add_method = spec.add_method || 'add_member';
- that.delete_method = spec.delete_method || 'remove_member';
+ that.remove_method = spec.remove_method || 'remove_member';
that.columns = [];
that.columns_by_name = {};
@@ -458,11 +550,6 @@ function ipa_association_facet(spec) {
return column;
};
- that.is_dirty = function() {
- var pkey = $.bbq.getState(that.entity_name + '-pkey', true) || '';
- return pkey != that.pkey || other_entity != that.other_entity;
- };
-
that.init = function() {
var entity = IPA.get_entity(that.entity_name);
@@ -474,30 +561,61 @@ function ipa_association_facet(spec) {
}
if (association.add_method) that.add_method = association.add_method;
- if (association.delete_method) that.delete_method = association.delete_method;
+ if (association.remove_method) that.remove_method = association.remove_method;
}
var label = IPA.metadata[that.other_entity] ? IPA.metadata[that.other_entity].label : that.other_entity;
+ var pkey_name = IPA.metadata[that.other_entity].primary_key;
- that.table = ipa_association_table_widget({
+ that.table = ipa_table_widget({
'id': that.entity_name+'-'+that.other_entity,
- 'name': that.name,
+ 'name': pkey_name,
'label': label,
'entity_name': that.entity_name,
- 'other_entity': that.other_entity,
- 'facet': that
+ 'other_entity': that.other_entity
});
if (that.columns.length) {
that.table.set_columns(that.columns);
- }
- that.table.add = function() { that.add(); };
- that.table.remove = function() { that.remove() };
+ } else {
+
+ var column = that.table.create_column({
+ name: that.table.name,
+ label: IPA.metadata[that.other_entity].label,
+ primary_key: true
+ });
+
+ column.setup = function(container, record) {
+ container.empty();
+
+ var value = record[column.name];
+ value = value ? value.toString() : '';
+
+ $('<a/>', {
+ 'href': '#'+value,
+ 'html': value,
+ 'click': function (value) {
+ return function() {
+ var state = IPA.tab_state(that.other_entity);
+ state[that.other_entity + '-facet'] = 'details';
+ state[that.other_entity + '-pkey'] = value;
+ $.bbq.pushState(state);
+ return false;
+ }
+ }(value)
+ }).appendTo(container);
+ };
+ }
that.facet_init();
};
+ that.is_dirty = function() {
+ var pkey = $.bbq.getState(that.entity_name + '-pkey', true) || '';
+ return pkey != that.pkey;
+ };
+
that.create = function(container) {
that.pkey = $.bbq.getState(that.entity_name + '-pkey', true) || '';
@@ -514,6 +632,23 @@ function ipa_association_facet(spec) {
var span = $('<span/>', { 'name': 'association' }).appendTo(container);
that.table.create(span);
+
+ var action_panel = that.get_action_panel();
+ var li = $('.action-controls', action_panel);
+
+ // creating generic buttons for layout
+ $('<input/>', {
+ 'type': 'button',
+ 'name': 'remove',
+ 'value': IPA.messages.button.remove
+ }).appendTo(li);
+
+ $('<input/>', {
+ 'type': 'button',
+ 'name': 'add',
+ 'value': IPA.messages.button.enroll
+ }).appendTo(li);
+
};
that.setup = function(container) {
@@ -523,9 +658,26 @@ function ipa_association_facet(spec) {
var span = $('span[name=association]', that.container);
that.table.setup(span);
+
+ // replacing generic buttons with ipa_button and setting click handler
+ var action_panel = that.get_action_panel();
+
+ var button = $('input[name=remove]', action_panel);
+ button.replaceWith(ipa_button({
+ 'label': button.val(),
+ 'icon': 'ui-icon-trash',
+ 'click': function() { that.show_remove_dialog(); }
+ }));
+
+ button = $('input[name=add]', action_panel);
+ button.replaceWith(ipa_button({
+ 'label': button.val(),
+ 'icon': 'ui-icon-plus',
+ 'click': function() { that.show_add_dialog() }
+ }));
};
- that.add = function() {
+ that.show_add_dialog = function() {
var pkey = $.bbq.getState(that.entity_name + '-pkey', true) || '';
var label = IPA.metadata[that.other_entity] ? IPA.metadata[that.other_entity].label : that.other_entity;
@@ -535,29 +687,42 @@ function ipa_association_facet(spec) {
'title': title,
'entity_name': that.entity_name,
'pkey': pkey,
- 'other_entity': that.other_entity,
- 'associator': that.associator,
- 'method': that.add_method,
- 'on_success': function() {
- that.refresh();
- dialog.close();
- },
- 'on_error': function() {
- that.refresh();
- dialog.close();
- }
+ 'other_entity': that.other_entity
});
if (that.adder_columns.length) {
dialog.set_columns(that.adder_columns);
}
+ dialog.add = function() {
+
+ var pkey = $.bbq.getState(that.entity_name + '-pkey', true) || '';
+
+ var associator = that.associator({
+ 'entity_name': that.entity_name,
+ 'pkey': pkey,
+ 'other_entity': that.other_entity,
+ 'values': dialog.get_selected_values(),
+ 'method': that.add_method,
+ 'on_success': function() {
+ that.refresh();
+ dialog.close();
+ },
+ 'on_error': function() {
+ that.refresh();
+ dialog.close();
+ }
+ });
+
+ associator.execute();
+ };
+
dialog.init();
dialog.open(that.container);
};
- that.remove = function() {
+ that.show_remove_dialog = function() {
var label = IPA.metadata[that.other_entity] ? IPA.metadata[that.other_entity].label : that.other_entity;
var values = that.table.get_selected_values();
@@ -577,7 +742,7 @@ function ipa_association_facet(spec) {
'other_entity': that.other_entity,
'values': values,
'associator': that.associator,
- 'method': that.delete_method,
+ 'method': that.remove_method,
'on_success': function() {
that.refresh();
dialog.close();
@@ -593,8 +758,74 @@ function ipa_association_facet(spec) {
dialog.open(that.container);
};
- that.refresh = function(){
- that.table.refresh();
+ that.get_records = function(pkeys, on_success, on_error) {
+
+ if (!pkeys.length) return;
+
+ var batch = ipa_batch_command({
+ 'name': that.entity_name+'_'+that.name,
+ 'on_success': on_success,
+ 'on_error': on_error
+ });
+
+ for (var i=0; i<pkeys.length; i++) {
+ var pkey = pkeys[i];
+
+ var command = ipa_command({
+ 'method': that.other_entity+'_show',
+ 'args': [pkey],
+ 'options': {
+ 'all': true,
+ 'rights': true
+ }
+ });
+
+ batch.add_command(command);
+ }
+
+ batch.execute();
+ };
+
+ that.refresh = function() {
+
+ function on_success(data, text_status, xhr) {
+
+ that.table.empty();
+
+ var pkeys = data.result.result[that.name];
+ if (!pkeys) return;
+
+ if (that.table.columns.length == 1) { // show pkey only
+ var name = that.table.columns[0].name;
+ for (var i=0; i<pkeys.length; i++) {
+ var record = {};
+ record[name] = pkeys[i];
+ that.table.add_record(record);
+ }
+
+ } else { // get and show additional fields
+ that.get_records(
+ pkeys,
+ function(data, text_status, xhr) {
+ var results = data.result.results;
+ for (var i=0; i<results.length; i++) {
+ var record = results[i].result;
+ that.table.add_record(record);
+ }
+ }
+ );
+ }
+ }
+
+ function on_error(xhr, text_status, error_thrown) {
+ var summary = $('span[name=summary]', that.table.tfoot).empty();
+ summary.append('<p>Error: '+error_thrown.name+'</p>');
+ summary.append('<p>'+error_thrown.title+'</p>');
+ summary.append('<p>'+error_thrown.message+'</p>');
+ }
+
+ var pkey = $.bbq.getState(that.entity_name + '-pkey', true) || '';
+ ipa_cmd('show', [pkey], {'rights': true}, on_success, on_error, that.entity_name);
};
that.association_facet_init = that.init;
diff --git a/install/static/details.js b/install/static/details.js
index 5e3cd8d62..f0e24ac08 100644
--- a/install/static/details.js
+++ b/install/static/details.js
@@ -272,6 +272,7 @@ function ipa_details_section(spec){
};
// methods that should be invoked by subclasses
+ that.section_init = that.init;
that.section_create = that.create;
that.section_setup = that.setup;
that.section_load = that.load;
diff --git a/install/static/entity.js b/install/static/entity.js
index 548623e2d..dcb7e6f82 100644
--- a/install/static/entity.js
+++ b/install/static/entity.js
@@ -330,7 +330,7 @@ function ipa_entity_set_association_definition(entity_name, data) {
'name': other_entity,
'associator': config.associator,
'add_method': config.add_method,
- 'delete_method': config.delete_method
+ 'remove_method': config.remove_method
});
}
}
diff --git a/install/static/hbac.js b/install/static/hbac.js
index a85a89a51..f0f2f96d7 100755
--- a/install/static/hbac.js
+++ b/install/static/hbac.js
@@ -553,8 +553,7 @@ function ipa_hbac_details_general_section(spec){
'style': 'width: 100%;'
}).appendTo(container);
- var tr = $('<tr/>', {
- }).appendTo(table);
+ var tr = $('<tr/>').appendTo(table);
var td = $('<td/>', {
'style': 'width: 100px; text-align: right;',
@@ -613,8 +612,7 @@ function ipa_hbac_details_general_section(spec){
'html': 'undo'
}).appendTo(span);
- tr = $('<tr/>', {
- }).appendTo(table);
+ tr = $('<tr/>').appendTo(table);
td = $('<td/>', {
'style': 'text-align: right; vertical-align: top;',
@@ -642,8 +640,7 @@ function ipa_hbac_details_general_section(spec){
'html': 'undo'
}).appendTo(span);
- tr = $('<tr/>', {
- }).appendTo(table);
+ tr = $('<tr/>').appendTo(table);
td = $('<td/>', {
'style': 'text-align: right; vertical-align: top;',
@@ -689,7 +686,7 @@ function ipa_hbac_association_widget(spec) {
spec = spec || {};
- var that = ipa_rule_association_widget(spec);
+ var that = ipa_association_table_widget(spec);
that.category = spec.category;
diff --git a/install/static/hbacsvcgroup.js b/install/static/hbacsvcgroup.js
index 94a79c026..1972e6c56 100755
--- a/install/static/hbacsvcgroup.js
+++ b/install/static/hbacsvcgroup.js
@@ -31,7 +31,7 @@ function ipa_hbacsvcgroup() {
that.create_association({
'name': 'hbacsvc',
'add_method': 'add_member',
- 'delete_method': 'remove_member'
+ 'remove_method': 'remove_member'
});
var dialog = ipa_hbacsvcgroup_add_dialog({
@@ -53,13 +53,6 @@ function ipa_hbacsvcgroup() {
});
that.add_facet(facet);
- facet = ipa_hbacsvcgroup_member_hbacsvc_facet({
- 'name': 'member_hbacsvc',
- 'label': IPA.metadata['hbacsvc'].label+' '+IPA.messages.association.members,
- 'other_entity': 'hbacsvc'
- });
- that.add_facet(facet);
-
that.entity_init();
};
@@ -152,17 +145,30 @@ function ipa_hbacsvcgroup_details_facet(spec) {
section.create_field({ 'name': 'cn', 'label': 'Name' });
section.create_field({ 'name': 'description', 'label': 'Description' });
+ section = ipa_details_section({
+ 'name': 'services',
+ 'label': 'Services'
+ });
+ that.add_section(section);
+
+ var field = ipa_hbacsvcgroup_member_hbacsvc_table_widget({
+ 'name': 'member_hbacsvc',
+ 'label': 'Services',
+ 'other_entity': 'hbacsvc'
+ });
+ section.add_field(field);
+
that.details_facet_init();
};
return that;
}
-function ipa_hbacsvcgroup_member_hbacsvc_facet(spec) {
+function ipa_hbacsvcgroup_member_hbacsvc_table_widget(spec) {
spec = spec || {};
- var that = ipa_association_facet(spec);
+ var that = ipa_association_table_widget(spec);
that.init = function() {
@@ -197,7 +203,7 @@ function ipa_hbacsvcgroup_member_hbacsvc_facet(spec) {
that.create_column({
name: 'description',
label: 'Description',
- width: '150px'
+ width: '350px'
});
that.create_adder_column({
@@ -213,7 +219,7 @@ function ipa_hbacsvcgroup_member_hbacsvc_facet(spec) {
width: '100px'
});
- that.association_facet_init();
+ that.association_table_widget_init();
};
return that;
diff --git a/install/static/host.js b/install/static/host.js
index 4a60bbccd..d9a2dfe03 100644
--- a/install/static/host.js
+++ b/install/static/host.js
@@ -420,7 +420,7 @@ function ipa_host_managedby_host_facet(spec) {
var that = ipa_association_facet(spec);
that.add_method = 'add_managedby';
- that.delete_method = 'remove_managedby';
+ that.remove_method = 'remove_managedby';
that.init = function() {
diff --git a/install/static/ipa.js b/install/static/ipa.js
index 6f44e358c..10993af85 100644
--- a/install/static/ipa.js
+++ b/install/static/ipa.js
@@ -57,8 +57,8 @@ var IPA = ( function () {
that.layouts_dir = 'layouts';
that.get_template = function(path) {
- if (!that.layout) return path;
- return that.layouts_dir+'/'+that.layout+'/'+path;
+ var layout = that.layout || 'default';
+ return that.layouts_dir+'/'+layout+'/'+path;
};
/* initialize the IPA JSON-RPC helper
diff --git a/install/static/rule.js b/install/static/rule.js
index b73fb56a7..ec1eb72ce 100755
--- a/install/static/rule.js
+++ b/install/static/rule.js
@@ -77,170 +77,3 @@ function ipa_rule_details_section(spec){
return that;
}
-
-function ipa_rule_association_widget(spec) {
-
- spec = spec || {};
-
- var that = ipa_table_widget(spec);
-
- that.other_entity = spec.other_entity;
-
- that.add_method = spec.add_method;
- that.remove_method = spec.remove_method;
-
- that.init = function() {
- // create a column if none defined
- if (!that.columns.length) {
- that.create_column({
- 'name': that.name,
- 'label': IPA.metadata[that.other_entity].label,
- 'primary_key': true
- });
- }
-
- that.table_init();
- };
-
- that.create = function(container) {
-
- that.table_create(container);
-
- var buttons = $('span[name=buttons]', container);
-
- $('<input/>', {
- 'type': 'button',
- 'name': 'remove',
- 'value': 'Remove '+that.label
- }).appendTo(buttons);
-
- $('<input/>', {
- 'type': 'button',
- 'name': 'add',
- 'value': 'Add '+that.label
- }).appendTo(buttons);
- };
-
- that.setup = function(container) {
-
- that.table_setup(container);
-
- var button = $('input[name=remove]', that.table);
- button.replaceWith(ipa_button({
- 'label': button.val(),
- 'icon': 'ui-icon-trash',
- 'click': function() { that.show_remove_dialog(); }
- }));
-
- button = $('input[name=add]', that.table);
- button.replaceWith(ipa_button({
- 'label': button.val(),
- 'icon': 'ui-icon-plus',
- 'click': function() { that.show_add_dialog() }
- }));
-
- var entity = IPA.get_entity(that.entity_name);
- var association = entity.get_association(that.other_entity);
-
- if (association && association.associator == 'serial') {
- that.associator = serial_associator;
- } else {
- that.associator = bulk_associator;
- }
- };
-
- that.load = function(result) {
- that.values = result[that.name] || [];
- that.reset();
- };
-
- that.set_values = function(values) {
-
- that.tbody.empty();
- for (var i=0; values && i<values.length; i++) {
- var record = {};
- record[that.name] = values[i];
- that.add_record(record);
- }
- };
-
- that.show_add_dialog = function() {
-
- var pkey = $.bbq.getState(that.entity_name + '-pkey', true) || '';
- var label = IPA.metadata[that.other_entity].label;
- var title = 'Add '+label+' to '+that.entity_name+' '+pkey;
-
- var dialog = ipa_association_adder_dialog({
- 'title': title,
- 'entity_name': that.entity_name,
- 'pkey': pkey,
- 'other_entity': that.other_entity
- });
-
- dialog.add = function() {
- that.add(
- dialog.get_selected_values(),
- function() {
- that.refresh();
- dialog.close();
- },
- function() {
- that.refresh();
- dialog.close();
- }
- );
- };
-
- dialog.init();
-
- dialog.open(that.container);
- };
-
- that.add = function(values, on_success, on_error) {
- };
-
- that.show_remove_dialog = function() {
-
- var selected_values = that.get_selected_values();
-
- if (!selected_values.length) {
- alert('Select '+that.label+' to be removed.');
- return;
- }
-
- var pkey = $.bbq.getState(that.entity_name + '-pkey', true) || '';
- var label = IPA.metadata[that.other_entity].label;
- var title = 'Remove '+label+' from '+that.entity_name+' '+pkey;
-
- var dialog = ipa_association_deleter_dialog({
- 'title': title,
- 'entity_name': that.entity_name,
- 'pkey': pkey,
- 'other_entity': that.other_entity,
- 'values': selected_values
- });
-
- dialog.remove = function() {
- that.remove(
- selected_values,
- function() {
- that.refresh();
- dialog.close();
- },
- function() {
- that.refresh();
- dialog.close();
- }
- );
- };
-
- dialog.init();
-
- dialog.open(that.container);
- };
-
- that.remove = function(values, on_success, on_error) {
- };
-
- return that;
-}
diff --git a/install/static/service.js b/install/static/service.js
index 218e6af7f..3deea19b7 100644
--- a/install/static/service.js
+++ b/install/static/service.js
@@ -31,7 +31,7 @@ function ipa_service() {
that.create_association({
'name': 'host',
'add_method': 'add_host',
- 'delete_method': 'remove_host'
+ 'remove_method': 'remove_host'
});
var dialog = ipa_service_add_dialog({
diff --git a/install/static/sudocmdgroup.js b/install/static/sudocmdgroup.js
index 2d2b32983..01e8007bb 100755
--- a/install/static/sudocmdgroup.js
+++ b/install/static/sudocmdgroup.js
@@ -31,7 +31,7 @@ function ipa_sudocmdgroup() {
that.create_association({
'name': 'sudocmd',
'add_method': 'add_member',
- 'delete_method': 'remove_member'
+ 'remove_method': 'remove_member'
});
var dialog = ipa_sudocmdgroup_add_dialog({
diff --git a/install/static/sudorule.js b/install/static/sudorule.js
index 9e0e4e589..7c290ac19 100755
--- a/install/static/sudorule.js
+++ b/install/static/sudorule.js
@@ -135,12 +135,12 @@ function ipa_sudorule_details_facet(spec) {
});
that.add_section(section);
- section.add_field(ipa_sudorule_association_widget({
+ section.add_field(ipa_association_table_widget({
'id': that.entity_name+'-memberuser_user',
'name': 'memberuser_user', 'label': 'Users',
'other_entity': 'user', 'add_method': 'add_user', 'remove_method': 'remove_user'
}));
- section.add_field(ipa_sudorule_association_widget({
+ section.add_field(ipa_association_table_widget({
'id': that.entity_name+'-memberuser_group',
'name': 'memberuser_group', 'label': 'Groups',
'other_entity': 'group', 'add_method': 'add_user', 'remove_method': 'remove_user'
@@ -157,12 +157,12 @@ function ipa_sudorule_details_facet(spec) {
});
that.add_section(section);
- section.add_field(ipa_sudorule_association_widget({
+ section.add_field(ipa_association_table_widget({
'id': that.entity_name+'-memberhost_host',
'name': 'memberhost_host', 'label': 'Host',
'other_entity': 'host', 'add_method': 'add_host', 'remove_method': 'remove_host'
}));
- section.add_field(ipa_sudorule_association_widget({
+ section.add_field(ipa_association_table_widget({
'id': that.entity_name+'-memberhost_hostgroup',
'name': 'memberhost_hostgroup', 'label': 'Groups',
'other_entity': 'hostgroup', 'add_method': 'add_host', 'remove_method': 'remove_host'
@@ -179,12 +179,12 @@ function ipa_sudorule_details_facet(spec) {
});
that.add_section(section);
- section.add_field(ipa_sudorule_association_widget({
+ section.add_field(ipa_association_table_widget({
'id': that.entity_name+'-memberallowcmd_sudocmd',
'name': 'memberallowcmd_sudocmd', 'label': 'Command',
'other_entity': 'sudocmd', 'add_method': 'add_allow_command', 'remove_method': 'remove_allow_command'
}));
- section.add_field(ipa_sudorule_association_widget({
+ section.add_field(ipa_association_table_widget({
'id': that.entity_name+'-memberallowcmd_sudocmdgroup',
'name': 'memberallowcmd_sudocmdgroup', 'label': 'Groups',
'other_entity': 'sudocmdgroup', 'add_method': 'add_allow_command', 'remove_method': 'remove_allow_command'
@@ -201,12 +201,12 @@ function ipa_sudorule_details_facet(spec) {
});
that.add_section(section);
- section.add_field(ipa_sudorule_association_widget({
+ section.add_field(ipa_association_table_widget({
'id': that.entity_name+'-memberdenycmd_sudocmd',
'name': 'memberdenycmd_sudocmd', 'label': 'Command',
'other_entity': 'sudocmd', 'add_method': 'add_deny_command', 'remove_method': 'remove_deny_command'
}));
- section.add_field(ipa_sudorule_association_widget({
+ section.add_field(ipa_association_table_widget({
'id': that.entity_name+'-memberdenycmd_sudocmdgroup',
'name': 'memberdenycmd_sudocmdgroup', 'label': 'Groups',
'other_entity': 'sudocmdgroup', 'add_method': 'add_deny_command', 'remove_method': 'remove_deny_command'
@@ -217,47 +217,3 @@ function ipa_sudorule_details_facet(spec) {
return that;
}
-
-function ipa_sudorule_association_widget(spec) {
-
- spec = spec || {};
-
- var that = ipa_rule_association_widget(spec);
-
- that.add = function(values, on_success, on_error) {
-
- var pkey = $.bbq.getState(that.entity_name + '-pkey', true) || '';
-
- var command = ipa_command({
- 'method': that.entity_name+'_'+that.add_method,
- 'args': [pkey],
- 'on_success': on_success,
- 'on_error': on_error
- });
- command.set_option(that.other_entity, values.join(','));
-
- command.execute();
- };
-
- that.remove = function(values, on_success, on_error) {
-
- var pkey = $.bbq.getState(that.entity_name + '-pkey', true) || '';
-
- var command = ipa_command({
- 'method': that.entity_name+'_'+that.remove_method,
- 'args': [pkey],
- 'on_success': on_success,
- 'on_error': on_error
- });
-
- command.set_option(that.other_entity, values.join(','));
-
- command.execute();
- };
-
- that.save = function() {
- return null;
- };
-
- return that;
-} \ No newline at end of file
diff --git a/install/static/widget.js b/install/static/widget.js
index 02759992e..97cd70024 100755
--- a/install/static/widget.js
+++ b/install/static/widget.js
@@ -87,7 +87,7 @@ function ipa_widget(spec) {
function clear() {
}
- that.is_dirty = function(container) {
+ that.is_dirty = function() {
if (!that.values) return true;
var values = that.save();
if (values.length != that.values.length) return true;
@@ -100,7 +100,7 @@ function ipa_widget(spec) {
that.set_values = function(values) {
};
- that.reset = function(container) {
+ that.reset = function() {
that.hide_undo();
that.set_values(that.values);
};
@@ -327,7 +327,9 @@ function ipa_radio_widget(spec) {
};
that.set_values = function(values) {
- $('input[name="'+that.name+'"][value="'+values[0]+'"]', that.container).get(0).checked = true;
+ var input = $('input[name="'+that.name+'"][value="'+values[0]+'"]', that.container);
+ if (!input.length) return;
+ input.get(0).checked = true;
};
that.clear = function() {