diff options
author | Pavel Vomacka <pvomacka@redhat.com> | 2016-04-10 23:46:15 +0200 |
---|---|---|
committer | Petr Vobornik <pvoborni@redhat.com> | 2016-06-02 18:42:06 +0200 |
commit | 5f7433839fa9772d19d81832941158244a54dc53 (patch) | |
tree | cee02e830b2b9d6bd112bf9bf2b7250d24bb6b2e /install/ui/src/freeipa | |
parent | 3b37e29ac6e918027b06e574c2c793f6c521100c (diff) | |
download | freeipa-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.js | 125 |
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] |