diff --git a/src/main/java/de/deadlocker8/budgetmaster/settings/Settings.java b/src/main/java/de/deadlocker8/budgetmaster/settings/Settings.java index 6439338033e8941b064f1366df88edcde2d81160..a1ee861e69f304736e21138f103e20e9c80d958f 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/settings/Settings.java +++ b/src/main/java/de/deadlocker8/budgetmaster/settings/Settings.java @@ -31,6 +31,7 @@ public class Settings private AutoBackupTime autoBackupTime; private Integer autoBackupFilesToKeep; + private String autoBackupGitUrl; private String autoBackupGitUserName; private String autoBackupGitPassword; @@ -57,8 +58,9 @@ public class Settings defaultSettings.setAutoBackupDays(1); defaultSettings.setAutoBackupTime(AutoBackupTime.TIME_00); defaultSettings.setAutoBackupFilesToKeep(3); - defaultSettings.setAutoBackupGitUserName(null); - defaultSettings.setAutoBackupGitPassword(null); + defaultSettings.setAutoBackupGitUrl(""); + defaultSettings.setAutoBackupGitUserName(""); + defaultSettings.setAutoBackupGitPassword(""); defaultSettings.setInstalledVersionCode(0); defaultSettings.setWhatsNewShownForCurrentVersion(false); defaultSettings.setShowFirstUseBanner(true); @@ -205,6 +207,16 @@ public class Settings this.autoBackupFilesToKeep = autoBackupFilesToKeep; } + public String getAutoBackupGitUrl() + { + return autoBackupGitUrl; + } + + public void setAutoBackupGitUrl(String autoBackupGitUrl) + { + this.autoBackupGitUrl = autoBackupGitUrl; + } + public String getAutoBackupGitUserName() { return autoBackupGitUserName; @@ -273,12 +285,13 @@ public class Settings ", backupReminderActivated=" + backupReminderActivated + ", lastBackupReminderDate=" + lastBackupReminderDate + ", searchItemsPerPage=" + searchItemsPerPage + + ", autoBackupStrategy=" + autoBackupStrategy + ", autoBackupDays=" + autoBackupDays + ", autoBackupTime=" + autoBackupTime + - ", backupStrategy=" + autoBackupStrategy + ", autoBackupFilesToKeep=" + autoBackupFilesToKeep + - ", gitUserName='" + autoBackupGitUserName + '\'' + - ", gitPassword='" + autoBackupGitPassword + '\'' + + ", autoBackupGitUrl='" + autoBackupGitUrl + '\'' + + ", autoBackupGitUserName='" + autoBackupGitUserName + '\'' + + ", autoBackupGitPassword='" + autoBackupGitPassword + '\'' + ", installedVersionCode=" + installedVersionCode + ", whatsNewShownForCurrentVersion=" + whatsNewShownForCurrentVersion + ", showFirstUseBanner=" + showFirstUseBanner + diff --git a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsService.java b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsService.java index 82c70a4ced42079da50ec719ddb5ba78520f1231..10f5c745fd3fe29d031063565f5c804df19135dd 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsService.java +++ b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsService.java @@ -77,6 +77,10 @@ public class SettingsService { settings.setAutoBackupFilesToKeep(defaultSettings.getAutoBackupFilesToKeep()); } + if(settings.getAutoBackupGitUrl() == null) + { + settings.setAutoBackupGitUrl(defaultSettings.getAutoBackupGitUrl()); + } if(settings.getAutoBackupGitUserName() == null) { settings.setAutoBackupGitUserName(defaultSettings.getAutoBackupGitUserName()); diff --git a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsValidator.java b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsValidator.java index e8588c343b428e41899ad5066447a2f6ad636125..74c3070bfc7b8344c94c4307cf3b11242cd98cc9 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsValidator.java +++ b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsValidator.java @@ -27,6 +27,7 @@ public class SettingsValidator implements Validator if(settings.getAutoBackupStrategy() == AutoBackupStrategy.GIT_REMOTE) { + ValidationUtils.rejectIfEmptyOrWhitespace(errors, "autoBackupGitUrl", Strings.WARNING_EMPTY_GIT_URL); ValidationUtils.rejectIfEmptyOrWhitespace(errors, "autoBackupGitUserName", Strings.WARNING_EMPTY_GIT_USER_NAME); ValidationUtils.rejectIfEmptyOrWhitespace(errors, "autoBackupGitPassword", Strings.WARNING_EMPTY_GIT_PASSWORD); } diff --git a/src/main/java/de/deadlocker8/budgetmaster/utils/Strings.java b/src/main/java/de/deadlocker8/budgetmaster/utils/Strings.java index bfbd8ab6af8bf8fde47411bc04a63a72468f688a..a812f55b47d2c932c754a78d89c9626104fa88ef 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/utils/Strings.java +++ b/src/main/java/de/deadlocker8/budgetmaster/utils/Strings.java @@ -29,6 +29,7 @@ public class Strings public static final String WARNING_EMPTY_NUMBER = "warning.empty.number"; public static final String WARNING_EMPTY_NUMBER_ZERO_ALLOWED = "warning.empty.number.zero.allowed"; public static final String WARNING_DUPLICATE_TEMPLATE_NAME = "warning.duplicate.template.name"; + public static final String WARNING_EMPTY_GIT_URL = "warning.empty.git.url"; public static final String WARNING_EMPTY_GIT_USER_NAME = "warning.empty.git.user.name"; public static final String WARNING_EMPTY_GIT_PASSWORD = "warning.empty.git.password"; diff --git a/src/main/resources/languages/base_de.properties b/src/main/resources/languages/base_de.properties index 2312ce233c1020267e338bde10bc694e91b01a5e..8d0c447b60a082c26e79f09e2c7472fb79ee1834 100644 --- a/src/main/resources/languages/base_de.properties +++ b/src/main/resources/languages/base_de.properties @@ -144,6 +144,7 @@ warning.empty.chart.name=Bitte gib einen Namen ein. warning.empty.chart.script=Bitte gib ein Script ein. warning.duplicate.template.name=Es existiert bereits eine Vorlage mit diesem Namen. warning.transaction.date=Das angegebene Datum entspricht nicht dem erlaubten Format. Erwartetes Format: DD.MM.YY, DDMMYY, DD.MM.YYYY, DDMMYYYY. +warning.empty.git.user.url=Bitte gib die URL zum git-Server ein. warning.empty.git.user.name=Bitte gib deinen git-Nutzernamen ein. warning.empty.git.password=Bitte gib dein git-Passwort ein. @@ -207,6 +208,9 @@ settings.backup.auto.strategy.git.local=Lokales git repository settings.backup.auto.strategy.git.remote=Entferntes git repository settings.backup.auto.files.to.keep=Anzahl aufzubewahrender Backups (0 für unbegrenzt) settings.backup.auto.next=Nächste Ausführung +settings.backup.auto.git.url=Adresse des Git-Servers +settings.backup.auto.git.user.name=Git Nutzername +settings.backup.auto.git.password=Git Passwort settings.database.import=Importieren settings.database.export=Exportieren diff --git a/src/main/resources/languages/base_en.properties b/src/main/resources/languages/base_en.properties index 0563900e0e1a85c2d3a4a0cd291175f75d38b27f..95d69f58374a23c78cc3ebb77ddf4361c1568d27 100644 --- a/src/main/resources/languages/base_en.properties +++ b/src/main/resources/languages/base_en.properties @@ -144,8 +144,9 @@ warning.empty.chart.name=Please insert a name. warning.empty.chart.script=Please insert a script. warning.duplicate.template.name=A template with this name is already existing. warning.transaction.date=The specified date does not correspond to the allowed format. Expected format: DD.MM.YY, DDMMYY, DD.MM.YYYY, DDMMYYYY. +warning.empty.git.user.url=Please insert the git server's URL. warning.empty.git.user.name=Please insert your git user name. -warning.empty.git.password=Please insert yout git password. +warning.empty.git.password=Please insert your git password. # UI @@ -207,6 +208,9 @@ settings.backup.auto.strategy.git.local=Local git repository settings.backup.auto.strategy.git.remote=Remote git repository settings.backup.auto.files.to.keep=Number of backups to keep (0 for unlimited) settings.backup.auto.next=Next execution +settings.backup.auto.git.url=Git server address +settings.backup.auto.git.user.name=Git user name +settings.backup.auto.git.password=Git password settings.database.import=Import settings.database.export=Export diff --git a/src/main/resources/templates/settings/settings.ftl b/src/main/resources/templates/settings/settings.ftl index ec03c7909fb4e91927056f2e09aff87753846a06..689bd7aff4e7f88bc0cf32c2b1d8921bff232e1c 100644 --- a/src/main/resources/templates/settings/settings.ftl +++ b/src/main/resources/templates/settings/settings.ftl @@ -116,58 +116,7 @@ </div> </div> - <div class="row" id="settings-auto-backup"> - <div class="input-field col s12 m12 l8 offset-l2"> - <i class="material-icons prefix">event</i> - <input id="settings-backup-auto-days" type="text" <@validation.validation "autoBackupDays"/> value="<#if settings.isAutoBackupActive()??>${settings.getAutoBackupDays()}</#if>"> - <label for="settings-backup-auto-days">${locale.getString("settings.backup.auto.days")}</label> - </div> - <input type="hidden" id="hidden-settings-backup-auto-days" name="autoBackupDays" value="<#if settings.isAutoBackupActive()??>${settings.getAutoBackupDays()}</#if>"> - - <script> - numberValidationMessage = "${locale.getString("warning.empty.number")}"; - numberValidationMessageZeroAllowed = "${locale.getString("warning.empty.number.zero.allowed")}"; - </script> - - <div class="input-field col s12 m12 l8 offset-l2"> - <i class="material-icons prefix">schedule</i> - <select id="settings-backup-auto-time" name="autoBackupTime" <@validation.validation "autoBackupTime"/>> - <#list autoBackupTimes as time> - <#if settings.getAutoBackupTime() == time> - <option selected value="${time}">${time.getLocalized()}</option> - <#else> - <option value="${time}">${time.getLocalized()}</option> - </#if> - </#list> - </select> - <label for="settings-backup-auto-time">${locale.getString("settings.backup.auto.time")}</label> - </div> - - <div class="input-field col s12 m12 l8 offset-l2"> - <i class="material-icons prefix">source</i> - <select id="settings-backup-auto-strategy" name="autoBackupStrategyType"> - <#list helpers.getAvailableAutoBackupStrategies() as strategy> - <#if settings.getAutoBackupStrategy() == strategy> - <option selected value="${strategy.getName()}">${strategy.getName()}</option> - <#else> - <option value="${strategy.getName()}">${strategy.getName()}</option> - </#if> - </#list> - </select> - <label for="settings-language">${locale.getString("settings.backup.auto.strategy")}</label> - </div> - - <div class="input-field col s12 m12 l8 offset-l2"> - <i class="material-icons prefix">auto_delete</i> - <input id="settings-backup-auto-files-to-keep" type="text" <@validation.validation "autoBackupFilesToKeep"/> value="<#if settings.isAutoBackupActive()??>${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.isAutoBackupActive()??>${settings.getAutoBackupFilesToKeep()}</#if>"> - - <div class="col s12 m12 l8 offset-l2"> - ${locale.getString("settings.backup.auto.next")}: <#if nextBackupTime??>${dateService.getDateTimeString(nextBackupTime)}<#else>-</#if> - </div> - </div> + <@settingsMacros.autoBackup/> <br> diff --git a/src/main/resources/templates/settings/settingsMacros.ftl b/src/main/resources/templates/settings/settingsMacros.ftl index b965e0e625526625e5f4df72f36b77051f10fff9..b12710956aeb83dc4082d52ad8d0de3e33feea3d 100644 --- a/src/main/resources/templates/settings/settingsMacros.ftl +++ b/src/main/resources/templates/settings/settingsMacros.ftl @@ -155,4 +155,77 @@ <a href="<@s.url '/settings/performUpdate'/>" class="modal-action modal-close waves-effect waves-light green btn-flat white-text">${locale.getString("settings.update.start")}</a> </div> </div> +</#macro> + +<#macro autoBackup> + <div class="row" id="settings-auto-backup"> + <div class="input-field col s12 m12 l8 offset-l2"> + <i class="material-icons prefix">event</i> + <input id="settings-backup-auto-days" type="text" <@validation.validation "autoBackupDays"/> value="<#if settings.isAutoBackupActive()??>${settings.getAutoBackupDays()}</#if>"> + <label for="settings-backup-auto-days">${locale.getString("settings.backup.auto.days")}</label> + </div> + <input type="hidden" id="hidden-settings-backup-auto-days" name="autoBackupDays" value="<#if settings.isAutoBackupActive()??>${settings.getAutoBackupDays()}</#if>"> + + <script> + numberValidationMessage = "${locale.getString("warning.empty.number")}"; + numberValidationMessageZeroAllowed = "${locale.getString("warning.empty.number.zero.allowed")}"; + </script> + + <div class="input-field col s12 m12 l8 offset-l2"> + <i class="material-icons prefix">schedule</i> + <select id="settings-backup-auto-time" name="autoBackupTime" <@validation.validation "autoBackupTime"/>> + <#list autoBackupTimes as time> + <#if settings.getAutoBackupTime() == time> + <option selected value="${time}">${time.getLocalized()}</option> + <#else> + <option value="${time}">${time.getLocalized()}</option> + </#if> + </#list> + </select> + <label for="settings-backup-auto-time">${locale.getString("settings.backup.auto.time")}</label> + </div> + + <div class="input-field col s12 m12 l8 offset-l2"> + <i class="material-icons prefix">source</i> + <select id="settings-backup-auto-strategy" name="autoBackupStrategyType"> + <#list helpers.getAvailableAutoBackupStrategies() as strategy> + <#if settings.getAutoBackupStrategy() == strategy> + <option selected value="${strategy.getName()}">${strategy.getName()}</option> + <#else> + <option value="${strategy.getName()}">${strategy.getName()}</option> + </#if> + </#list> + </select> + <label for="settings-language">${locale.getString("settings.backup.auto.strategy")}</label> + </div> + + <div class="input-field col s12 m12 l8 offset-l2"> + <i class="material-icons prefix">auto_delete</i> + <input id="settings-backup-auto-files-to-keep" type="text" <@validation.validation "autoBackupFilesToKeep"/> value="<#if settings.isAutoBackupActive()??>${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.isAutoBackupActive()??>${settings.getAutoBackupFilesToKeep()}</#if>"> + + <div class="input-field col s12 m12 l8 offset-l2"> + <i class="material-icons prefix">language</i> + <input id="settings-backup-auto-git-url" name="autoBackupGitUrl" type="text" <@validation.validation "autoBackupGitUrl"/> value="<#if settings.isAutoBackupActive()??>${settings.getAutoBackupGitUrl()}</#if>"> + <label for="settings-backup-auto-git-url">${locale.getString("settings.backup.auto.git.url")}</label> + </div> + + <div class="input-field col s12 m12 l8 offset-l2"> + <i class="material-icons prefix">person</i> + <input id="settings-backup-auto-git-user-name" name="autoBackupGitUserName" type="text" <@validation.validation "autoBackupGitUserName"/> value="<#if settings.isAutoBackupActive()??>${settings.getAutoBackupGitUserName()}</#if>"> + <label for="settings-backup-auto-git-user-name">${locale.getString("settings.backup.auto.git.user.name")}</label> + </div> + + <div class="input-field col s12 m12 l8 offset-l2"> + <i class="material-icons prefix">vpn_key</i> + <input id="settings-backup-auto-git-password" name="autoBackupGitPassword" type="text" <@validation.validation "autoBackupGitPassword"/> value="<#if settings.isAutoBackupActive()??>${settings.getAutoBackupGitPassword()}</#if>"> + <label for="settings-backup-auto-git-password">${locale.getString("settings.backup.auto.git.password")}</label> + </div> + + <div class="col s12 m12 l8 offset-l2"> + ${locale.getString("settings.backup.auto.next")}: <#if nextBackupTime??>${dateService.getDateTimeString(nextBackupTime)}<#else>-</#if> + </div> + </div> </#macro> \ No newline at end of file