summaryrefslogtreecommitdiffstats
path: root/install/ui/src/freeipa
diff options
context:
space:
mode:
authorPavel Vomacka <pvomacka@redhat.com>2016-04-10 23:46:15 +0200
committerPetr Vobornik <pvoborni@redhat.com>2016-06-02 18:42:06 +0200
commit5f7433839fa9772d19d81832941158244a54dc53 (patch)
treecee02e830b2b9d6bd112bf9bf2b7250d24bb6b2e /install/ui/src/freeipa
parent3b37e29ac6e918027b06e574c2c793f6c521100c (diff)
downloadfreeipa-5f7433839fa9772d19d81832941158244a54dc53.tar.gz
freeipa-5f7433839fa9772d19d81832941158244a54dc53.tar.xz
freeipa-5f7433839fa9772d19d81832941158244a54dc53.zip
Update the delete dialog on details user page
Add option to preserve user to the delete dialog on active user's details page. The delete dialog is the same as on the page of all active users. https://fedorahosted.org/freeipa/ticket/5370 Reviewed-By: Petr Vobornik <pvoborni@redhat.com>
Diffstat (limited to 'install/ui/src/freeipa')
-rw-r--r--install/ui/src/freeipa/user.js125
1 files changed, 102 insertions, 23 deletions
diff --git a/install/ui/src/freeipa/user.js b/install/ui/src/freeipa/user.js
index a9727f57d..22dfb6fcf 100644
--- a/install/ui/src/freeipa/user.js
+++ b/install/ui/src/freeipa/user.js
@@ -61,7 +61,13 @@ return {
name: 'user',
policies: [
IPA.search_facet_update_policy,
- IPA.details_facet_update_policy
+ IPA.details_facet_update_policy,
+ {
+ $factory: IPA.facet_update_policy,
+ source_facet: 'details',
+ dest_entity: 'user',
+ dest_facet: 'search_preserved'
+ }
],
facets: [
{
@@ -329,7 +335,14 @@ return {
$type: 'enable',
hide_cond: ['preserved-user']
},
- 'delete',
+ {
+ $type: 'delete_active_user',
+ hide_cond: ['preserved-user']
+ },
+ {
+ $type: 'delete',
+ show_cond: ['preserved-user']
+ },
{
$type: 'reset_password',
hide_cond: ['preserved-user']
@@ -355,8 +368,9 @@ return {
}
],
header_actions: [
- 'reset_password', 'enable', 'disable', 'delete',
- 'unlock', 'add_otptoken', 'automember_rebuild', 'request_cert'
+ 'reset_password', 'enable', 'disable','delete_active_user',
+ 'delete', 'unlock', 'add_otptoken', 'automember_rebuild',
+ 'request_cert'
],
state: {
evaluators: [
@@ -711,6 +725,46 @@ IPA.user.reset_password_action = function(spec) {
};
+IPA.user.delete_active_user_action = function(spec) {
+ spec = spec || {};
+ spec.name = spec.name || 'delete_active_user';
+ spec.label = spec.label || '@i18n:buttons.remove';
+
+ var that = IPA.action(spec);
+
+ that.execute_action = function(facet) {
+
+ var pkey = facet.get_pkey();
+ var msg = text.get('@i18n:actions.delete_confirm');
+ msg = msg.replace('${object}', pkey);
+
+ var spec = {
+ message: msg,
+ on_ok: function() {
+ rpc.command({
+ entity: facet.entity.name,
+ method: 'del',
+ args: [pkey],
+ options: {
+ preserve: dialog.option_radio.get_value()[0]
+ },
+ on_success: function(data) {
+ IPA.notify_success(data.result.summary);
+ facet.on_update.notify();
+ facet.redirect();
+ }
+ }).execute();
+ }
+ };
+
+ var dialog = IPA.user.details_delete_dialog(spec);
+
+ dialog.open();
+ };
+
+ return that;
+};
+
IPA.user.add_otptoken_action = function(spec) {
spec = spec || {};
@@ -864,11 +918,36 @@ IPA.user.stageuser_sidebar_policy = function(spec) {
return that;
};
-IPA.user.deleter_dialog = function(spec) {
+IPA.user.create_active_user_del_dialog = function(dialog) {
+ dialog.deleter_dialog_create_content();
+
+ dialog.option_layout = IPA.fluid_layout({
+ label_cls: 'col-sm-3',
+ widget_cls: 'col-sm-9'
+ });
+
+ dialog.option_radio = IPA.radio_widget({
+ name: 'preserve',
+ label: '@i18n:objects.user.delete_mode',
+ options: [
+ { label: '@i18n:objects.user.mode_delete', value: 'false' },
+ { label: '@i18n:objects.user.mode_preserve', value: 'true' }
+ ],
+ default_value: 'false'
+ });
+
+ var html = dialog.option_layout.create([dialog.option_radio]);
+ dialog.container.append(html);
+ dialog.option_radio.set_value(['']);
+
+ return dialog;
+};
+
+IPA.user.details_delete_dialog = function(spec) {
spec = spec || {};
- var that = IPA.search_deleter_dialog(spec);
+ var that = IPA.deleter_dialog(spec);
/**
* Adds options to user-del command
@@ -877,27 +956,26 @@ IPA.user.deleter_dialog = function(spec) {
that.option_radio = null;
that.create_content = function() {
+ that = IPA.user.create_active_user_del_dialog(that);
+ };
- that.deleter_dialog_create_content();
+ return that;
+};
- that.option_layout = IPA.fluid_layout({
- label_cls: 'col-sm-3',
- widget_cls: 'col-sm-9'
- });
+IPA.user.deleter_dialog = function(spec) {
- that.option_radio = IPA.radio_widget({
- name: 'preserve',
- label: '@i18n:objects.user.delete_mode',
- options: [
- { label: '@i18n:objects.user.mode_delete', value: 'false' },
- { label: '@i18n:objects.user.mode_preserve', value: 'true' }
- ],
- default_value: 'false'
- });
+ spec = spec || {};
- var html = that.option_layout.create([that.option_radio]);
- that.container.append(html);
- that.option_radio.set_value(['']);
+ var that = IPA.search_deleter_dialog(spec);
+
+ /**
+ * Adds options to user-del command
+ * @type {IPA.radio_widget}
+ */
+ that.option_radio = null;
+
+ that.create_content = function() {
+ that = IPA.user.create_active_user_del_dialog(that);
};
that.create_command = function() {
@@ -923,6 +1001,7 @@ exp.register = function() {
e.register({type: 'user', spec: exp.entity_spec});
a.register('reset_password', IPA.user.reset_password_action);
a.register('add_otptoken', IPA.user.add_otptoken_action);
+ a.register('delete_active_user', IPA.user.delete_active_user_action);
d.copy('password', 'user_password', {
factory: IPA.user.password_dialog,
pre_ops: [IPA.user.password_dialog_pre_op]