From 5c506efd14a8c3718261d60188dd69f5ef52ccce Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Wed, 18 Nov 2020 16:53:02 +0100 Subject: [PATCH] #518 - info note on home page dismissible --- .../budgetmaster/settings/Settings.java | 13 +++++++++++ .../settings/SettingsController.java | 11 ++++++--- .../settings/SettingsService.java | 11 +++++++++ src/main/resources/static/css/dark/style.css | 23 ++++++++++++++----- src/main/resources/static/css/style.css | 23 ++++++++++++++----- src/main/resources/templates/index.ftl | 15 +++--------- .../resources/templates/indexFunctions.ftl | 18 +++++++++++++++ 7 files changed, 87 insertions(+), 27 deletions(-) diff --git a/src/main/java/de/deadlocker8/budgetmaster/settings/Settings.java b/src/main/java/de/deadlocker8/budgetmaster/settings/Settings.java index 34ef95c5e..cc8edcb12 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 bba8197de..8080f5179 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 77a2a66b2..1bc4e724c 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 3f2128a97..5839a347f 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 3eb13f185..c4a384691 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 8d26f6690..c7f67f48b 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 e729977e0..c9b2888b5 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 -- GitLab