From e04020b8bdd36a8e2b3e821b839d486d09bd258e Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Tue, 15 Sep 2020 21:55:03 +0200 Subject: [PATCH] #528 - allow to set an account as readonly/readable --- .../accounts/AccountController.java | 21 +++++++++++++++++++ src/main/resources/languages/_de.properties | 2 ++ src/main/resources/languages/_en.properties | 2 ++ .../resources/templates/accounts/accounts.ftl | 10 +++++++++ 4 files changed, 35 insertions(+) diff --git a/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java b/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java index fa49c95de..a697a5048 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java @@ -57,6 +57,27 @@ public class AccountController extends BaseController return "redirect:" + referer; } + @GetMapping(value = "/{ID}/toggleReadOnly") + public String toggleReadOnly(HttpServletRequest request, @PathVariable("ID") Integer ID) + { + final Optional<Account> accountOptional = accountService.getRepository().findById(ID); + if(accountOptional.isEmpty()) + { + throw new ResourceNotFoundException(); + } + + final Account account = accountOptional.get(); + account.setReadOnly(!account.isReadOnly()); + accountService.getRepository().save(account); + + String referer = request.getHeader("Referer"); + if(referer.contains("database/import")) + { + return "redirect:/settings"; + } + return "redirect:" + referer; + } + @GetMapping public String accounts(Model model) { diff --git a/src/main/resources/languages/_de.properties b/src/main/resources/languages/_de.properties index a3813231d..a37ebbe64 100644 --- a/src/main/resources/languages/_de.properties +++ b/src/main/resources/languages/_de.properties @@ -207,6 +207,8 @@ account.default.name=Standardkonto account.all=Alle Konten account.budget.asof=Stand account.tooltip.default=Als Standardkonto festlegen +account.tooltip.readonly.activate=Konto aktivieren +account.tooltip.readonly.deactivate=Konto deaktivieren transaction.new.label.name=Name transaction.new.label.amount=Betrag diff --git a/src/main/resources/languages/_en.properties b/src/main/resources/languages/_en.properties index 1e875bf88..9745393de 100644 --- a/src/main/resources/languages/_en.properties +++ b/src/main/resources/languages/_en.properties @@ -207,6 +207,8 @@ account.default.name=Default Account account.all=All Accounts account.budget.asof=as of account.tooltip.default=Set as default account +account.tooltip.readonly.activate=Enable account +account.tooltip.readonly.deactivate=Disable account transaction.new.label.name=Name transaction.new.label.amount=Amount diff --git a/src/main/resources/templates/accounts/accounts.ftl b/src/main/resources/templates/accounts/accounts.ftl index a8a837748..6a865e4fe 100644 --- a/src/main/resources/templates/accounts/accounts.ftl +++ b/src/main/resources/templates/accounts/accounts.ftl @@ -25,6 +25,16 @@ <tr> <td> <a href="<@s.url '/accounts/${account.getID()?c}/setAsDefault'/>" class="btn-flat no-padding text-color tooltipped" data-position="left" data-tooltip="${locale.getString("account.tooltip.default")}"><i class="material-icons left"><#if account.isDefault()>star<#else>star_border</#if></i></a> + + <#if account.isReadOnly()> + <#assign toolTipText = locale.getString("account.tooltip.readonly.activate")/> + <#assign lockIcon = '<i class="fas fa-lock"></i>'/> + <#else> + <#assign toolTipText = locale.getString("account.tooltip.readonly.deactivate")/> + <#assign lockIcon = '<i class="fas fa-lock-open"></i>'/> + </#if> + + <a href="<@s.url '/accounts/${account.getID()?c}/toggleReadOnly'/>" class="btn-flat no-padding text-color tooltipped" data-position="left" data-tooltip="${toolTipText}">${lockIcon}</a> </td> <td>${account.getName()}</td> <td> -- GitLab