From a22e50eb50a6f666ecc72aa3d5dc07166846b5f1 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sun, 25 Jul 2021 16:54:11 +0200 Subject: [PATCH] #509 - prevent page reload on requesting an account delete --- .../budgetmaster/accounts/AccountController.java | 4 ++-- src/main/resources/static/js/accounts.js | 10 +++++----- src/main/resources/templates/accounts/accounts.ftl | 9 +++------ .../templates/accounts/deleteAccountModal.ftl | 7 +++++++ 4 files changed, 17 insertions(+), 13 deletions(-) create mode 100644 src/main/resources/templates/accounts/deleteAccountModal.ftl diff --git a/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java b/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java index 1c4f1bf66..79a913970 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java @@ -76,8 +76,8 @@ public class AccountController extends BaseController public String requestDeleteAccount(Model model, @PathVariable("ID") Integer ID) { model.addAttribute("accounts", accountService.getAllEntitiesAsc()); - model.addAttribute("currentAccount", accountService.getRepository().getOne(ID)); - return "accounts/accounts"; + model.addAttribute("accountToDelete", accountService.getRepository().getOne(ID)); + return "accounts/deleteAccountModal"; } @GetMapping("/{ID}/delete") diff --git a/src/main/resources/static/js/accounts.js b/src/main/resources/static/js/accounts.js index fa8533f9d..011c41f15 100644 --- a/src/main/resources/static/js/accounts.js +++ b/src/main/resources/static/js/accounts.js @@ -1,10 +1,5 @@ $(document).ready(function() { - if($('#modalConfirmDelete').length) - { - $('#modalConfirmDelete').modal('open'); - } - if($('#modalAccountNotDeletable').length) { $('#modalAccountNotDeletable').modal('open'); @@ -14,4 +9,9 @@ $(document).ready(function() { document.getElementById('account-name').focus(); } + + $('.button-request-delete-account').click(function() + { + fetchAndShowModalContent(this.dataset.url, '#deleteModalContainerOnDemand', '#modalConfirmDelete', function(){}); + }); }); diff --git a/src/main/resources/templates/accounts/accounts.ftl b/src/main/resources/templates/accounts/accounts.ftl index 30a6592b0..23f3a3acd 100644 --- a/src/main/resources/templates/accounts/accounts.ftl +++ b/src/main/resources/templates/accounts/accounts.ftl @@ -44,7 +44,7 @@ <td>${account.getName()}</td> <td> <a href="<@s.url '/accounts/${account.getID()?c}/edit'/>" class="btn-flat no-padding text-default"><i class="material-icons left">edit</i></a> - <a href="<@s.url '/accounts/${account.getID()?c}/requestDelete'/>" class="btn-flat no-padding text-default"><i class="material-icons left no-margin">delete</i></a> + <@header.buttonFlat url='/accounts/' + account.ID?c + '/requestDelete' icon='delete' localizationKey='' classes="no-padding text-default button-request-delete-account" isDataUrl=true/> </td> </tr> </#if> @@ -56,13 +56,10 @@ </div> </@header.content> </div> + + <div id="deleteModalContainerOnDemand"></div> </main> - <#if currentAccount??> - <@header.modalConfirmDelete title=locale.getString("info.title.account.delete") confirmUrl='/accounts' cancelUrlBase="/accounts" itemId=currentAccount.getID() confirmButtonTextKey="info.button.account.delete"> - <p>${locale.getString("info.text.account.delete", currentAccount.getName(), currentAccount.getReferringTransactions()?size)}</p> - </@header.modalConfirmDelete> - </#if> <#if accountNotDeletable??> <!-- warning account not deletable --> diff --git a/src/main/resources/templates/accounts/deleteAccountModal.ftl b/src/main/resources/templates/accounts/deleteAccountModal.ftl new file mode 100644 index 000000000..71b93122b --- /dev/null +++ b/src/main/resources/templates/accounts/deleteAccountModal.ftl @@ -0,0 +1,7 @@ +<#global locale = static["de.thecodelabs.utils.util.Localization"]> +<#import "/spring.ftl" as s> +<#import "../helpers/header.ftl" as header> + +<@header.modalConfirmDelete title=locale.getString("info.title.account.delete") confirmUrl='/accounts' itemId=accountToDelete.getID() confirmButtonTextKey="info.button.account.delete"> + <p>${locale.getString("info.text.account.delete", accountToDelete.getName(), accountToDelete.getReferringTransactions()?size)}</p> +</@header.modalConfirmDelete> \ No newline at end of file -- GitLab