Revert "FEATURE: prevent accidental canceling when drafting penalties (#9105)" (#9122)

This reverts commit 243284f998.

There are some issues in how the JS tests interact that I will need to figure out here before this can be merged.
This commit is contained in:
Jeff Wong 2020-03-05 15:29:51 -10:00 committed by GitHub
parent 243284f998
commit 6fe91bbbbb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 15 additions and 77 deletions

View File

@ -1,7 +1,6 @@
import ModalFunctionality from "discourse/mixins/modal-functionality";
import { popupAjaxError } from "discourse/lib/ajax-error";
import Mixin from "@ember/object/mixin";
import { next } from "@ember/runloop";
import { Promise } from "rsvp";
export default Mixin.create(ModalFunctionality, {
@ -12,7 +11,6 @@ export default Mixin.create(ModalFunctionality, {
user: null,
postId: null,
successCallback: null,
confirmClose: false,
resetModal() {
this.setProperties({
@ -23,30 +21,10 @@ export default Mixin.create(ModalFunctionality, {
postEdit: null,
postAction: "delete",
before: null,
successCallback: null,
confirmClose: false
successCallback: null
});
},
beforeClose() {
// prompt a confirmation if we have unsaved content
if (
(this.reason && this.reason.length > 1) ||
(this.message && this.message.length > 1 && !this.confirmClose)
) {
this.send("hideModal");
bootbox.confirm(I18n.t("admin.user.confirm_cancel_penalty"), result => {
if (result) {
this.set("confirmClose", true);
this.send("closeModal");
} else {
next(() => this.send("reopenModal"));
}
});
return false;
}
},
penalize(cb) {
let before = this.before;
let promise = before ? before() : Promise.resolve();

View File

@ -31,16 +31,13 @@ export default Component.extend({
@on("didInsertElement")
setUp() {
$("html").on("keyup.discourse-modal", e => {
//only respond to events when the modal is visible
if ($("#discourse-modal:visible").length > 0) {
if (e.which === 27 && this.dismissable) {
next(() => $(".modal-header button.modal-close").click());
}
$("html").on("keydown.discourse-modal", e => {
if (e.which === 27 && this.dismissable) {
next(() => $(".modal-header button.modal-close").click());
}
if (e.which === 13 && this.triggerClickOnEnter(e)) {
next(() => $(".modal-footer .btn-primary").click());
}
if (e.which === 13 && this.triggerClickOnEnter(e)) {
next(() => $(".modal-footer .btn-primary").click());
}
});
@ -49,7 +46,7 @@ export default Component.extend({
@on("willDestroyElement")
cleanUp() {
$("html").off("keyup.discourse-modal");
$("html").off("keydown.discourse-modal");
this.appEvents.off("modal:body-shown", this, "_modalBodyShown");
},

View File

@ -157,23 +157,12 @@ const ApplicationRoute = DiscourseRoute.extend(OpenComposer, {
// Close the current modal, and destroy its state.
closeModal() {
this.render("hide-modal", { into: "modal", outlet: "modalBody" });
const route = getOwner(this).lookup("route:application");
let modalController = route.controllerFor("modal");
const controllerName = modalController.get("name");
if (controllerName) {
const controller = getOwner(this).lookup(
`controller:${controllerName}`
);
if (controller && controller.beforeClose) {
if (false === controller.beforeClose()) {
return;
}
}
}
this.render("hide-modal", { into: "modal", outlet: "modalBody" });
if (controllerName) {
const controller = getOwner(this).lookup(
`controller:${controllerName}`

View File

@ -4291,7 +4291,6 @@ en:
threshold_reached: "Received too many bounces from that email."
trust_level_change_failed: "There was a problem changing the user's trust level."
suspend_modal_title: "Suspend User"
confirm_cancel_penalty: "Are you sure you want to discard the penalty?"
trust_level_2_users: "Trust Level 2 Users"
trust_level_3_requirements: "Trust Level 3 Requirements"
trust_level_locked_tip: "trust level is locked, system will not promote or demote user"

View File

@ -34,31 +34,6 @@ QUnit.test("suspend a user - cancel", async assert => {
assert.equal(find(".suspend-user-modal:visible").length, 0);
});
QUnit.test("suspend a user - cancel with input", async assert => {
await visit("/admin/users/1234/regular");
await click(".suspend-user");
assert.equal(find(".suspend-user-modal:visible").length, 1);
await fillIn(".suspend-reason", "for breaking the rules");
await fillIn(".suspend-message", "this is an email reason why");
await click(".d-modal-cancel");
assert.equal(find(".bootbox.modal:visible").length, 1);
await click(".modal-footer .btn-default");
assert.equal(find(".suspend-user-modal:visible").length, 1);
assert.equal(
find(".suspend-message")[0].value,
"this is an email reason why"
);
await click(".d-modal-cancel");
await click(".modal-footer .btn-primary");
assert.equal(find(".suspend-user-modal:visible").length, 0);
});
QUnit.test("suspend, then unsuspend a user", async assert => {
const suspendUntilCombobox = selectKit(".suspend-until .combobox");

View File

@ -28,7 +28,7 @@ QUnit.test("modal", async function(assert) {
await click(".login-button");
assert.ok(find(".d-modal:visible").length === 1, "modal should reappear");
await keyEvent("#main-outlet", "keyup", 27);
await keyEvent("#main-outlet", "keydown", 27);
assert.ok(
find(".d-modal:visible").length === 0,
"ESC should close the modal"
@ -47,7 +47,7 @@ QUnit.test("modal", async function(assert) {
find(".d-modal:visible").length === 1,
"modal should not disappear when you click outside"
);
await keyEvent("#main-outlet", "keyup", 27);
await keyEvent("#main-outlet", "keydown", 27);
assert.ok(
find(".d-modal:visible").length === 1,
"ESC should not close the modal"
@ -61,7 +61,7 @@ QUnit.test("modal-keyboard-events", async function(assert) {
await click(".toggle-admin-menu");
await click(".topic-admin-status-update button");
await keyEvent(".d-modal", "keyup", 13);
await keyEvent(".d-modal", "keydown", 13);
assert.ok(
find("#modal-alert:visible").length === 1,
@ -72,7 +72,7 @@ QUnit.test("modal-keyboard-events", async function(assert) {
"hitting Enter does not dismiss modal due to alert error"
);
await keyEvent("#main-outlet", "keyup", 27);
await keyEvent("#main-outlet", "keydown", 27);
assert.ok(
find(".d-modal:visible").length === 0,
"ESC should close the modal"
@ -82,7 +82,7 @@ QUnit.test("modal-keyboard-events", async function(assert) {
await click(".d-editor-button-bar .btn.link");
await keyEvent(".d-modal", "keyup", 13);
await keyEvent(".d-modal", "keydown", 13);
assert.ok(
find(".d-modal:visible").length === 0,
"modal should disappear on hitting Enter"