Skip to content
Snippets Groups Projects
Commit 56ad89d3 authored by Robert Goldmann's avatar Robert Goldmann
Browse files

#411 - added backup reminder modal to index page

parent d05b0c0e
No related branches found
No related tags found
No related merge requests found
Pipeline #1017 passed
Showing
with 99 additions and 18 deletions
package de.deadlocker8.budgetmaster.controller;
import de.deadlocker8.budgetmaster.settings.SettingsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
@Controller
public class BackupController extends BaseController
{
@Autowired
private SettingsService settingsService;
@RequestMapping("/backupReminder/cancel")
public String cancel(HttpServletRequest request, Model model)
{
settingsService.updateLastBackupReminderDate();
model.addAttribute("settings", settingsService.getSettings());
return "redirect:" + request.getHeader("Referer");
}
@RequestMapping("/backupReminder/settings")
public String settings(Model model)
{
settingsService.updateLastBackupReminderDate();
return "redirect:/settings";
}
}
\ No newline at end of file
package de.deadlocker8.budgetmaster.controller;
import de.deadlocker8.budgetmaster.settings.SettingsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class IndexController extends BaseController
{
@Autowired
private SettingsService settingsService;
@RequestMapping("/")
public String index()
public String index(Model model)
{
model.addAttribute("settings", settingsService.getSettings());
return "index";
}
}
\ No newline at end of file
package de.deadlocker8.budgetmaster.settings;
import de.deadlocker8.budgetmaster.utils.LanguageType;
import org.joda.time.DateTime;
import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.Entity;
import javax.persistence.Id;
......@@ -15,8 +17,10 @@ public class Settings
private boolean restActivated;
private boolean useDarkTheme;
private boolean autoUpdateCheckEnabled;
private Boolean backupReminderActivated;
private Boolean backupReminderShownThisMonth;
@DateTimeFormat(pattern = "dd.MM.yyyy")
private DateTime lastBackupReminderDate;
public Settings()
{
......@@ -31,7 +35,7 @@ public class Settings
defaultSettings.setUseDarkTheme(false);
defaultSettings.setAutoUpdateCheckEnabled(true);
defaultSettings.setBackupReminderActivated(true);
defaultSettings.setBackupReminderShownThisMonth(false);
defaultSettings.setLastBackupReminderDate(DateTime.now().minusMonths(1));
return defaultSettings;
}
......@@ -91,7 +95,7 @@ public class Settings
this.autoUpdateCheckEnabled = autoUpdateCheckEnabled;
}
public Boolean isBackupReminderActivated()
public Boolean getBackupReminderActivated()
{
return backupReminderActivated;
}
......@@ -101,14 +105,19 @@ public class Settings
this.backupReminderActivated = backupReminderActivated;
}
public Boolean isBackupReminderShownThisMonth()
public DateTime getLastBackupReminderDate()
{
return lastBackupReminderDate;
}
public void setLastBackupReminderDate(DateTime lastBackupReminderDate)
{
return backupReminderShownThisMonth;
this.lastBackupReminderDate = lastBackupReminderDate;
}
public void setBackupReminderShownThisMonth(Boolean backupReminderShownThisMonth)
public boolean needToShowBackupReminder()
{
this.backupReminderShownThisMonth = backupReminderShownThisMonth;
return lastBackupReminderDate.getMonthOfYear() != DateTime.now().getMonthOfYear();
}
@Override
......@@ -122,7 +131,7 @@ public class Settings
", useDarkTheme=" + useDarkTheme +
", autoUpdateCheckEnabled=" + autoUpdateCheckEnabled +
", backupReminderActivated=" + backupReminderActivated +
", backupReminderShownThisMonth=" + backupReminderShownThisMonth +
", lastBackupReminderDate=" + lastBackupReminderDate +
'}';
}
}
\ No newline at end of file
package de.deadlocker8.budgetmaster.settings;
import de.deadlocker8.budgetmaster.accounts.Account;
import de.deadlocker8.budgetmaster.accounts.AccountType;
import org.joda.time.DateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -29,13 +28,13 @@ public class SettingsService
}
Settings settings = settingsRepository.findOne(0);
if(settings.isBackupReminderActivated() == null)
if(settings.getBackupReminderActivated() == null)
{
settings.setBackupReminderActivated(true);
}
if(settings.isBackupReminderShownThisMonth() == null)
if(settings.getLastBackupReminderDate() == null)
{
settings.setBackupReminderShownThisMonth(false);
settings.setLastBackupReminderDate(DateTime.now().minusMonths(1));
}
settingsRepository.delete(0);
settingsRepository.save(settings);
......@@ -45,4 +44,12 @@ public class SettingsService
{
return settingsRepository.findOne(0);
}
public void updateLastBackupReminderDate()
{
Settings settings = getSettings();
settings.setLastBackupReminderDate(DateTime.now());
settingsRepository.delete(0);
settingsRepository.save(settings);
}
}
\ No newline at end of file
......@@ -94,6 +94,9 @@ info.database.import.destination=importieren in
info.database.import.or=oder
info.title.update=Update verfgbar
info.text.update=Es ist ein Update fr BudgetMaster verfgbar<br><br>Installiert: v{0}<br>Verfgbar: {1}<br><br>Mchtest du das Update jetzt durchfhren?<br><br>Hinweis: Das Aktualisieren kann je nach Internetverbindung eine Weile dauern. Der BudgetMaster Server wird danach automatisch nuegestartet. Bitte fhre nach dem Start des Updates keine nderungen an Konten, Buchungen, Kategorien, etc. durch.
info.title.backup.reminder=Zeit fr ein Backup
info.text.backup.reminder=Schon mal ber ein Backup nachgedacht?<br>Du solltest deine BudgetMaster Datenbank regelmig sichern.<br>Dies geht besonders einfach in den Einstellungen.<br><br>(Du wilst diese Erinnerung nicht jeden Monat sehen? Dann deaktiviere die Backup-Erinnerung in den Einstellungen.)
info.button.backup.reminder=Zu den Einstellungen
# WARNING
warning.text.account.delete=Das Konto "{0}" kann nicht gelscht werden, da mindestens ein Konto existieren muss. Um dieses Konto zu lschen musst du zuerst ein neues anlegen.
......
......@@ -95,6 +95,9 @@ info.database.import.destination=to
info.database.import.or=or
info.title.update=Update available
info.text.update=An update for BudgetMaster is available<br><br>Installed: v{0}<br>Available: {1}<br><br>Would you like to update now?<br><br>Note: The update may take a while depending on your internet connection. The BudgetMaster server will be restarted automatically. Please do not make any changes to accounts, transactions, categories, etc. after starting the update.
info.title.backup.reminder=Time for a backup
info.text.backup.reminder=Have you ever thought about a backup?<br>You should back up your BudgetMaster database regularly.<br>This can be donee on the settings page.<br><br>(You don't want to see this reminder every month? Disable the backup reminder in the settings.)
info.button.backup.reminder=To the settings
# WARNING
warning.text.account.delete=The account "{0}" could not be deleted, because at least one account must exist at all time. You have to create a new account in order to delete this one.
......
$( document ).ready(function() {
if($("#modalConfirmDelete").length)
{
$('#modalConfirmDelete').modal('open');
......
......@@ -3,6 +3,11 @@ $( document ).ready(function() {
$('.modal').modal();
if($("#modalBackupReminder").length)
{
$('#modalBackupReminder').modal('open');
}
$('.tooltipped').tooltip();
$('select').formSelect();
......
......@@ -132,3 +132,18 @@
</ul>
</li>
</#macro>
<#macro backupReminder settings>
<#if settings.needToShowBackupReminder()>
<div id="modalBackupReminder" class="modal background-color">
<div class="modal-content">
<h4>${locale.getString("info.title.backup.reminder")}</h4>
<p>${locale.getString("info.text.backup.reminder")}</p>
</div>
<div class="modal-footer background-color">
<a href="<@s.url '/backupReminder/cancel'/>" class="modal-action modal-close waves-effect waves-light red btn-flat white-text">${locale.getString("cancel")}</a>
<a href="<@s.url '/backupReminder/settings'/>" class="modal-action modal-close waves-effectwaves-light green btn-flat white-text">${locale.getString("info.button.backup.reminder")}</a>
</div>
</div>
</#if>
</#macro>
\ No newline at end of file
......@@ -7,6 +7,7 @@
<body class="budgetmaster-blue-light">
<#import "helpers/navbar.ftl" as navbar>
<@navbar.navbar "home"/>
<@navbar.backupReminder settings/>
<main>
<div class="card main-card background-color">
......
......@@ -22,7 +22,7 @@
<form name="Settings" action="<@s.url '/settings/save'/>" method="post">
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
<input type="hidden" name="ID" value="${settings.getID()?c}">
<input type="hidden" name="backupReminderShownThisMonth" value="${settings.isBackupReminderShownThisMonth()?c}">
<input type="hidden" name="lastBackupReminderDate" value="${helpers.getLongDateString(settings.getLastBackupReminderDate())}">
<#-- password -->
<div class="row">
......
......@@ -14,7 +14,7 @@
</div>
<div class="row">
<div class="col s12 center-align">
<@switch "backupReminder" "backupReminderActivated" settings.isBackupReminderActivated()/>
<@switch "backupReminder" "backupReminderActivated" settings.getBackupReminderActivated()/>
</div>
</div>
</div>
......@@ -27,7 +27,7 @@
<@switch "darkTheme" "useDarkTheme" settings.isUseDarkTheme()/>
</div>
<div class="col l2 center-align">
<@switch "backupReminder" "backupReminderActivated" settings.isBackupReminderActivated()/>
<@switch "backupReminder" "backupReminderActivated" settings.getBackupReminderActivated()/>
</div>
</div>
</div>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment