From a6c4cc1192783977cc471734c6b1d52da3730869 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Thu, 21 Jul 2022 23:29:26 +0200
Subject: [PATCH] #677 - added new modal to warn about keywords in transaction
 name

---
 .../transactions/TransactionController.java   |  7 ++++
 .../resources/languages/base_de.properties    |  6 ++++
 .../resources/languages/base_en.properties    |  6 ++++
 .../resources/static/css/transactions.css     |  6 ++++
 .../transactionNameKeywordWarningModal.ftl    | 35 +++++++++++++++++++
 5 files changed, 60 insertions(+)
 create mode 100644 BudgetMasterServer/src/main/resources/templates/transactions/transactionNameKeywordWarningModal.ftl

diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java
index c8f919d1f..7050c5b6d 100644
--- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java
+++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionController.java
@@ -57,6 +57,7 @@ public class TransactionController extends BaseController
 		public static final String REDIRECT_NEW_TRANSACTION = "redirect:/transactions/newTransaction/normal";
 		public static final String NEW_TRANSACTION = "transactions/newTransactionNormal";
 		public static final String CHANGE_TYPE = "transactions/changeTypeModal";
+		public static final String KEYWORD_WARNING = "transactions/transactionNameKeywordWarningModal";
 	}
 
 	private static final String CONTINUE = "continue";
@@ -405,4 +406,10 @@ public class TransactionController extends BaseController
 		}
 		return ReturnValues.NEW_TRANSACTION;
 	}
+
+	@GetMapping("/keywordWarningModal")
+	public String keywordWarningModal()
+	{
+		return ReturnValues.KEYWORD_WARNING;
+	}
 }
\ No newline at end of file
diff --git a/BudgetMasterServer/src/main/resources/languages/base_de.properties b/BudgetMasterServer/src/main/resources/languages/base_de.properties
index cff7dd408..495bb62b1 100644
--- a/BudgetMasterServer/src/main/resources/languages/base_de.properties
+++ b/BudgetMasterServer/src/main/resources/languages/base_de.properties
@@ -78,6 +78,12 @@ save.as.template.errorsInForm=Vorlage konnte nicht erstellt werden, da Fehler im
 transaction.change.type=Buchungstyp ändern
 transaction.change.type.warning=Hinweis: Nicht gespeicherte Änderungen gehen verloren!
 transaction.change.type.new=Neuer Buchungstyp
+transaction.warning.name.keyword.title=Schlüsselwort erkannt
+transaction.warning.name.keyword.description.part1=Der Titel der Buchung enthält das Schlüsselwort
+transaction.warning.name.keyword.description.part2=ist jedoch nicht als Einnahme markiert.<br><br>Hast du vielleicht vergessen die Buchung als Einnahme zu markieren?
+transaction.warning.name.keyword.button.ignore=Ignorieren und speichern (Buchung ist tatsächlich eine Ausgabe)
+transaction.warning.name.keyword.button.cancel=Anpassen (Buchung soll eigentlich eine Einnahme sein)
+transaction.warning.name.keyword.button.edit=Schlüsselwörter editieren (ungespeicherte Änderungen gehen verloren)
 template.group.default=Ungruppiert
 
 # WEEK DAYS
diff --git a/BudgetMasterServer/src/main/resources/languages/base_en.properties b/BudgetMasterServer/src/main/resources/languages/base_en.properties
index 1787b68bb..a1dcfa3ed 100644
--- a/BudgetMasterServer/src/main/resources/languages/base_en.properties
+++ b/BudgetMasterServer/src/main/resources/languages/base_en.properties
@@ -79,6 +79,12 @@ save.as.template.errorsInForm=Template could not be created because errors exist
 transaction.change.type=Change type
 transaction.change.type.warning=Note: Unsaved changes will be lost!
 transaction.change.type.new=New type
+transaction.warning.name.keyword.title=Keyword detected
+transaction.warning.name.keyword.description.part1=The transaction tile contains the keyword
+transaction.warning.name.keyword.description.part2=but is not marked as income.<br><br>Did you possibly forget to mark the transaction as income?
+transaction.warning.name.keyword.button.ignore=Ignore and save (transaction is actually an expenditure)
+transaction.warning.name.keyword.button.cancel=Edit (Transaction should actually be an income)
+transaction.warning.name.keyword.button.edit=Edit keywords (unsaved changes will be lost)
 template.group.default=Not grouped
 
 # WEEK DAYS
diff --git a/BudgetMasterServer/src/main/resources/static/css/transactions.css b/BudgetMasterServer/src/main/resources/static/css/transactions.css
index 447f5e58b..a1e79dbde 100644
--- a/BudgetMasterServer/src/main/resources/static/css/transactions.css
+++ b/BudgetMasterServer/src/main/resources/static/css/transactions.css
@@ -143,4 +143,10 @@
 .icon-repeating {
     vertical-align: middle;
     font-size: 2rem;
+}
+
+#keyword {
+    font-weight: bold;
+    border-bottom: 2px solid var(--color-text);
+    padding: 0.3rem 0.5rem;
 }
\ No newline at end of file
diff --git a/BudgetMasterServer/src/main/resources/templates/transactions/transactionNameKeywordWarningModal.ftl b/BudgetMasterServer/src/main/resources/templates/transactions/transactionNameKeywordWarningModal.ftl
new file mode 100644
index 000000000..222436916
--- /dev/null
+++ b/BudgetMasterServer/src/main/resources/templates/transactions/transactionNameKeywordWarningModal.ftl
@@ -0,0 +1,35 @@
+<#global locale = static["de.thecodelabs.utils.util.Localization"]>
+<#import "/spring.ftl" as s>
+<#import "../helpers/header.ftl" as header>
+
+<div id="modalTransactionNameKeywordWarning" class="modal background-color">
+    <div class="modal-content">
+        <h4>${locale.getString("transaction.warning.name.keyword.title")}</h4>
+
+        <div class="row">
+            <div class="sol s12">
+                ${locale.getString("transaction.warning.name.keyword.description.part1")}
+                <span id="keyword"></span>
+                ${locale.getString("transaction.warning.name.keyword.description.part2")}
+            </div>
+        </div>
+
+        <br>
+
+        <div class="row center-align">
+            <div class="col s12">
+                <@header.buttonLink id='keyword-warning-button-ignore' url='' icon='save' localizationKey='transaction.warning.name.keyword.button.ignore' color='red' classes='text-white' noUrl=true/>
+            </div>
+        </div>
+        <div class="row center-align">
+            <div class="col s12">
+                <@header.buttonLink url='' icon='edit' localizationKey='transaction.warning.name.keyword.button.cancel' color='green' id='buttonChangeTransactionType' classes='modal-action modal-close text-white' noUrl=true/>
+            </div>
+        </div>
+        <div class="row center-align">
+            <div class="col s12">
+                <@header.buttonLink url='/settings' icon='rule_folder' localizationKey='transaction.warning.name.keyword.button.edit' color='blue' id='buttonChangeTransactionType' classes='text-white'/>
+            </div>
+        </div>
+    </div>
+</div>
-- 
GitLab