diff --git a/src/main/java/de/deadlocker8/budgetmaster/settings/Settings.java b/src/main/java/de/deadlocker8/budgetmaster/settings/Settings.java index 34ef95c5eb9b8e044e5d2ab203a560febd38301e..cc8edcb1207de674e68907b98b555052c2527336 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/settings/Settings.java +++ b/src/main/java/de/deadlocker8/budgetmaster/settings/Settings.java @@ -30,6 +30,7 @@ public class Settings private Integer autoBackupFilesToKeep; private Integer installedVersionCode; private Boolean whatsNewShownForCurrentVersion; + private Boolean showFirstUseBanner; public Settings() { @@ -52,6 +53,7 @@ public class Settings defaultSettings.setAutoBackupFilesToKeep(3); defaultSettings.setInstalledVersionCode(0); defaultSettings.setWhatsNewShownForCurrentVersion(false); + defaultSettings.setShowFirstUseBanner(true); return defaultSettings; } @@ -215,6 +217,16 @@ public class Settings return !this.whatsNewShownForCurrentVersion; } + public Boolean getShowFirstUseBanner() + { + return showFirstUseBanner; + } + + public void setShowFirstUseBanner(Boolean showFirstUseBanner) + { + this.showFirstUseBanner = showFirstUseBanner; + } + @Override public String toString() { @@ -234,6 +246,7 @@ public class Settings ", autoBackupFilesToKeep=" + autoBackupFilesToKeep + ", installedVersionCode=" + installedVersionCode + ", whatsNewShownForCurrentVersion=" + whatsNewShownForCurrentVersion + + ", showFirstUseBanner=" + showFirstUseBanner + '}'; } } \ 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 bba8197dee91cda758477022a59421d7a5b92b8e..8080f5179ce3eb70a836f972f077283b1e8af607 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java @@ -11,8 +11,8 @@ import de.deadlocker8.budgetmaster.database.Database; import de.deadlocker8.budgetmaster.database.DatabaseParser; import de.deadlocker8.budgetmaster.database.DatabaseService; import de.deadlocker8.budgetmaster.database.accountmatches.AccountMatchList; -import de.deadlocker8.budgetmaster.services.ImportService; import de.deadlocker8.budgetmaster.services.BackupService; +import de.deadlocker8.budgetmaster.services.ImportService; import de.deadlocker8.budgetmaster.update.BudgetMasterUpdateService; import de.deadlocker8.budgetmaster.utils.LanguageType; import de.deadlocker8.budgetmaster.utils.Mappings; @@ -21,8 +21,6 @@ import de.thecodelabs.utils.util.Localization; import de.thecodelabs.utils.util.RandomUtils; import de.thecodelabs.versionizer.UpdateItem; import org.joda.time.DateTime; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Controller; @@ -340,4 +338,11 @@ public class SettingsController extends BaseController return ""; } + + @RequestMapping("/hideFirstUseBanner") + public String hideFirstUseBanner() + { + settingsService.disableFirstUseBanner(); + return "redirect:/"; + } } \ No newline at end of file diff --git a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsService.java b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsService.java index 77a2a66b23c425dedb22e4dfabced843ddcbf4f0..1bc4e724cd5e2c7f54778104c8f1032b1663afc3 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsService.java +++ b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsService.java @@ -85,6 +85,10 @@ public class SettingsService { settings.setWhatsNewShownForCurrentVersion(defaultSettings.getWhatsNewShownForCurrentVersion()); } + if(settings.getShowFirstUseBanner() == null) + { + settings.setShowFirstUseBanner(defaultSettings.getShowFirstUseBanner()); + } } @SuppressWarnings("OptionalGetWithoutIsPresent") @@ -100,6 +104,13 @@ public class SettingsService settings.setLastBackupReminderDate(DateTime.now()); } + @Transactional + public void disableFirstUseBanner() + { + Settings settings = getSettings(); + settings.setShowFirstUseBanner(false); + } + @Transactional public void updateSettings(Settings newSettings) { diff --git a/src/main/resources/static/css/dark/style.css b/src/main/resources/static/css/dark/style.css index 3f2128a97c6f4e78a102302d590e43dd5563484d..5839a347ffc4c40ee1d7963003d7f8b472e2f5da 100644 --- a/src/main/resources/static/css/dark/style.css +++ b/src/main/resources/static/css/dark/style.css @@ -422,22 +422,33 @@ textarea { max-height: 13vmin; } -.home-firstUse { +.home-firstUseBanner-wrapper { + display: inline-block; +} + +.home-firstUseBanner { border: 2px solid white; border-radius: 5px; padding: 0 1vmin; - display: inline-block; + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + font-size: 1.8vmin; } -.home-firstUse td{ - padding: 10px; - font-size: 1.8vmin; +.home-firstUseBanner-item { + padding: 10px 0 10px 10px; } -.home-firstUse i { +.home-firstUseBanner i { font-size: 2.5vmin; } +.home-firstUseBanner-clear i { + font-size: 1.8vmin; +} + .break-all { word-break: break-all; } diff --git a/src/main/resources/static/css/style.css b/src/main/resources/static/css/style.css index 3eb13f1859e6d2175dc428b6e3700b67e70a32be..c4a3846912b07643054bff8760fdc73d4463b3fa 100644 --- a/src/main/resources/static/css/style.css +++ b/src/main/resources/static/css/style.css @@ -369,22 +369,33 @@ ul.sidenav.sidenav-fixed > li:last-child max-height: 13vmin; } -.home-firstUse { +.home-firstUseBanner-wrapper { + display: inline-block; +} + +.home-firstUseBanner { border: 2px solid #212121; border-radius: 5px; padding: 0 1vmin; - display: inline-block; + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + font-size: 1.8vmin; } -.home-firstUse td{ - padding: 10px; - font-size: 1.8vmin; +.home-firstUseBanner-item { + padding: 10px 0 10px 10px; } -.home-firstUse i { +.home-firstUseBanner i { font-size: 2.5vmin; } +.home-firstUseBanner-clear i { + font-size: 1.8vmin; +} + .break-all { word-break: break-all; } diff --git a/src/main/resources/templates/index.ftl b/src/main/resources/templates/index.ftl index 8d26f66904b9a4df93892902d731b54b7e90cc64..c7f67f48be85b899574052f19675bfbc08213538 100644 --- a/src/main/resources/templates/index.ftl +++ b/src/main/resources/templates/index.ftl @@ -22,18 +22,9 @@ </div> </div> - <div class="row"> - <div class="col s12 center-align"> - <a href="<@s.url "/firstUse"/>" class="home-firstUse"> - <table class="no-border-table"> - <tr> - <td><i class="fas fa-graduation-cap"></i></td> - <td>${locale.getString("home.first.use.teaser")}</td> - </tr> - </table> - </a> - </div> - </div> + <#if settings.getShowFirstUseBanner()> + <@indexFunctions.firstUseBanner/> + </#if> <div class="hide-on-small-only"><br></div> diff --git a/src/main/resources/templates/indexFunctions.ftl b/src/main/resources/templates/indexFunctions.ftl index e729977e0d8967083e61978ff45e7ec6c5893df0..c9b2888b5ca39dc0d7a476d3018655173ded89c8 100644 --- a/src/main/resources/templates/indexFunctions.ftl +++ b/src/main/resources/templates/indexFunctions.ftl @@ -29,4 +29,22 @@ <@indexFunctions.action url=actionUrl name=actionName/> </#if> </p> +</#macro> + +<#macro firstUseBanner> + <div class="row"> + <div class="col s12 center-align"> + <div class="home-firstUseBanner-wrapper"> + <div class="home-firstUseBanner text-color"> + <a href="<@s.url "/firstUse"/>" class="text-color"> + <i class="fas fa-graduation-cap home-firstUseBanner-item"></i> + <span class="home-firstUseBanner-item">${locale.getString("home.first.use.teaser")}</span> + </a> + <a href="<@s.url "/settings/hideFirstUseBanner"/>" class="text-color home-firstUseBanner-item home-firstUseBanner-clear"> + <i class="material-icons">clear</i> + </a> + </div> + </div> + </div> + </div> </#macro> \ No newline at end of file