From: joshuaruesweg Date: Wed, 16 Jun 2021 09:32:16 +0000 (+0200) Subject: Use new Actions to handle user dropdown actions X-Git-Tag: 5.5.0_Alpha_1~479^2~14 X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=29a9c6a90f334e7f894da33cd355f0e7d2b3e59d;p=GitHub%2FWoltLab%2FWCF.git Use new Actions to handle user dropdown actions --- diff --git a/ts/WoltLabSuite/Core/Acp/Ui/User/Editor.ts b/ts/WoltLabSuite/Core/Acp/Ui/User/Editor.ts index 2d0139552d..0bf7cd6194 100644 --- a/ts/WoltLabSuite/Core/Acp/Ui/User/Editor.ts +++ b/ts/WoltLabSuite/Core/Acp/Ui/User/Editor.ts @@ -9,14 +9,15 @@ */ import AcpUserContentRemoveHandler from "./Content/Remove/Handler"; -import * as Ajax from "../../../Ajax"; import * as Core from "../../../Core"; import * as EventHandler from "../../../Event/Handler"; import * as Language from "../../../Language"; -import * as UiNotification from "../../../Ui/Notification"; import UiDropdownSimple from "../../../Ui/Dropdown/Simple"; -import { AjaxCallbackObject, DatabaseObjectActionResponse } from "../../../Ajax/Data"; import DomUtil from "../../../Dom/Util"; +import SendNewPasswordAction from "./Action/SendNewPasswordAction"; +import ToggleConfirmEmailAction from "./Action/ToggleConfirmEmailAction"; +import DisableAction from "./Action/DisableAction"; +import BanAction from "./Action/BanAction"; interface RefreshUsersData { userIds: number[]; @@ -64,80 +65,29 @@ class AcpUiUserEditor { }); } - const sendNewPassword = dropdownMenu.querySelector(".jsSendNewPassword") as HTMLAnchorElement; - if (sendNewPassword !== null) { - sendNewPassword.addEventListener("click", (event) => { - event.preventDefault(); - - // emulate clipboard selection - EventHandler.fire("com.woltlab.wcf.clipboard", "com.woltlab.wcf.user", { - data: { - actionName: "com.woltlab.wcf.user.sendNewPassword", - parameters: { - confirmMessage: Language.get("wcf.acp.user.action.sendNewPassword.confirmMessage"), - objectIDs: [userId], - }, - }, - responseData: { - actionName: "com.woltlab.wcf.user.sendNewPassword", - objectIDs: [userId], - }, - }); - }); - } - const deleteContent = dropdownMenu.querySelector(".jsDeleteContent") as HTMLAnchorElement; if (deleteContent !== null) { new AcpUserContentRemoveHandler(deleteContent, userId); } + const sendNewPassword = dropdownMenu.querySelector(".jsSendNewPassword") as HTMLAnchorElement; + if (sendNewPassword !== null) { + new SendNewPasswordAction(sendNewPassword, userId, userRow); + } + const toggleConfirmEmail = dropdownMenu.querySelector(".jsConfirmEmailToggle") as HTMLAnchorElement; if (toggleConfirmEmail !== null) { - toggleConfirmEmail.addEventListener("click", (event) => { - event.preventDefault(); + new ToggleConfirmEmailAction(toggleConfirmEmail, userId, userRow); + } - Ajax.api( - { - _ajaxSetup: () => { - const isEmailConfirmed = Core.stringToBool(userRow.dataset.emailConfirmed!); - - return { - data: { - actionName: (isEmailConfirmed ? "un" : "") + "confirmEmail", - className: "wcf\\data\\user\\UserAction", - objectIDs: [userId], - }, - }; - }, - } as AjaxCallbackObject, - undefined, - (data: DatabaseObjectActionResponse) => { - document.querySelectorAll(".jsUserRow").forEach((userRow: HTMLTableRowElement) => { - const userId = ~~userRow.dataset.objectId!; - if (data.objectIDs.includes(userId)) { - const confirmEmailButton = dropdownMenu.querySelector(".jsConfirmEmailToggle") as HTMLAnchorElement; - - switch (data.actionName) { - case "confirmEmail": - userRow.dataset.emailConfirmed = "true"; - confirmEmailButton.textContent = confirmEmailButton.dataset.unconfirmEmailMessage!; - break; - - case "unconfirmEmail": - userRow.dataset.emailEonfirmed = "false"; - confirmEmailButton.textContent = confirmEmailButton.dataset.confirmEmailMessage!; - break; - - default: - throw new Error("Unreachable"); - } - } - }); - - UiNotification.show(); - }, - ); - }); + const enableUser = dropdownMenu.querySelector(".jsEnable") as HTMLAnchorElement; + if (enableUser !== null) { + new DisableAction(enableUser, userId, userRow); + } + + const banUser = dropdownMenu.querySelector(".jsBan") as HTMLAnchorElement; + if (banUser !== null) { + new BanAction(banUser, userId, userRow); } } @@ -240,4 +190,4 @@ class AcpUiUserEditor { } } -export = AcpUiUserEditor; +export = AcpUiUserEditor; \ No newline at end of file diff --git a/wcfsetup/install/files/acp/templates/userList.tpl b/wcfsetup/install/files/acp/templates/userList.tpl index 1710809dfc..e0b314dc72 100644 --- a/wcfsetup/install/files/acp/templates/userList.tpl +++ b/wcfsetup/install/files/acp/templates/userList.tpl @@ -10,7 +10,7 @@ @@ -52,7 +52,7 @@

{lang}{@$pageTitle}{/lang}{if $items} {#$items}{/if}

- + {hascontent}