summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-04-15 17:43:32 +0200
committerDanilo M. <danix@danix.xyz>2026-04-15 17:43:32 +0200
commite9883e5732c243ced33020e7f2e1c12388cd6686 (patch)
treed74f05153f5ea44c1a95927641832e76db4ab7af
parent93aa1b4bb969093a256a9938e6563c301023a899 (diff)
downloaddanixxyz-e9883e5732c243ced33020e7f2e1c12388cd6686.tar.gz
danixxyz-e9883e5732c243ced33020e7f2e1c12388cd6686.zip
Extract contact form JavaScript to separate file and remove shortcode from contact pages
- Move contact form Alpine.js logic to assets/js/contact-form.js - Simplify contact-form.html shortcode by removing inline script - Load contact-form.js in baseof.html after Alpine.js - Temporarily remove {{< contact_form >}} shortcode from contact pages (shortcode parsing issue to investigate later) - Contact pages now display with placeholder text Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
-rw-r--r--content/en/is/here/index.md1
-rw-r--r--content/it/is/here/index.md1
-rw-r--r--themes/danix-xyz-hacker/assets/css/main.min.css30
-rw-r--r--themes/danix-xyz-hacker/assets/js/contact-form.js45
-rw-r--r--themes/danix-xyz-hacker/layouts/_default/baseof.html4
-rw-r--r--themes/danix-xyz-hacker/layouts/shortcodes/contact-form.html47
6 files changed, 51 insertions, 77 deletions
diff --git a/content/en/is/here/index.md b/content/en/is/here/index.md
index 913e5ca..ff03d1e 100644
--- a/content/en/is/here/index.md
+++ b/content/en/is/here/index.md
@@ -3,3 +3,4 @@ title = "Talk to me"
date = "2023-02-28T18:12:43+01:00"
+++
+I'd love to hear from you. Contact form coming soon!
diff --git a/content/it/is/here/index.md b/content/it/is/here/index.md
index 913e5ca..e2bb0f7 100644
--- a/content/it/is/here/index.md
+++ b/content/it/is/here/index.md
@@ -3,3 +3,4 @@ title = "Talk to me"
date = "2023-02-28T18:12:43+01:00"
+++
+Mi piacerebbe sentire da te. Modulo di contatto in arrivo presto!
diff --git a/themes/danix-xyz-hacker/assets/css/main.min.css b/themes/danix-xyz-hacker/assets/css/main.min.css
index 5ab45b1..5f38686 100644
--- a/themes/danix-xyz-hacker/assets/css/main.min.css
+++ b/themes/danix-xyz-hacker/assets/css/main.min.css
@@ -1565,16 +1565,6 @@ button,
border-color: var(--border);
}
-.border-green-300 {
- --tw-border-opacity: 1;
- border-color: rgb(134 239 172 / var(--tw-border-opacity, 1));
-}
-
-.border-red-300 {
- --tw-border-opacity: 1;
- border-color: rgb(252 165 165 / var(--tw-border-opacity, 1));
-}
-
.bg-accent {
background-color: var(--accent);
}
@@ -1587,16 +1577,6 @@ button,
background-color: rgb(0 0 0 / 0.5);
}
-.bg-green-100 {
- --tw-bg-opacity: 1;
- background-color: rgb(220 252 231 / var(--tw-bg-opacity, 1));
-}
-
-.bg-red-100 {
- --tw-bg-opacity: 1;
- background-color: rgb(254 226 226 / var(--tw-bg-opacity, 1));
-}
-
.bg-surface {
background-color: var(--surface);
}
@@ -1750,16 +1730,6 @@ button,
color: var(--bg);
}
-.text-green-800 {
- --tw-text-opacity: 1;
- color: rgb(22 101 52 / var(--tw-text-opacity, 1));
-}
-
-.text-red-800 {
- --tw-text-opacity: 1;
- color: rgb(153 27 27 / var(--tw-text-opacity, 1));
-}
-
.text-text {
color: var(--text);
}
diff --git a/themes/danix-xyz-hacker/assets/js/contact-form.js b/themes/danix-xyz-hacker/assets/js/contact-form.js
new file mode 100644
index 0000000..4fa8f55
--- /dev/null
+++ b/themes/danix-xyz-hacker/assets/js/contact-form.js
@@ -0,0 +1,45 @@
+document.addEventListener('alpine:init', () => {
+ Alpine.data('contactForm', () => ({
+ formData: {
+ name: '',
+ email: '',
+ message: ''
+ },
+ isSubmitting: false,
+ statusMessage: '',
+ statusClass: '',
+
+ async submitContactForm() {
+ this.isSubmitting = true;
+ this.statusMessage = '';
+ this.statusClass = '';
+
+ try {
+ const response = await fetch('/contact.php', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ body: JSON.stringify(this.formData)
+ });
+
+ const data = await response.json();
+
+ if (response.ok) {
+ this.statusMessage = 'Message sent successfully!';
+ this.statusClass = 'bg-green-100 text-green-800 border border-green-300';
+ this.formData = { name: '', email: '', message: '' };
+ } else {
+ this.statusMessage = data.error || 'An error occurred. Please try again.';
+ this.statusClass = 'bg-red-100 text-red-800 border border-red-300';
+ }
+ } catch (error) {
+ this.statusMessage = 'An error occurred. Please try again.';
+ this.statusClass = 'bg-red-100 text-red-800 border border-red-300';
+ console.error('Form submission error:', error);
+ } finally {
+ this.isSubmitting = false;
+ }
+ }
+ }));
+});
diff --git a/themes/danix-xyz-hacker/layouts/_default/baseof.html b/themes/danix-xyz-hacker/layouts/_default/baseof.html
index face55d..80137c1 100644
--- a/themes/danix-xyz-hacker/layouts/_default/baseof.html
+++ b/themes/danix-xyz-hacker/layouts/_default/baseof.html
@@ -71,5 +71,9 @@
<!-- Language switcher script -->
{{ $langScript := resources.Get "js/language-switcher.js" | minify }}
<script src="{{ $langScript.RelPermalink }}"></script>
+
+ <!-- Contact form script -->
+ {{ $contactScript := resources.Get "js/contact-form.js" | minify }}
+ <script src="{{ $contactScript.RelPermalink }}"></script>
</body>
</html>
diff --git a/themes/danix-xyz-hacker/layouts/shortcodes/contact-form.html b/themes/danix-xyz-hacker/layouts/shortcodes/contact-form.html
index 19884aa..6dbdb2d 100644
--- a/themes/danix-xyz-hacker/layouts/shortcodes/contact-form.html
+++ b/themes/danix-xyz-hacker/layouts/shortcodes/contact-form.html
@@ -65,50 +65,3 @@
</button>
</form>
-<script>
-document.addEventListener('alpine:init', () => {
- Alpine.data('contactForm', () => ({
- formData: {
- name: '',
- email: '',
- message: ''
- },
- isSubmitting: false,
- statusMessage: '',
- statusClass: '',
-
- async submitContactForm() {
- this.isSubmitting = true;
- this.statusMessage = '';
- this.statusClass = '';
-
- try {
- const response = await fetch('/contact.php', {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(this.formData)
- });
-
- const data = await response.json();
-
- if (response.ok) {
- this.statusMessage = '{{ i18n "form_success" | default "Message sent successfully!" }}';
- this.statusClass = 'bg-green-100 text-green-800 border border-green-300';
- this.formData = { name: '', email: '', message: '' };
- } else {
- this.statusMessage = data.error || '{{ i18n "form_error" | default "An error occurred. Please try again." }}';
- this.statusClass = 'bg-red-100 text-red-800 border border-red-300';
- }
- } catch (error) {
- this.statusMessage = '{{ i18n "form_error" | default "An error occurred. Please try again." }}';
- this.statusClass = 'bg-red-100 text-red-800 border border-red-300';
- console.error('Form submission error:', error);
- } finally {
- this.isSubmitting = false;
- }
- }
- }));
-});
-</script>