From 5f3e9131ed87445e274f502d5748032c22115116 Mon Sep 17 00:00:00 2001 From: Neil Lalonde Date: Thu, 25 Jul 2013 16:51:24 -0400 Subject: [PATCH] Deleting a user from admin user page has the option to also block signups from the same email address --- .../javascripts/admin/models/admin_user.js | 58 +++++++++++++------ .../stylesheets/application/modal.css.scss | 19 ++++++ app/controllers/admin/users_controller.rb | 2 +- config/locales/client.en.yml | 2 + 4 files changed, 63 insertions(+), 18 deletions(-) diff --git a/app/assets/javascripts/admin/models/admin_user.js b/app/assets/javascripts/admin/models/admin_user.js index bd1bcfd6edd..08be6134bf6 100644 --- a/app/assets/javascripts/admin/models/admin_user.js +++ b/app/assets/javascripts/admin/models/admin_user.js @@ -215,25 +215,49 @@ Discourse.AdminUser = Discourse.User.extend({ destroy: function() { var user = this; - bootbox.confirm(I18n.t("admin.user.delete_confirm"), I18n.t("no_value"), I18n.t("yes_value"), function(result) { - if(result) { - Discourse.ajax("/admin/users/" + user.get('id') + '.json', { type: 'DELETE' }).then(function(data) { - if (data.deleted) { - bootbox.alert(I18n.t("admin.user.deleted"), function() { - document.location = "/admin/users/list/active"; - }); - } else { - bootbox.alert(I18n.t("admin.user.delete_failed")); - if (data.user) { - user.mergeAttributes(data.user); - } - } - }, function(jqXHR, status, error) { - Discourse.AdminUser.find( user.get('username') ).then(function(u){ user.mergeAttributes(u); }); + + var performDestroy = function(block) { + Discourse.ajax("/admin/users/" + user.get('id') + '.json', { + type: 'DELETE', + data: block ? {block_email: true} : {} + }).then(function(data) { + if (data.deleted) { + bootbox.alert(I18n.t("admin.user.deleted"), function() { + document.location = "/admin/users/list/active"; + }); + } else { bootbox.alert(I18n.t("admin.user.delete_failed")); - }); + if (data.user) { + user.mergeAttributes(data.user); + } + } + }, function(jqXHR, status, error) { + Discourse.AdminUser.find( user.get('username') ).then(function(u){ user.mergeAttributes(u); }); + bootbox.alert(I18n.t("admin.user.delete_failed")); + }); + }; + + var message = I18n.t("admin.user.delete_confirm"); + + var buttons = [{ + "label": I18n.t("composer.cancel"), + "class": "cancel", + "link": true + }, { + "label": I18n.t('admin.user.delete_dont_block'), + "class": "btn", + "callback": function(){ + performDestroy(false); } - }); + }, { + "label": I18n.t('admin.user.delete_and_block'), + "class": "btn", + "callback": function(){ + performDestroy(true); + } + }]; + + bootbox.dialog(message, buttons, {"classes": "delete-user-modal"}); }, loadDetails: function() { diff --git a/app/assets/stylesheets/application/modal.css.scss b/app/assets/stylesheets/application/modal.css.scss index 4ef5b9ee3f1..45e2da204d2 100644 --- a/app/assets/stylesheets/application/modal.css.scss +++ b/app/assets/stylesheets/application/modal.css.scss @@ -297,6 +297,25 @@ } } +.delete-user-modal { + .modal-footer { + .btn { + font-weight: normal; + text-align: left; + font-size: 14px; + line-height: 20px; + margin-bottom: 10px; + display: inline-block; + margin-left: 0; + } + .cancel { + text-decoration: underline; + display: block; + margin-right: 5px; + } + } +} + .permission-list{ list-style:none; margin: 0 0 30px; diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb index 4c5dd3ea55a..df9aabc31f7 100644 --- a/app/controllers/admin/users_controller.rb +++ b/app/controllers/admin/users_controller.rb @@ -118,7 +118,7 @@ class Admin::UsersController < Admin::AdminController user = User.where(id: params[:id]).first guardian.ensure_can_delete_user!(user) begin - if UserDestroyer.new(current_user).destroy(user, params.slice(:delete_posts)) + if UserDestroyer.new(current_user).destroy(user, params.slice(:delete_posts, :block_email)) render json: {deleted: true} else render json: {deleted: false, user: AdminDetailedUserSerializer.new(user, root: false).as_json} diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index b15d6c38e35..2369bfe1b62 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -1234,6 +1234,8 @@ en: delete: "Delete User" delete_forbidden: "This user can't be deleted because there are posts. Delete all this user's posts first." delete_confirm: "Are you SURE you want to permanently delete this user from the site? This action is permanent!" + delete_and_block: "Yes, and block signups with the same email address" + delete_dont_block: "Yes, and allow signups with the same email address" deleted: "The user was deleted." delete_failed: "There was an error deleting that user. Make sure all posts are deleted before trying to delete the user." send_activation_email: "Send Activation Email"