Skip to content
Snippets Groups Projects
Commit d8a093dc authored by Robert Goldmann's avatar Robert Goldmann
Browse files

#696 - save transactions settings

parent a8283898
Branches
Tags
No related merge requests found
...@@ -13,6 +13,7 @@ import de.deadlocker8.budgetmaster.services.ImportResultItem; ...@@ -13,6 +13,7 @@ import de.deadlocker8.budgetmaster.services.ImportResultItem;
import de.deadlocker8.budgetmaster.services.ImportService; import de.deadlocker8.budgetmaster.services.ImportService;
import de.deadlocker8.budgetmaster.settings.containers.PersonalizationSettingsContainer; import de.deadlocker8.budgetmaster.settings.containers.PersonalizationSettingsContainer;
import de.deadlocker8.budgetmaster.settings.containers.SecuritySettingsContainer; import de.deadlocker8.budgetmaster.settings.containers.SecuritySettingsContainer;
import de.deadlocker8.budgetmaster.settings.containers.TransactionsSettingsContainer;
import de.deadlocker8.budgetmaster.update.BudgetMasterUpdateService; import de.deadlocker8.budgetmaster.update.BudgetMasterUpdateService;
import de.deadlocker8.budgetmaster.utils.Mappings; import de.deadlocker8.budgetmaster.utils.Mappings;
import de.deadlocker8.budgetmaster.utils.WebRequestUtils; import de.deadlocker8.budgetmaster.utils.WebRequestUtils;
...@@ -79,6 +80,7 @@ public class SettingsController extends BaseController ...@@ -79,6 +80,7 @@ public class SettingsController extends BaseController
public static final String IMPORT_DATABASE_RESULT = "settings/importResult"; public static final String IMPORT_DATABASE_RESULT = "settings/importResult";
public static final String CONTAINER_SECURITY = "settings/containers/settingsSecurity"; public static final String CONTAINER_SECURITY = "settings/containers/settingsSecurity";
public static final String CONTAINER_PERSONALIZATION = "settings/containers/settingsPersonalization"; public static final String CONTAINER_PERSONALIZATION = "settings/containers/settingsPersonalization";
public static final String CONTAINER_TRANSACTIONS = "settings/containers/settingsTransactions";
} }
private static class RequestAttributeNames private static class RequestAttributeNames
...@@ -193,6 +195,35 @@ public class SettingsController extends BaseController ...@@ -193,6 +195,35 @@ public class SettingsController extends BaseController
return ReturnValues.CONTAINER_PERSONALIZATION; 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) private JsonObject getToastContent(String localizationKey, NotificationType notificationType)
{ {
final JsonObject toastContent = new JsonObject(); final JsonObject toastContent = new JsonObject();
......
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;
}
}
}
...@@ -173,6 +173,8 @@ notification.settings.security.warning=Passwort entspricht bereits gespeicherten ...@@ -173,6 +173,8 @@ notification.settings.security.warning=Passwort entspricht bereits gespeicherten
notification.settings.security.error=Fehler beim Speichern des Passworts notification.settings.security.error=Fehler beim Speichern des Passworts
notification.settings.personalization.saved=Personalisierung gespeichert notification.settings.personalization.saved=Personalisierung gespeichert
notification.settings.personalization.error=Fehler beim Speichern der Personalisierung 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.update.available=BudgetMaster Update "{0}" verfügbar
notification.settings.database.delete.success=Datenbank erfolgreich gelöscht notification.settings.database.delete.success=Datenbank erfolgreich gelöscht
notification.settings.backup.run.success=Backup erfolgreich notification.settings.backup.run.success=Backup erfolgreich
...@@ -314,6 +316,7 @@ settings.category.circle.style.deactivated=Quadrate ...@@ -314,6 +316,7 @@ settings.category.circle.style.deactivated=Quadrate
settings.category.circle.style.activated=Kreise settings.category.circle.style.activated=Kreise
settings.personalization=Personalisierung settings.personalization=Personalisierung
settings.personalization.reload.page=Zum Anwenden visueller Änderungen <a href="">Seite neu laden</a> settings.personalization.reload.page=Zum Anwenden visueller Änderungen <a href="">Seite neu laden</a>
settings.transactions=Buchungen
settings.database.import=Importieren settings.database.import=Importieren
settings.database.export=Exportieren settings.database.export=Exportieren
......
...@@ -174,6 +174,8 @@ notification.settings.security.warning=Password equals already saved password ...@@ -174,6 +174,8 @@ notification.settings.security.warning=Password equals already saved password
notification.settings.security.error=Error saving password notification.settings.security.error=Error saving password
notification.settings.personalization.saved=Personalization settings saved notification.settings.personalization.saved=Personalization settings saved
notification.settings.personalization.error=Error saving personalization settings 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.update.available=BudgetMaster update "{0}" available
notification.settings.database.delete.success=Successfully deleted database notification.settings.database.delete.success=Successfully deleted database
notification.settings.backup.run.success=Backup successful notification.settings.backup.run.success=Backup successful
...@@ -315,6 +317,7 @@ settings.category.circle.style.deactivated=Squares ...@@ -315,6 +317,7 @@ settings.category.circle.style.deactivated=Squares
settings.category.circle.style.activated=Circles settings.category.circle.style.activated=Circles
settings.personalization=Personalization settings.personalization=Personalization
settings.personalization.reload.page=<a href="">Reload</a> page to apply visual changes settings.personalization.reload.page=<a href="">Reload</a> page to apply visual changes
settings.transactions=Transactions
settings.database.import=Import settings.database.import=Import
settings.database.export=Export settings.database.export=Export
......
<#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/>
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
<#import "containers/settingsSecurity.ftl" as settingsSecurityMacros> <#import "containers/settingsSecurity.ftl" as settingsSecurityMacros>
<#import "containers/settingsPersonalization.ftl" as settingsPersonalizationMacros> <#import "containers/settingsPersonalization.ftl" as settingsPersonalizationMacros>
<#import "containers/settingsTransactions.ftl" as settingsTransactionMacros>
<main> <main>
...@@ -40,37 +41,8 @@ ...@@ -40,37 +41,8 @@
<@settingsPersonalizationMacros.personalizationSettingsContainer settings=settings showReloadWarning=false/> <@settingsPersonalizationMacros.personalizationSettingsContainer settings=settings showReloadWarning=false/>
</@settingsMacros.settingsCollapsibleItem> </@settingsMacros.settingsCollapsibleItem>
<@settingsMacros.settingsCollapsibleItem "" "list" "Transactions"> <@settingsMacros.settingsCollapsibleItem "transactionsSettingsContainer" "list" locale.getString("settings.transactions")>
<div class="row"> <@settingsTransactionMacros.transactionsSettingsContainer settings/>
<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> </@settingsMacros.settingsCollapsibleItem>
<@settingsMacros.settingsCollapsibleItem "" "cloud_download" locale.getString("settings.backup")> <@settingsMacros.settingsCollapsibleItem "" "cloud_download" locale.getString("settings.backup")>
...@@ -242,6 +214,7 @@ ...@@ -242,6 +214,7 @@
<script> <script>
initSettingsContainer('SecuritySettingsContainer', 'securitySettingsContainer'); initSettingsContainer('SecuritySettingsContainer', 'securitySettingsContainer');
initSettingsContainer('PersonalizationSettingsContainer', 'personalizationSettingsContainer'); initSettingsContainer('PersonalizationSettingsContainer', 'personalizationSettingsContainer');
initSettingsContainer('TransactionsSettingsContainer', 'transactionsSettingsContainer');
</script> </script>
</@header.body> </@header.body>
</html> </html>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment