diff --git a/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java b/src/main/java/de/deadlocker8/budgetmaster/accounts/AccountController.java index fa49c95deed126e4803f053046e1540dea8bdb77..a697a5048fde27a3f57fa979a5e12ed9abee0f63 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 a3813231d5bd06304e49c099b731c23c26bc43cd..a37ebbe6417190734d7300f157148e047753e8d8 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 1e875bf88e21c97514c2b926512ad856cb0355a3..9745393debaabaa1d80758154bab548551a7b11f 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 a8a8377485e37bdb8f672832811d60438e41ca1b..6a865e4fec5729204ff486d9db4d0aed7299b484 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>