diff --git a/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java b/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java index 3d1445633a02ad74664049d5acafcf3669864dad..49db6e9e9fe19628667f7bb19c9cf4d03a5ffd97 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java @@ -74,10 +74,20 @@ public class ChartController extends BaseController } else { + Chart existingChart = chartService.getRepository().getOne(chart.getID()); + if(existingChart != null) + { + if(existingChart.getType() != ChartType.CUSTOM) + { + return "error/400"; + } + } + if(chart.getType() == null) { chart.setType(ChartType.CUSTOM); } + chartService.getRepository().save(chart); } diff --git a/src/main/resources/languages/_de.properties b/src/main/resources/languages/_de.properties index a3c483b4a85022bf6304004e5d1af13e8c6af47c..8792d9715c59a68e9e7d8683ddc20982c03c9018 100644 --- a/src/main/resources/languages/_de.properties +++ b/src/main/resources/languages/_de.properties @@ -6,6 +6,7 @@ github.url=https://github.com/deadlocker8/BudgetMaster # ERRORPAGES errorpages.home=Zur Startseite +errorpages.400=Ung�ltige Anfrage. errorpages.403=Zugriff nicht gestattet. errorpages.404=Die angegebene Seite konnte nicht gefunden werden. errorpages.418=I'm a teapot. @@ -330,5 +331,6 @@ charts.default.categoryBudget=Verbrauch nach Kategorien chart.new.label.name=Name chart.new.label.script=Script +chart.new.info.default=Diese mitgeliefert Diagrammvorlage kann nicht �berschrieben werden, aber du kannst dir den Code ansehen. chart.type=Typ chart.actions=Aktionen \ No newline at end of file diff --git a/src/main/resources/languages/_en.properties b/src/main/resources/languages/_en.properties index a0778df4704ee680382f13dd01c1cafbc27cac78..aeae2ece8c2e82509c2642bf5731d04db1a6b7da 100644 --- a/src/main/resources/languages/_en.properties +++ b/src/main/resources/languages/_en.properties @@ -6,6 +6,7 @@ github.url=https://github.com/deadlocker8/BudgetMaster # ERRORPAGES errorpages.home=To Homepage +errorpages.400=Bad request. errorpages.403=Access denied. errorpages.404=The requested page doesn't exist. errorpages.418=I'm a teapot. @@ -330,5 +331,6 @@ charts.default.categoryBudget=Consumption by categories chart.new.label.name=Name chart.new.label.script=Script +chart.new.info.default=This default chart can\'t be overwritten but you can have a look on how it's implemented. chart.type=Type chart.actions=Actions \ No newline at end of file diff --git a/src/main/resources/templates/charts/newChart.ftl b/src/main/resources/templates/charts/newChart.ftl index 0833664213529bcc501eb643837788e12a12b477..d2035fdceac497abcd0d9420f1a8fb191f180b80 100644 --- a/src/main/resources/templates/charts/newChart.ftl +++ b/src/main/resources/templates/charts/newChart.ftl @@ -39,6 +39,20 @@ <br> + <#-- info message if chart is not editable --> + <#if (chart.getType().name() == "DEFAULT")> + <div class="row no-margin-bottom"> + <div class="col s12 center-align"> + <table class="text-color login-message no-border-table"> + <tr> + <td><i class="material-icons">info</i></td> + <td id="loginMessage">${locale.getString("chart.new.info.default")}</td> + </tr> + </table> + </div> + </div> + </#if> + <#-- buttons --> <div class="row hide-on-small-only"> <div class="col s6 right-align"> @@ -46,7 +60,7 @@ </div> <div class="col s6 left-align"> - <button class="btn waves-effect waves-light budgetmaster-blue" type="submit" name="action"> + <button class="btn waves-effect waves-light budgetmaster-blue" type="submit" name="action" <#if (chart.getType().name() == "DEFAULT")>disabled</#if>> <i class="material-icons left">save</i>${locale.getString("save")} </button> </div> @@ -59,7 +73,7 @@ </div> <div class="row center-align"> <div class="col s12"> - <button class="btn waves-effect waves-light budgetmaster-blue" type="submit" name="buttonSave"> + <button class="btn waves-effect waves-light budgetmaster-blue" type="submit" name="buttonSave" <#if (chart.getType().name() == "DEFAULT")>disabled</#if>> <i class="material-icons left">save</i>${locale.getString("save")} </button> </div> diff --git a/src/main/resources/templates/error/400.ftl b/src/main/resources/templates/error/400.ftl new file mode 100644 index 0000000000000000000000000000000000000000..03219beb1d551a9224508caf5033229325147c23 --- /dev/null +++ b/src/main/resources/templates/error/400.ftl @@ -0,0 +1,32 @@ +<html> + <head> + <#import "../helpers/header.ftl" as header> + <@header.header "BudgetMaster - 400"/> + <@header.style "login"/> + <#import "/spring.ftl" as s> + </head> + <body class="budgetmaster-blue-light"> + <main> + <div class="row valign-wrapper full-height"> + <div class="col l4 offset-l4 m6 offset-m3 s10 offset-s1"> + <div class="card background-color"> + <div class="card-content"> + <div class="card-title"> + <div id="logo-container" class="center-align"><@header.logo "logo" ""/></div> + </div> + <div class="row"> + <div class="col s12 center-align"> + <h1>❌ 400</h1> + <h5>${locale.getString("errorpages.400")}</h5> + </div> + </div> + <div class="center-align"> + <a href="<@s.url '/'/>" class="waves-effect waves-light btn budgetmaster-blue"><i class="material-icons left">home</i>${locale.getString("errorpages.home")}</a> + </div> + </div> + </div> + </div> + </div> + </main> + </body> +</html> \ No newline at end of file diff --git a/src/main/resources/templates/index.ftl b/src/main/resources/templates/index.ftl index 8a584940471772a7d431291e1053b41029ff186a..b8cf8a9636347a7c196051f071860bd47444037e 100644 --- a/src/main/resources/templates/index.ftl +++ b/src/main/resources/templates/index.ftl @@ -56,6 +56,7 @@ <p class="text-grey home-menu-text">${locale.getString("home.menu.charts")}</p> <div class="left-align"> <a href="<@s.url '/charts/manage'/>" class="waves-effect btn-flat home-menu-link-item"><i class="material-icons left">play_arrow</i>${locale.getString("home.menu.charts.action.manage")}</a> + <br> <a href="<@s.url '/charts'/>" class="waves-effect btn-flat home-menu-link-item"><i class="material-icons left">play_arrow</i>${locale.getString("home.menu.charts.action.show")}</a> </div>