From d8a093dcc33e3f7bb6a88e819ee050c33a44ce9c Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Mon, 13 Jun 2022 21:23:15 +0200 Subject: [PATCH] #696 - save transactions settings --- .../settings/SettingsController.java | 31 +++++++++++++++ .../TransactionsSettingsContainer.java | 24 ++++++++++++ .../resources/languages/base_de.properties | 3 ++ .../resources/languages/base_en.properties | 3 ++ .../containers/settingsTransactions.ftl | 39 +++++++++++++++++++ .../resources/templates/settings/settings.ftl | 35 ++--------------- 6 files changed, 104 insertions(+), 31 deletions(-) create mode 100644 BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/settings/containers/TransactionsSettingsContainer.java create mode 100644 BudgetMasterServer/src/main/resources/templates/settings/containers/settingsTransactions.ftl diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java index 2fa7b1975..229dcf038 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java @@ -13,6 +13,7 @@ import de.deadlocker8.budgetmaster.services.ImportResultItem; import de.deadlocker8.budgetmaster.services.ImportService; import de.deadlocker8.budgetmaster.settings.containers.PersonalizationSettingsContainer; import de.deadlocker8.budgetmaster.settings.containers.SecuritySettingsContainer; +import de.deadlocker8.budgetmaster.settings.containers.TransactionsSettingsContainer; import de.deadlocker8.budgetmaster.update.BudgetMasterUpdateService; import de.deadlocker8.budgetmaster.utils.Mappings; import de.deadlocker8.budgetmaster.utils.WebRequestUtils; @@ -79,6 +80,7 @@ public class SettingsController extends BaseController public static final String IMPORT_DATABASE_RESULT = "settings/importResult"; public static final String CONTAINER_SECURITY = "settings/containers/settingsSecurity"; public static final String CONTAINER_PERSONALIZATION = "settings/containers/settingsPersonalization"; + public static final String CONTAINER_TRANSACTIONS = "settings/containers/settingsTransactions"; } private static class RequestAttributeNames @@ -193,6 +195,35 @@ public class SettingsController extends BaseController return ReturnValues.CONTAINER_PERSONALIZATION; } + @PostMapping(value = "/save/transactions") + public String saveContainerTransactions(Model model, + @ModelAttribute("TransactionsSettingsContainer") TransactionsSettingsContainer transactionsSettingsContainer, + BindingResult bindingResult) + { + transactionsSettingsContainer.fixBooleans(); + + final Settings settings = settingsService.getSettings(); + + if(bindingResult.hasErrors()) + { + model.addAttribute(ModelAttributes.ERROR, bindingResult); + + final JsonObject toastContent = getToastContent("notification.settings.transactions.error", NotificationType.ERROR); + model.addAttribute(ModelAttributes.TOAST_CONTENT, toastContent); + model.addAttribute(ModelAttributes.SETTINGS, settings); + return ReturnValues.CONTAINER_TRANSACTIONS; + } + + // update settings + settings.setRestActivated(transactionsSettingsContainer.getRestActivated()); + settingsService.updateSettings(settings); + + final JsonObject toastContent = getToastContent("notification.settings.transactions.saved", NotificationType.SUCCESS); + model.addAttribute(ModelAttributes.TOAST_CONTENT, toastContent); + model.addAttribute(ModelAttributes.SETTINGS, settings); + return ReturnValues.CONTAINER_TRANSACTIONS; + } + private JsonObject getToastContent(String localizationKey, NotificationType notificationType) { final JsonObject toastContent = new JsonObject(); diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/settings/containers/TransactionsSettingsContainer.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/settings/containers/TransactionsSettingsContainer.java new file mode 100644 index 000000000..bfc801d22 --- /dev/null +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/settings/containers/TransactionsSettingsContainer.java @@ -0,0 +1,24 @@ +package de.deadlocker8.budgetmaster.settings.containers; + +public final class TransactionsSettingsContainer +{ + private Boolean restActivated; + + public TransactionsSettingsContainer(Boolean restActivated) + { + this.restActivated = restActivated; + } + + public Boolean getRestActivated() + { + return restActivated; + } + + public void fixBooleans() + { + if(restActivated == null) + { + restActivated = false; + } + } +} diff --git a/BudgetMasterServer/src/main/resources/languages/base_de.properties b/BudgetMasterServer/src/main/resources/languages/base_de.properties index 9cde9d2e9..5d697f980 100644 --- a/BudgetMasterServer/src/main/resources/languages/base_de.properties +++ b/BudgetMasterServer/src/main/resources/languages/base_de.properties @@ -173,6 +173,8 @@ notification.settings.security.warning=Passwort entspricht bereits gespeicherten notification.settings.security.error=Fehler beim Speichern des Passworts notification.settings.personalization.saved=Personalisierung gespeichert notification.settings.personalization.error=Fehler beim Speichern der Personalisierung +notification.settings.transactions.saved=Buchungseinstellungen gespeichert +notification.settings.transactions.error=Fehler beim Speichern der Buchungseinstellungen notification.settings.update.available=BudgetMaster Update "{0}" verfügbar notification.settings.database.delete.success=Datenbank erfolgreich gelöscht notification.settings.backup.run.success=Backup erfolgreich @@ -314,6 +316,7 @@ settings.category.circle.style.deactivated=Quadrate settings.category.circle.style.activated=Kreise settings.personalization=Personalisierung settings.personalization.reload.page=Zum Anwenden visueller Änderungen <a href="">Seite neu laden</a> +settings.transactions=Buchungen settings.database.import=Importieren settings.database.export=Exportieren diff --git a/BudgetMasterServer/src/main/resources/languages/base_en.properties b/BudgetMasterServer/src/main/resources/languages/base_en.properties index b2e64859d..eafb8b9a2 100644 --- a/BudgetMasterServer/src/main/resources/languages/base_en.properties +++ b/BudgetMasterServer/src/main/resources/languages/base_en.properties @@ -174,6 +174,8 @@ notification.settings.security.warning=Password equals already saved password notification.settings.security.error=Error saving password notification.settings.personalization.saved=Personalization settings saved notification.settings.personalization.error=Error saving personalization settings +notification.settings.transactions.saved=Transactions settings saved +notification.settings.transactions.error=Error saving transactions settings notification.settings.update.available=BudgetMaster update "{0}" available notification.settings.database.delete.success=Successfully deleted database notification.settings.backup.run.success=Backup successful @@ -315,6 +317,7 @@ settings.category.circle.style.deactivated=Squares settings.category.circle.style.activated=Circles settings.personalization=Personalization settings.personalization.reload.page=<a href="">Reload</a> page to apply visual changes +settings.transactions=Transactions settings.database.import=Import settings.database.export=Export diff --git a/BudgetMasterServer/src/main/resources/templates/settings/containers/settingsTransactions.ftl b/BudgetMasterServer/src/main/resources/templates/settings/containers/settingsTransactions.ftl new file mode 100644 index 000000000..c0abf9861 --- /dev/null +++ b/BudgetMasterServer/src/main/resources/templates/settings/containers/settingsTransactions.ftl @@ -0,0 +1,39 @@ +<#import "/spring.ftl" as s> +<#import "../../helpers/validation.ftl" as validation> +<#import "../../helpers/header.ftl" as header> +<@header.globals/> + +<#import "settingsContainer.ftl" as settingsContainerMacros> +<#import "../settingsMacros.ftl" as settingsMacros> + +<#macro transactionsSettingsContainer settings> + <@settingsContainerMacros.settingsContainer 'TransactionsSettingsContainer' 'transactionsSettingsContainer'> + <div class="row"> + <div class="col s12"> + <div class="table-container"> + <div class="table-cell"> + <div class="switch-cell-margin">${locale.getString("settings.rest")}</div> + </div> + <div class="table-cell table-cell-spacer"></div> + <div class="table-cell"> + <@settingsMacros.switch "rest" "restActivated" settings.isRestActivated()/> + </div> + <div class="table-cell table-cell-spacer"></div> + <div class="table-cell"> + <div class="switch-cell-margin"> + <a class="btn btn-flat tooltipped text-default" data-position="bottom" data-tooltip="${locale.getString("settings.rest.description")}"><i class="material-icons">help_outline</i></a> + </div> + </div> + </div> + </div> + </div> + + <div class="row"> + <div class="col s12 center-align"> + <@header.buttonSubmit name='action' icon='save' localizationKey='save' color='background-green' formaction='/settings/save/transactions'/> + </div> + </div> + </@settingsContainerMacros.settingsContainer> +</#macro> + +<@transactionsSettingsContainer settings/> diff --git a/BudgetMasterServer/src/main/resources/templates/settings/settings.ftl b/BudgetMasterServer/src/main/resources/templates/settings/settings.ftl index 3f2166342..94ff9c810 100644 --- a/BudgetMasterServer/src/main/resources/templates/settings/settings.ftl +++ b/BudgetMasterServer/src/main/resources/templates/settings/settings.ftl @@ -16,6 +16,7 @@ <#import "containers/settingsSecurity.ftl" as settingsSecurityMacros> <#import "containers/settingsPersonalization.ftl" as settingsPersonalizationMacros> + <#import "containers/settingsTransactions.ftl" as settingsTransactionMacros> <main> @@ -40,37 +41,8 @@ <@settingsPersonalizationMacros.personalizationSettingsContainer settings=settings showReloadWarning=false/> </@settingsMacros.settingsCollapsibleItem> - <@settingsMacros.settingsCollapsibleItem "" "list" "Transactions"> - <div class="row"> - <div class="col s12"> - <div class="table-container"> - <div class="table-cell"> - <div class="switch-cell-margin">${locale.getString("settings.rest")}</div> - <div class="switch-cell-margin">Warn about expenditure switch</div> - </div> - <div class="table-cell table-cell-spacer"></div> - <div class="table-cell"> - <@settingsMacros.switch "rest" "restActivated" settings.isRestActivated()/> - <@settingsMacros.switch "rest" "restActivated" settings.isRestActivated()/> - </div> - <div class="table-cell table-cell-spacer"></div> - <div class="table-cell"> - <div class="switch-cell-margin"> - <a class="btn btn-flat tooltipped text-default" data-position="bottom" data-tooltip="${locale.getString("settings.rest.description")}"><i class="material-icons">help_outline</i></a> - </div> - <div class="switch-cell-margin"> - <a class="btn btn-flat tooltipped text-default" data-position="bottom" data-tooltip="${locale.getString("settings.rest.description")}"><i class="material-icons">help_outline</i></a> - </div> - </div> - </div> - </div> - </div> - - <div class="row"> - <div class="col s12 center-align"> - <@header.buttonSubmit name='action' icon='save' localizationKey='save' color='background-green'/> - </div> - </div> + <@settingsMacros.settingsCollapsibleItem "transactionsSettingsContainer" "list" locale.getString("settings.transactions")> + <@settingsTransactionMacros.transactionsSettingsContainer settings/> </@settingsMacros.settingsCollapsibleItem> <@settingsMacros.settingsCollapsibleItem "" "cloud_download" locale.getString("settings.backup")> @@ -242,6 +214,7 @@ <script> initSettingsContainer('SecuritySettingsContainer', 'securitySettingsContainer'); initSettingsContainer('PersonalizationSettingsContainer', 'personalizationSettingsContainer'); + initSettingsContainer('TransactionsSettingsContainer', 'transactionsSettingsContainer'); </script> </@header.body> </html> -- GitLab