diff --git a/src/main/java/de/deadlocker8/budgetmaster/settings/Settings.java b/src/main/java/de/deadlocker8/budgetmaster/settings/Settings.java index 9b79844e6e93dc9bc9b8b943391ffdd3fda59fc3..1c1900278c8f6f7bee296baae966679228bb9571 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/settings/Settings.java +++ b/src/main/java/de/deadlocker8/budgetmaster/settings/Settings.java @@ -27,6 +27,7 @@ public class Settings private Boolean autoBackupActivated; private Integer autoBackupDays; private AutoBackupTime autoBackupTime; + private Integer autoBackupFilesToKeep; public Settings() { @@ -46,6 +47,7 @@ public class Settings defaultSettings.setAutoBackupActivated(false); defaultSettings.setAutoBackupDays(1); defaultSettings.setAutoBackupTime(AutoBackupTime.DEFAULT); + defaultSettings.setAutoBackupFilesToKeep(3); return defaultSettings; } @@ -174,6 +176,16 @@ public class Settings this.autoBackupTime = autoBackupTime; } + public Integer getAutoBackupFilesToKeep() + { + return autoBackupFilesToKeep; + } + + public void setAutoBackupFilesToKeep(Integer autoBackupFilesToKeep) + { + this.autoBackupFilesToKeep = autoBackupFilesToKeep; + } + @Override public String toString() { @@ -190,6 +202,7 @@ public class Settings ", autoBackupActivated=" + autoBackupActivated + ", autoBackupDays=" + autoBackupDays + ", autoBackupTime=" + autoBackupTime + + ", autoBackupFilesToKeep=" + autoBackupFilesToKeep + '}'; } } \ No newline at end of file diff --git a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java index 722505a2219b3c7e7f8c3ece2b58719030ff852b..1051628f5e73f8dc4c17d90cdfd3607d91e7b5bf 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java @@ -112,6 +112,7 @@ public class SettingsController extends BaseController final Settings defaultSettings = Settings.getDefault(); settings.setAutoBackupDays(defaultSettings.getAutoBackupDays()); settings.setAutoBackupTime(defaultSettings.getAutoBackupTime()); + settings.setAutoBackupFilesToKeep(defaultSettings.getAutoBackupFilesToKeep()); } if(bindingResult.hasErrors()) diff --git a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsValidator.java b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsValidator.java index 31efe6b18219944e1f9d60a15c9d435717be3a0c..049596dd9f87a0b4c77bb73246e2dee5091e9c53 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsValidator.java +++ b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsValidator.java @@ -15,6 +15,7 @@ public class SettingsValidator implements Validator public void validate(Object obj, Errors errors) { - ValidationUtils.rejectIfEmptyOrWhitespace(errors, "autoBackupDays", Strings.WARNING_SETTINGS_EMPTY_SETTINGS_AUTO_BACKUP_DAYS); + ValidationUtils.rejectIfEmptyOrWhitespace(errors, "autoBackupDays", Strings.WARNING_EMPTY_NUMBER); + ValidationUtils.rejectIfEmptyOrWhitespace(errors, "autoBackupFilesToKeep", Strings.WARNING_EMPTY_NUMBER); } } \ No newline at end of file diff --git a/src/main/java/de/deadlocker8/budgetmaster/utils/Strings.java b/src/main/java/de/deadlocker8/budgetmaster/utils/Strings.java index 550b5ba93df092773840720ba45d2e625a2a73f3..f51bbe5a12fd6f08af0b548d9d104d184b0fccce 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/utils/Strings.java +++ b/src/main/java/de/deadlocker8/budgetmaster/utils/Strings.java @@ -38,9 +38,9 @@ public class Strings public static final String WARNING_SETTINGS_PASSWORD_LENGTH = "warning.settings.password.length"; public static final String WARNING_SETTINGS_PASSWORD_CONFIRMATION_EMPTY = "warning.settings.password.confirmation.empty"; public static final String WARNING_SETTINGS_PASSWORD_CONFIRMATION_WRONG = "warning.settings.password.confirmation.wrong"; - public static final String WARNING_SETTINGS_EMPTY_SETTINGS_AUTO_BACKUP_DAYS = "warning.settings.empty.auto.backup.days"; public static final String WARNING_EMPTY_CHART_NAME = "warning.empty.chart.name"; public static final String WARNING_EMPTY_CHART_SCRIPT = "warning.empty.chart.script"; + public static final String WARNING_EMPTY_NUMBER = "warning.empty.number"; //REPORT public static final String REPORT_FOOTER_LEFT = "report.footer.left"; diff --git a/src/main/resources/languages/_de.properties b/src/main/resources/languages/_de.properties index e4d6009ae765feed65d5f3fb9648836bbfdaeb69..ec30d6ac0361fe5c187887c0d37dee4b0b143a10 100644 --- a/src/main/resources/languages/_de.properties +++ b/src/main/resources/languages/_de.properties @@ -122,14 +122,13 @@ warning.duplicate.account.name=Es existiert bereits ein Konto mit diesem Namen. warning.empty.category.color=Die Kategoriefarbe darf nicht leer sein. warning.empty.transaction.name=Das Feld f�r den Namen darf nicht leer sein. warning.transaction.amount=Gib eine g�ltige Zahl f�r den Betrag ein. -warning.transaction.number=Gib eine g�ltige Zahl gr��er 0 ein. +warning.empty.number=Gib eine g�ltige Zahl gr��er 0 ein. warning.empty.transaction.date=Bitte w�hle ein Datum aus. warning.wrong.password=Das Passwort ist nicht korrekt. warning.settings.password.empty=Bitte gib ein Passwort ein. warning.settings.password.length=Das Passwort muss mindestens drei Zeichen lang sein. warning.settings.password.confirmation.empty=Bitte gib dein Passwort zur Best�tigung erneut ein. warning.settings.password.confirmation.wrong=Passwort und Passwort Wiederholung stimmen nicht �berein. -warning.settings.empty.auto.backup.days=Gib eine g�ltige Zahl gr��er 0 ein. warning.empty.chart.name=Bitte gib einen Namen ein. warning.empty.chart.script=Bitte gib ein Script ein. @@ -179,6 +178,7 @@ settings.backup.auto.deactivated=Aus settings.backup.auto.activated=An settings.backup.auto.days=Intervall in Tagen settings.backup.auto.time=Uhrzeit +settings.backup.auto.files.to.keep=Anzahl aufzubewahrender Backups settings.database.import=Importieren settings.database.export=Exportieren diff --git a/src/main/resources/languages/_en.properties b/src/main/resources/languages/_en.properties index 0fbd729b119a523a2733011bfbc13a73c839d2ad..fd7f42ff01203d9b39d6d5da65e212a155ef1d81 100644 --- a/src/main/resources/languages/_en.properties +++ b/src/main/resources/languages/_en.properties @@ -122,14 +122,13 @@ warning.duplicate.account.name=An account with this name is already existing. warning.empty.category.color=The category color should not be empty. warning.empty.transaction.name=The field for the name can not be empty. warning.transaction.amount=Please enter a valid number in the amount field. -warning.transaction.number=Please enter a valid number greater than 0. +warning.empty.number=Please enter a valid number greater than 0. warning.empty.transaction.date=Please select a date. warning.wrong.password=The password is not correct. warning.settings.password.empty=Please enter a password. warning.settings.password.length=The password must be at least three characters long. warning.settings.password.confirmation.empty=Please enter your password again for confirmation. warning.settings.password.confirmation.wrong=Password and password confirmation do not match. -warning.settings.empty.auto.backup.days=Please enter a valid number greater than 0. warning.empty.chart.name=Please insert a name. warning.empty.chart.script=Please insert a script. @@ -179,6 +178,7 @@ settings.backup.auto.deactivated=Off settings.backup.auto.activated=On settings.backup.auto.days=Interval in days settings.backup.auto.time=Time of day +settings.backup.auto.files.to.keep=Number of backups to keep settings.database.import=Import settings.database.export=Export diff --git a/src/main/resources/static/js/settings.js b/src/main/resources/static/js/settings.js index 3970e855c1cda67e15f0de96c63f8fffb135a628..886dc2089a95396d0cff5241d70e38ff034db5ff 100644 --- a/src/main/resources/static/js/settings.js +++ b/src/main/resources/static/js/settings.js @@ -26,6 +26,15 @@ $(document).ready(function() }); } + let autoBackupFilesToKeep= $('#settings-backup-auto-files-to-keep'); + if(autoBackupFilesToKeep.length) + { + autoBackupFilesToKeep.on('change keydown paste input', function() + { + validateNumber(autoBackupFilesToKeep.val(), "settings-backup-auto-files-to-keep", "hidden-settings-backup-auto-files-to-keep", numberValidationMessage); + }); + } + // on initial page load let autoBackupCheckbox = document.getElementsByName("autoBackupActivated")[0]; $('#settings-auto-backup').toggle(autoBackupCheckbox.checked); @@ -36,7 +45,9 @@ function validateForm() let autoBackupCheckbox = document.getElementsByName("autoBackupActivated")[0]; if(autoBackupCheckbox.checked) { - return validateNumber($('#settings-backup-auto-days').val(), 'settings-backup-auto-days', "hidden-settings-backup-auto-days", numberValidationMessage); + let autoBackupDaysValid = validateNumber($('#settings-backup-auto-days').val(), "settings-backup-auto-days", "hidden-settings-backup-auto-days", numberValidationMessage); + let autoBackupFilesToKeepValid = validateNumber($('#settings-backup-auto-files-to-keep').val(), "settings-backup-auto-files-to-keep", "hidden-settings-backup-auto-files-to-keepp", numberValidationMessage); + return autoBackupDaysValid && autoBackupFilesToKeepValid; } return true; diff --git a/src/main/resources/templates/settings/settings.ftl b/src/main/resources/templates/settings/settings.ftl index 3d677210ca1a6e7757b2c75624a54a07360d0ad5..06176c65fa4f5f84e99fc466ae2b272a1788774c 100644 --- a/src/main/resources/templates/settings/settings.ftl +++ b/src/main/resources/templates/settings/settings.ftl @@ -115,13 +115,19 @@ <input type="hidden" id="hidden-settings-backup-auto-days" name="autoBackupDays" value="<#if settings.getAutoBackupActivated()??>${settings.getAutoBackupDays()}</#if>"> <script> - numberValidationMessage = "${locale.getString("warning.transaction.number")}"; + numberValidationMessage = "${locale.getString("warning.empty.number")}"; </script> <div class="input-field col s12 m12 l8 offset-l2"> <input id="settings-backup-auto-time" type="text" name="autoBackupTime" <@validation.validation "autoBackupTime"/> value="<#if settings.getAutoBackupActivated()??>${settings.getAutoBackupTime().name()}</#if>"> <label for="settings-backup-auto-time">${locale.getString("settings.backup.auto.time")}</label> </div> + + <div class="input-field col s12 m12 l8 offset-l2"> + <input id="settings-backup-auto-files-to-keep" type="text" <@validation.validation "autoBackupFilesToKeep"/> value="<#if settings.getAutoBackupActivated()??>${settings.getAutoBackupFilesToKeep()}</#if>"> + <label for="settings-backup-auto-files-to-keep">${locale.getString("settings.backup.auto.files.to.keep")}</label> + </div> + <input type="hidden" id="hidden-settings-backup-auto-files-to-keep" name="autoBackupFilesToKeep" value="<#if settings.getAutoBackupActivated()??>${settings.getAutoBackupFilesToKeep()}</#if>"> </div> <br> diff --git a/src/main/resources/templates/transactions/newTransactionMacros.ftl b/src/main/resources/templates/transactions/newTransactionMacros.ftl index 6492928d7f5a0bcbc994e72dfa41750b0b94547c..93c4d0af7ec62fd5d700042596f00b72f939ba5a 100644 --- a/src/main/resources/templates/transactions/newTransactionMacros.ftl +++ b/src/main/resources/templates/transactions/newTransactionMacros.ftl @@ -74,7 +74,7 @@ <script> amountValidationMessage = "${locale.getString("warning.transaction.amount")}"; - numberValidationMessage = "${locale.getString("warning.transaction.number")}"; + numberValidationMessage = "${locale.getString("warning.empty.number")}"; </script> </#macro>