summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--install/ui/dialog.js4
-rw-r--r--install/ui/entity.js7
-rw-r--r--install/ui/host.js41
-rw-r--r--install/ui/search.js127
4 files changed, 125 insertions, 54 deletions
diff --git a/install/ui/dialog.js b/install/ui/dialog.js
index 9d22da7f1..5245ba92c 100644
--- a/install/ui/dialog.js
+++ b/install/ui/dialog.js
@@ -631,7 +631,7 @@ IPA.deleter_dialog = function (spec) {
};
that.set_values = function(values) {
- that.values = that.values.concat(values);
+ that.values = values;
};
that.create = function() {
@@ -678,5 +678,7 @@ IPA.deleter_dialog = function (spec) {
that.dialog_open(container);
};
+ that.deleter_dialog_create = that.create;
+
return that;
};
diff --git a/install/ui/entity.js b/install/ui/entity.js
index ec0317897..0940c7d17 100644
--- a/install/ui/entity.js
+++ b/install/ui/entity.js
@@ -974,6 +974,13 @@ IPA.entity_builder = function(){
return that.dialog(spec);
};
+ that.deleter_dialog = function(spec) {
+ spec.factory = spec.factory || IPA.search_deleter_dialog;
+ spec.name = spec.name || 'remove';
+
+ return that.dialog(spec);
+ };
+
that.build = function(){
var item = entity;
entity = null;
diff --git a/install/ui/host.js b/install/ui/host.js
index 9994abf31..bbac4edd7 100644
--- a/install/ui/host.js
+++ b/install/ui/host.js
@@ -122,9 +122,50 @@ IPA.entity_factories.host = function () {
}
]
}).
+ deleter_dialog({
+ factory: IPA.host_deleter_dialog
+ }).
build();
};
+IPA.host_deleter_dialog = function(spec) {
+
+ spec = spec || {};
+
+ var that = IPA.search_deleter_dialog(spec);
+
+ that.create = function() {
+
+ that.deleter_dialog_create();
+
+ var metadata = IPA.get_method_option('host_del', 'updatedns');
+
+ that.updatedns = $('<input/>', {
+ type: 'checkbox',
+ name: 'updatedns',
+ title: metadata.doc
+ }).appendTo(that.container);
+
+ that.container.append(' ');
+
+ that.container.append(metadata.doc);
+ };
+
+ that.create_command = function() {
+ var batch = that.search_deleter_dialog_create_command();
+ var updatedns = that.updatedns.is(':checked');
+
+ for (var i=0; i<batch.commands.length; i++) {
+ var command = batch.commands[i];
+ command.set_option('updatedns', updatedns);
+ }
+
+ return batch;
+ };
+
+ return that;
+};
+
IPA.dnszone_select_widget = function(spec) {
spec = spec || {};
diff --git a/install/ui/search.js b/install/ui/search.js
index 1b07908b8..fec394dea 100644
--- a/install/ui/search.js
+++ b/install/ui/search.js
@@ -182,16 +182,13 @@ IPA.search_facet = function(spec) {
dialog.open(that.container);
};
-
that.remove = function() {
that.remove_instances(that.managed_entity);
};
-
that.remove_instances = function(entity) {
var values = that.get_values();
- var label = entity.metadata.label;
var title;
if (!values.length) {
@@ -200,60 +197,21 @@ IPA.search_facet = function(spec) {
return;
}
- title = IPA.messages.dialogs.remove_title;
- title = title.replace('${entity}', label);
-
- var dialog = IPA.deleter_dialog({
- 'title': title,
- 'parent': that.container,
- 'values': values,
- entity_name: entity.name
- });
-
- dialog.execute = function() {
+ var dialog = that.managed_entity.get_dialog('remove');
- var batch = IPA.batch_command({
- 'on_success': function() {
- that.refresh();
- dialog.close();
- },
- 'on_error': function() {
- that.refresh();
- dialog.close();
- }
- });
-
- var pkeys =
- entity.get_primary_key_prefix();
+ if (!dialog) {
+ dialog = IPA.search_deleter_dialog();
+ }
- for (var i=0; i<values.length; i++) {
- var command = IPA.command({
- entity: entity.name,
- method: 'del'
- });
+ dialog.entity_name = entity.name;
+ dialog.entity = entity;
+ dialog.facet = that;
- for (var k=0; k<pkeys.length; k++) {
- command.add_arg(pkeys[k]);
- }
- var value = values[i];
- if (value instanceof Object){
- for (var key in value){
- if (value.hasOwnProperty(key)){
- if (key === 'pkey'){
- command.add_arg(value[key]);
- }else{
- command.set_option(key, value[key]);
- }
- }
- }
- }else{
- command.add_arg(value);
- }
- batch.add_command(command);
- }
+ title = IPA.messages.dialogs.remove_title;
+ var label = entity.metadata.label;
+ dialog.title = title.replace('${entity}', label);
- batch.execute();
- };
+ dialog.set_values(values);
dialog.init();
@@ -339,6 +297,69 @@ IPA.search_facet = function(spec) {
return that;
};
+IPA.search_deleter_dialog = function(spec) {
+
+ spec = spec || {};
+
+ var that = IPA.deleter_dialog(spec);
+
+ that.create_command = function() {
+ var batch = IPA.batch_command();
+
+ var pkeys = that.entity.get_primary_key_prefix();
+
+ for (var i=0; i<that.values.length; i++) {
+ var command = IPA.command({
+ entity: that.entity.name,
+ method: 'del'
+ });
+
+ for (var j=0; j<pkeys.length; j++) {
+ command.add_arg(pkeys[j]);
+ }
+
+ var value = that.values[i];
+ if (value instanceof Object) {
+ for (var key in value) {
+ if (value.hasOwnProperty(key)) {
+ if (key === 'pkey'){
+ command.add_arg(value[key]);
+ } else {
+ command.set_option(key, value[key]);
+ }
+ }
+ }
+ } else {
+ command.add_arg(value);
+ }
+
+ batch.add_command(command);
+ }
+
+ return batch;
+ };
+
+ that.execute = function() {
+
+ var batch = that.create_command();
+
+ batch.on_success = function() {
+ that.facet.refresh();
+ that.close();
+ };
+
+ batch.on_error = function() {
+ that.facet.refresh();
+ that.close();
+ };
+
+ batch.execute();
+ };
+
+ that.search_deleter_dialog_create_command = that.create_command;
+
+ return that;
+};
/*TODO. this has much copied code from above. Refactor the search_facet
To either be nested or not nested. */