diff --git a/vorschau/js/app.js b/vorschau/js/app.js index 3078ec3..5d31d50 100644 --- a/vorschau/js/app.js +++ b/vorschau/js/app.js @@ -351,21 +351,36 @@ function mdToHtml(md) { } }); - // Form submit -> mailto fallback (no backend yet) + // Form submit -> server-side SMTP window.submitContact = function (e) { e.preventDefault(); - var name = document.getElementById('cf-name').value; - var org = document.getElementById('cf-org').value; - var email = document.getElementById('cf-email').value; - var msg = document.getElementById('cf-message').value; + var btn = e.target.querySelector('button[type="submit"]'); + if (btn) { btn.disabled = true; btn.textContent = 'Wird gesendet...'; } - var subject = 'Anfrage von ' + name + (org ? ' (' + org + ')' : ''); - var body = 'Name: ' + name + '\nOrganisation: ' + (org || '-') + '\nE-Mail: ' + email + '\n\nNachricht:\n' + msg; - - window.location.href = 'mailto:info@aegis-sight.de?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); - - document.getElementById('contact-form').style.display = 'none'; - document.getElementById('form-success').style.display = 'block'; + fetch('/api/contact', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + name: document.getElementById('cf-name').value, + organisation: document.getElementById('cf-org').value, + email: document.getElementById('cf-email').value, + message: document.getElementById('cf-message').value + }) + }) + .then(function (r) { return r.json().then(function (d) { return { ok: r.ok, data: d }; }); }) + .then(function (res) { + if (res.ok) { + document.getElementById('contact-form').style.display = 'none'; + document.getElementById('form-success').style.display = 'block'; + } else { + alert(res.data.error || 'Fehler beim Senden'); + if (btn) { btn.disabled = false; btn.textContent = 'Nachricht senden'; } + } + }) + .catch(function () { + alert('Verbindungsfehler. Bitte versuchen Sie es erneut.'); + if (btn) { btn.disabled = false; btn.textContent = 'Nachricht senden'; } + }); return false; };