From 98dfd5daa77c9e6bd3a507b75a497cf50b6be9cd Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sun, 25 Apr 2021 22:31:24 +0200 Subject: [PATCH] #576 - redirect to result page after import --- .../settings/SettingsController.java | 13 +---- .../resources/languages/base_de.properties | 2 +- .../resources/languages/base_en.properties | 2 +- .../templates/settings/importResult.ftl | 58 +++++++++++++++++++ 4 files changed, 63 insertions(+), 12 deletions(-) create mode 100644 src/main/resources/templates/settings/importResult.ftl diff --git a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java index 9f7e053d7..37e2b2f29 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java @@ -315,19 +315,12 @@ public class SettingsController extends BaseController final Boolean importCharts = (Boolean) request.getAttribute("importCharts", RequestAttributes.SCOPE_SESSION); request.removeAttribute("importCharts", RequestAttributes.SCOPE_SESSION); - final Map<EntityType, Integer> numberOfImportedEntitiesByType = importService.importDatabase(database, accountMatchList, importTemplates, importCharts); prepareBasicModel(model, settingsService.getSettings()); - final String message = Localization.getString("notification.settings.database.import.success", - numberOfImportedEntitiesByType.get(EntityType.ACCOUNT), - numberOfImportedEntitiesByType.get(EntityType.TRANSACTION), - numberOfImportedEntitiesByType.get(EntityType.CATEGORY), - numberOfImportedEntitiesByType.get(EntityType.TEMPLATE), - numberOfImportedEntitiesByType.get(EntityType.CHART), - numberOfImportedEntitiesByType.get(EntityType.IMAGE)); - WebRequestUtils.putNotification(request, new Notification(message, NotificationType.SUCCESS)); + final Map<EntityType, Integer> numberOfImportedEntitiesByType = importService.importDatabase(database, accountMatchList, importTemplates, importCharts); + model.addAttribute("numberOfImportedEntitiesByType", numberOfImportedEntitiesByType); - return "settings/settings"; + return "settings/importResult"; } @GetMapping("/updateSearch") diff --git a/src/main/resources/languages/base_de.properties b/src/main/resources/languages/base_de.properties index d7a4cf75a..bb74c87f8 100644 --- a/src/main/resources/languages/base_de.properties +++ b/src/main/resources/languages/base_de.properties @@ -128,6 +128,7 @@ info.header.text.database.delete=Soll die Datenbank wirklich unwiderruflich gel info.text.database.delete=Zur Bestätigung gib folgenden Code ein:\t{0} info.title.database.import.dialog=Datenbank importieren info.database.import=Folgende Daten werden importiert +info.database.import.result=Import abgeschlossen info.database.import.match.accounts=Konten zuordnen info.database.import.source=Buchungen aus info.database.import.destination=importieren in @@ -140,7 +141,6 @@ info.button.backup.reminder=Zu den Einstellungen notification.settings.saved=Einstellungen gespeichert notification.settings.update.available=BudgetMaster Update "{0}" verfügbar notification.settings.database.delete.success=Datenbank erfolgreich gelöscht -notification.settings.database.import.success=Import erfolgreich: {0} Konten, {1} Buchungen, {2} Kategorien, {3} Vorlagen, {4} Diagramme und {5} Bilder upload.image.success=Erfolgreich hochgeladen upload.image.error=Fehler: {0} upload.image.error.no.file=Fehler: Keine Datei für Upload angegeben diff --git a/src/main/resources/languages/base_en.properties b/src/main/resources/languages/base_en.properties index 76cc271e2..b654fcc14 100644 --- a/src/main/resources/languages/base_en.properties +++ b/src/main/resources/languages/base_en.properties @@ -128,6 +128,7 @@ info.header.text.database.delete=Do you really want to delete the database? This info.text.database.delete=Please enter the following code for verification:\t{0} info.title.database.import.dialog=Import database info.database.import=The following data will be imported +info.database.import.result=Import completed info.database.import.match.accounts=Assign accounts info.database.import.source=Import transactions from info.database.import.destination=to @@ -140,7 +141,6 @@ info.button.backup.reminder=To the settings notification.settings.saved=Settings saved notification.settings.update.available=BudgetMaster update "{0}" available notification.settings.database.delete.success=Successfully deleted database -notification.settings.database.import.success=Import successful: {0} accounts, {1} transactions, {2} categories, {3} templates, {4} charts and {5} images upload.image.success=Upload successful upload.image.error=Error: {0} upload.image.error.no.file=Error: No file provided for upload diff --git a/src/main/resources/templates/settings/importResult.ftl b/src/main/resources/templates/settings/importResult.ftl new file mode 100644 index 000000000..3b3aedd43 --- /dev/null +++ b/src/main/resources/templates/settings/importResult.ftl @@ -0,0 +1,58 @@ +<html> + <head> + <#import "../helpers/header.ftl" as header> + <@header.globals/> + <@header.header "BudgetMaster - ${locale.getString('settings.database.import')}"/> + <#import "/spring.ftl" as s> + </head> + <@header.body> + <#import "../helpers/navbar.ftl" as navbar> + <@navbar.navbar "settings" settings/> + + <main> + <div class="card main-card background-color"> + <div class="container"> + <div class="section center-align"> + <div class="headline">${locale.getString("info.title.database.import.dialog")}</div> + </div> + </div> + + <div class="container"> + <div class="section center-align"> + <div class="headline-small">${locale.getString("info.database.import.result")}</div> + </div> + </div> + + <div class="container"> + <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/> + + <div class="row"> + <div class="col s10 offset-s1 m8 offset-m2 l6 offset-l3"> + <table> + <#list numberOfImportedEntitiesByType as entityType, numberOfItems> + <tr> + <td><i class="material-icons left">${entityType.getIcon()}</i> + <div class="import-entity-name">${locale.getString(entityType.getLocalizationKey())}</div> + </td> + <td>${numberOfItems}</td> + </tr> + </#list> + </table> + </div> + </div> + + <div class="row"> + <div class="col m6 l4 offset-l2 right-align"> + <@header.buttonLink url='/settings' icon='done' localizationKey='ok'/> + </div> + </div> + </div> + </div> + </main> + + <!-- Scripts--> + <#import "../helpers/scripts.ftl" as scripts> + <@scripts.scripts/> + <script src="<@s.url '/js/import.js'/>"></script> + </@header.body> +</html> \ No newline at end of file -- GitLab