diff --git a/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java b/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java index a77046be30004da3c2c09effe1731b6d0b2cf58f..3d1445633a02ad74664049d5acafcf3669864dad 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java @@ -1,6 +1,5 @@ package de.deadlocker8.budgetmaster.charts; -import de.deadlocker8.budgetmaster.categories.Category; import de.deadlocker8.budgetmaster.controller.BaseController; import de.deadlocker8.budgetmaster.services.HelpersService; import de.deadlocker8.budgetmaster.settings.SettingsService; @@ -84,4 +83,35 @@ public class ChartController extends BaseController return "redirect:/charts/manage"; } + + @RequestMapping("/charts/{ID}/requestDelete") + public String requestDeleteChart(Model model, @PathVariable("ID") Integer ID) + { + if(!isDeletable(ID)) + { + return "redirect:/charts/manage"; + } + + model.addAttribute("charts", chartService.getRepository().findAllByOrderByNameAsc()); + model.addAttribute("currentChart", chartService.getRepository().getOne(ID)); + model.addAttribute("settings", settingsService.getSettings()); + return "charts/manage"; + } + + @RequestMapping(value = "/charts/{ID}/delete") + public String deleteChart(Model model, @PathVariable("ID") Integer ID) + { + if(isDeletable(ID)) + { + chartService.getRepository().delete(ID); + } + + return "redirect:/charts/manage"; + } + + private boolean isDeletable(Integer ID) + { + Chart chartToDelete = chartService.getRepository().getOne(ID); + return chartToDelete != null && chartToDelete.getType() == ChartType.CUSTOM; + } } diff --git a/src/main/resources/languages/_de.properties b/src/main/resources/languages/_de.properties index 80bd5ba2bd4122e5fd2932aff118dd0864fa79e8..a3c483b4a85022bf6304004e5d1af13e8c6af47c 100644 --- a/src/main/resources/languages/_de.properties +++ b/src/main/resources/languages/_de.properties @@ -93,6 +93,8 @@ info.button.account.delete=Konto und Buchungen l info.title.transaction.delete=Buchung l�schen info.text.transaction.delete=M�chtest du die Buchung "{0}" wirklich unwiderruflich l�schen? info.text.transaction.repeating.delete=M�chtest du die Buchung "{0}" wirklich unwiderruflich l�schen? <br>Hinweis: Es handelt sich um eine wiederholende Buchung. Beim L�schen dieser Buchung werden alle zugeh�rigen Wiederholungen ebenfalls gel�scht! +info.title.chart.delete=Diagramm l�schen +info.text.chart.delete=M�chtest du das Diagramm "{0}" wirklich unwiderruflich l�schen? info.title.database.delete=Datenbank l�schen info.header.text.database.delete=Soll die Datenbank wirklich unwiderruflich gel�scht werden?<br>Hinweis: Beim L�schen der Datenbank werden alle Buchungen, Kategorien und Konten unwiderruflich gel�scht. diff --git a/src/main/resources/languages/_en.properties b/src/main/resources/languages/_en.properties index 61f06b1a5a242fdd75d2794bba273f4fa2439e56..a0778df4704ee680382f13dd01c1cafbc27cac78 100644 --- a/src/main/resources/languages/_en.properties +++ b/src/main/resources/languages/_en.properties @@ -93,6 +93,8 @@ info.button.account.delete=Delete Account and Transactions info.title.transaction.delete=Delete Entry info.text.transaction.delete=Do you really want to delete the entry "{0}"? This can''t be undone. info.text.transaction.repeating.delete=Do you really want to delete the entry "{0}"? This can''t be undone.<br>Note: This transaction is a repeating transaction. Deleting this transaction will delete all related occurrences too! +info.title.chart.delete=Delete Chart +info.text.chart.delete=Do you really want to delete the chart "{0}"? info.title.database.delete=Delete Database info.header.text.database.delete=Do you really want to delete the database? This can''t be undone.<br>Note: Deleting the database will delete all transactions, categories and accounts permanently. diff --git a/src/main/resources/static/js/charts.js b/src/main/resources/static/js/charts.js new file mode 100644 index 0000000000000000000000000000000000000000..e9b6a10631647054fca0fc6d2e65401c81dcd28f --- /dev/null +++ b/src/main/resources/static/js/charts.js @@ -0,0 +1,6 @@ +$( document ).ready(function() { + if($("#modalConfirmDelete").length) + { + $('#modalConfirmDelete').modal('open'); + } +}); \ No newline at end of file diff --git a/src/main/resources/templates/charts/manage.ftl b/src/main/resources/templates/charts/manage.ftl index 95bd0bc3ad96a3df6f59190f6d3aa05f88496666..a446156c4da39445089a09b5c6266af1c81fa03d 100644 --- a/src/main/resources/templates/charts/manage.ftl +++ b/src/main/resources/templates/charts/manage.ftl @@ -55,24 +55,16 @@ </div> </div> - <#if currentCategory??> + <#if currentChart??> <!-- confirm delete modal --> - <div id="modalConfirmDelete" class="modal categoryDeleteModal background-color"> + <div id="modalConfirmDelete" class="modal background-color"> <div class="modal-content"> - <h4>${locale.getString("info.title.category.delete")}</h4> - <p>${locale.getString("info.text.category.delete", currentCategory.name)}</p> - <p>${locale.getString("info.text.category.delete.move")}</p> - - <form name="DestinationCategory" id="formDestinationCategory" action="<@s.url '/categories/${currentCategory.ID?c}/delete'/>" method="post"> - <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/> - <#import "../helpers/validation.ftl" as validation> - <@newTransactionMacros.categorySelect availableCategories preselectedCategory "col s12 m12 l8 offset-l2" locale.getString("info.title.category.delete.move")/> - </form> + <h4>${locale.getString("info.title.chart.delete")}</h4> + <p>${locale.getString("info.text.chart.delete", currentChart.getName())}</p> </div> - <div class="modal-footer background-color"> - <a href="<@s.url '/categories'/>" class="modal-action modal-close waves-effect waves-light red btn-flat white-text">${locale.getString("cancel")}</a> - <a id="buttonDeleteCategory" class="modal-action modal-close waves-effect waves-light green btn-flat white-text">${locale.getString("delete")}</a> + <a href="<@s.url '/charts/manage'/>" class="modal-action modal-close waves-effect waves-light red btn-flat white-text">${locale.getString("cancel")}</a> + <a href="<@s.url '/charts/${currentChart.getID()?c}/delete'/>" class="modal-action modal-close waves-effect waves-light green btn-flat white-text">${locale.getString("info.title.chart.delete")}</a> </div> </div> </#if> @@ -80,5 +72,6 @@ <#import "../helpers/scripts.ftl" as scripts> <@scripts.scripts/> + <script src="<@s.url '/js/charts.js'/>"></script> </body> </html> \ No newline at end of file