From ae8e47e95f07e4d9abe5745ee807dd97fdae8747 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sun, 25 Jul 2021 16:48:30 +0200 Subject: [PATCH] #509 - prevent page reload on requesting a transaction delete --- .../transactions/TransactionController.java | 4 ++-- src/main/resources/static/js/transactions.js | 7 +++++-- .../templates/transactions/deleteTransactionModal.ftl | 11 +++++++++++ .../resources/templates/transactions/transactions.ftl | 10 +--------- .../templates/transactions/transactionsMacros.ftl | 2 +- 5 files changed, 20 insertions(+), 14 deletions(-) create mode 100644 src/main/resources/templates/transactions/deleteTransactionModal.ftl diff --git a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java index 2668621bb..b3c68ce7c 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java @@ -86,9 +86,9 @@ public class TransactionController extends BaseController DateTime date = dateService.getDateTimeFromCookie(cookieDate); prepareModelTransactions(filterHelpers.getFilterConfiguration(request), model, date); - model.addAttribute("currentTransaction", transactionService.getRepository().getOne(ID)); + model.addAttribute("transactionToDelete", transactionService.getRepository().getOne(ID)); - return "transactions/transactions"; + return "transactions/deleteTransactionModal"; } private void prepareModelTransactions(FilterConfiguration filterConfiguration, Model model, DateTime date) diff --git a/src/main/resources/static/js/transactions.js b/src/main/resources/static/js/transactions.js index 8c0c7d274..9a4bc75c8 100644 --- a/src/main/resources/static/js/transactions.js +++ b/src/main/resources/static/js/transactions.js @@ -1,7 +1,5 @@ $(document).ready(function() { - $('#modalConfirmDelete').modal('open'); - // open filter modal if corresponding anchor is in url (originating from hotkeys.js) if(window.location.href.endsWith('#modalFilter')) { @@ -260,6 +258,11 @@ $(document).ready(function() scrollTop: $(highlightedLarge).offset().top }, 500); } + + $('.button-request-delete-transaction').click(function() + { + fetchAndShowModalContent(this.dataset.url, '#deleteModalContainerOnDemand', '#modalConfirmDelete', function(){}); + }); }); function isHidden(el) diff --git a/src/main/resources/templates/transactions/deleteTransactionModal.ftl b/src/main/resources/templates/transactions/deleteTransactionModal.ftl new file mode 100644 index 000000000..847e92f2e --- /dev/null +++ b/src/main/resources/templates/transactions/deleteTransactionModal.ftl @@ -0,0 +1,11 @@ +<#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.transaction.delete") confirmUrl='/transactions' itemId=transactionToDelete.getID() confirmButtonTextKey='delete'> + <#if transactionToDelete.isRepeating()> + <p>${locale.getString("info.text.transaction.repeating.delete", transactionToDelete.name)}</p> + <#else> + <p>${locale.getString("info.text.transaction.delete", transactionToDelete.name)}</p> + </#if> +</@header.modalConfirmDelete> \ No newline at end of file diff --git a/src/main/resources/templates/transactions/transactions.ftl b/src/main/resources/templates/transactions/transactions.ftl index 75eaec1aa..28a841526 100644 --- a/src/main/resources/templates/transactions/transactions.ftl +++ b/src/main/resources/templates/transactions/transactions.ftl @@ -91,15 +91,7 @@ </@header.content> </div> - <#if currentTransaction??> - <@header.modalConfirmDelete title=locale.getString("info.title.transaction.delete") confirmUrl='/transactions' cancelUrlBase='/transactions' itemId=currentTransaction.getID() confirmButtonTextKey='delete'> - <#if currentTransaction.isRepeating()> - <p>${locale.getString("info.text.transaction.repeating.delete", currentTransaction.name)}</p> - <#else> - <p>${locale.getString("info.text.transaction.delete", currentTransaction.name)}</p> - </#if> - </@header.modalConfirmDelete> - </#if> + <div id="deleteModalContainerOnDemand"></div> <@filterMacros.filterModal filterConfiguration/> </main> diff --git a/src/main/resources/templates/transactions/transactionsMacros.ftl b/src/main/resources/templates/transactions/transactionsMacros.ftl index e61dafcf7..70c6acb1e 100644 --- a/src/main/resources/templates/transactions/transactionsMacros.ftl +++ b/src/main/resources/templates/transactions/transactionsMacros.ftl @@ -49,7 +49,7 @@ <div class="col s8 l2 xl1 right-align transaction-buttons no-wrap"> <#if transaction.isEditable()> <@header.buttonFlat url='/transactions/' + transaction.ID?c + '/edit' icon='edit' localizationKey='' classes="no-padding text-default"/> - <@header.buttonFlat url='/transactions/' + transaction.ID?c + '/requestDelete' icon='delete' localizationKey='' classes="no-padding text-default"/> + <@header.buttonFlat url='/transactions/' + transaction.ID?c + '/requestDelete' icon='delete' localizationKey='' classes="no-padding text-default button-request-delete-transaction" isDataUrl=true/> </#if> </div> </#macro> -- GitLab