From d4fd0f34122f5539cdcc6ba6c4dcfe2727740ec8 Mon Sep 17 00:00:00 2001
From: Michael Seevogel <git@michaelseevogel.de>
Date: Mon, 29 Apr 2024 17:38:05 +0200
Subject: [PATCH] Deduplicate and move the javascript event codes to functions

---
 .../web/mail/templates/mail_alias_edit.htm    |  2 +-
 .../web/mail/templates/mail_forward_edit.htm  |  2 +-
 .../mail/templates/mail_user_mailbox_edit.htm |  2 +-
 .../default/assets/javascripts/ispconfig.js   | 38 +++++++++++++++++++
 4 files changed, 41 insertions(+), 3 deletions(-)

diff --git a/interface/web/mail/templates/mail_alias_edit.htm b/interface/web/mail/templates/mail_alias_edit.htm
index 4a352f605d..804484c8f1 100644
--- a/interface/web/mail/templates/mail_alias_edit.htm
+++ b/interface/web/mail/templates/mail_alias_edit.htm
@@ -2,7 +2,7 @@
                 <label class="col-sm-3 control-label"><em>*</em> {tmpl_var name='email_txt'}</label>
                 <div class="col-sm-9">
 				    <div class='input-group'>
-						<input type="text" id="email_local_part" name="email_local_part" value="{tmpl_var name='email_local_part'}" class="form-control" onPaste="javascript: e = this; setTimeout(function(){if (/@/.test(e.value)) { parts = e.value.split('@'); $('#email_domain').val(parts.pop()); $('#email_domain').trigger('change'); e.value=parts.pop(); } }, 4);" onChange="javascript: if (/@/.test(this.value)) { parts = this.value.split('@'); $('#email_domain').val(parts.pop()); $('#email_domain').trigger('change'); this.value=parts.pop(); } "  />
+						<input type="text" id="email_local_part" name="email_local_part" value="{tmpl_var name='email_local_part'}" class="form-control" onpaste="processEmailAddressInput(this)" onchange="updateEmailDomain(this)" />
 						<span class='input-group-addon'>@</span>
                         <div class='input-group-field'>
 							<select name="email_domain" id="email_domain" class="form-control" style="height:50px;min-width:170px;">{tmpl_var name='email_domain'}</select>
diff --git a/interface/web/mail/templates/mail_forward_edit.htm b/interface/web/mail/templates/mail_forward_edit.htm
index 070b1b3438..10fe5c35c4 100644
--- a/interface/web/mail/templates/mail_forward_edit.htm
+++ b/interface/web/mail/templates/mail_forward_edit.htm
@@ -2,7 +2,7 @@
                 <label class="col-sm-3 control-label"><em>*</em> {tmpl_var name='email_txt'}</label>
                 <div class="col-sm-9">
 				    <div class='input-group'>
-						<input type="text" id="email_local_part" name="email_local_part" value="{tmpl_var name='email_local_part'}" class="form-control" onPaste="javascript: e = this; setTimeout(function(){if (/@/.test(e.value)) { parts = e.value.split('@'); $('#email_domain').val(parts.pop()); $('#email_domain').trigger('change'); e.value=parts.pop(); } }, 4);" onChange="javascript: if (/@/.test(this.value)) { parts = this.value.split('@'); $('#email_domain').val(parts.pop()); $('#email_domain').trigger('change'); this.value=parts.pop(); } "  />
+						<input type="text" id="email_local_part" name="email_local_part" value="{tmpl_var name='email_local_part'}" class="form-control" onpaste="processEmailAddressInput(this)" onchange="updateEmailDomain(this)" />
 						<span class='input-group-addon'>@</span>
                         <div class='input-group-field'>
 							<select name="email_domain" id="email_domain" class="form-control" style="height:50px;min-width:170px;">{tmpl_var name='email_domain'}</select>
diff --git a/interface/web/mail/templates/mail_user_mailbox_edit.htm b/interface/web/mail/templates/mail_user_mailbox_edit.htm
index 5dd5e50a90..a87e617ca9 100644
--- a/interface/web/mail/templates/mail_user_mailbox_edit.htm
+++ b/interface/web/mail/templates/mail_user_mailbox_edit.htm
@@ -6,7 +6,7 @@
                 <label class="col-sm-3 control-label"><em>*</em> {tmpl_var name='email_txt'}</label>
                 <div class="col-sm-9">
 				    <div class='input-group'>
-                                               <input type="text" id="email_local_part" name="email_local_part" value="{tmpl_var name='email_local_part'}" class="form-control" onPaste="javascript: e = this; setTimeout(function(){if (/@/.test(e.value)) { parts = e.value.split('@'); $('#email_domain').val(parts.pop()); $('#email_domain').trigger('change'); e.value=parts.pop(); } }, 4);" onChange="javascript: if (/@/.test(this.value)) { parts = this.value.split('@'); $('#email_domain').val(parts.pop()); $('#email_domain').trigger('change'); this.value=parts.pop(); } " />
+                        <input type="text" id="email_local_part" name="email_local_part" value="{tmpl_var name='email_local_part'}" class="form-control" onpaste="processEmailAddressInput(this)" onchange="updateEmailDomain(this)" />
 						<span class='input-group-addon'>@</span>
                         <div class='input-group-field'>
 							<select name="email_domain" id="email_domain" class="form-control" style="height:50px;min-width:170px;">{tmpl_var name='email_domain'}</select>
diff --git a/interface/web/themes/default/assets/javascripts/ispconfig.js b/interface/web/themes/default/assets/javascripts/ispconfig.js
index 8df11a0c0c..6a8964b00e 100644
--- a/interface/web/themes/default/assets/javascripts/ispconfig.js
+++ b/interface/web/themes/default/assets/javascripts/ispconfig.js
@@ -840,4 +840,42 @@ $(document).ready(function() {
 		//console.log("Mouseleave e-tooltip");
 	});
 
+	/*$(document).on("paste", '#email_local_part', function() {
+	//$(document).ready(function() {
+		//$('#email_local_part').on('paste', function() {
+			var e = this;
+			setTimeout(function() {
+				if (/@/.test(e.value)) {
+					var parts = e.value.split('@');
+					$('#email_domain').val(parts.pop());
+					$('#email_domain').trigger('change');
+					e.value = parts.pop();
+				}
+			}, 4);
+	});
+*/
+
+
 });
+
+
+function processEmailAddressInput(e) {
+    setTimeout(function () {
+        if (/@/.test(e.value)) {
+            var parts = e.value.split('@');
+            $('#email_domain').val(parts.pop());
+            $('#email_domain').trigger('change');
+            e.value = parts.pop();
+        }
+    }, 4);
+};
+
+function updateEmailDomain(e) {
+    if (/@/.test(e.value)) {
+        var parts = e.value.split('@');
+        $('#email_domain').val(parts.pop());
+        $('#email_domain').trigger('change');
+        e.value = parts.pop();
+    }
+};
+
-- 
GitLab