diff --git a/.gitignore b/.gitignore index 5239179..089cffb 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,10 @@ demo/log4j2.xml demo/README.md demo/server.yaml .vscode/settings.json +test-server/logs +test-server/cms.pid +test-server/modules +test-server/hosts/demo/modules_data/ +test-server/hosts/demo/temp/ +test-server/hosts/demo/data/ +.DS_Store diff --git a/demo/hosts/demo/assets/form-1.js b/demo/hosts/demo/assets/form-1.js index 618a3db..e6be660 100644 --- a/demo/hosts/demo/assets/form-1.js +++ b/demo/hosts/demo/assets/form-1.js @@ -10,56 +10,11 @@ const generateString = (length) => { return result; } -const validateCaptcha = async (event) => { - event.preventDefault(); - let request = { - code: document.getElementById("inputCaptcha").value, - key: document.getElementById("captchaKey").value - } - - const response = await fetch('/module/forms-module/captcha/validate', { - method: 'POST', - body: JSON.stringify(request) - }) - - const validationResponse = await response.json() - - if (!validationResponse.valid) { - alert("captcha code is not valid") - event.preventDefault() - return false - } else { - console.log(event.target) - event.target.submit() - return true - } -} - -const ajaxValidateCaptcha = async () => { - let request = { - code: document.getElementById("inputCaptcha").value, - key: document.getElementById("captchaKey").value - } - - const response = await fetch('/module/forms-module/captcha/validate', { - method: 'POST', - body: JSON.stringify(request) - }) - - const validationResponse = await response.json() - - if (!validationResponse.valid) { - return false - } else { - return true - } -} - document.addEventListener("DOMContentLoaded", () => { if (document.getElementById("reloadCaptcha")) { document.getElementById("reloadCaptcha").addEventListener("click", () => { let href = new URL(document.getElementById("captchaImg").src) - let key = generateString(8) + let key = crypto.randomUUID().replaceAll('-', '') + crypto.randomUUID().replaceAll('-', '') href.searchParams.set('key', key) document.getElementById("captchaKey").value = key @@ -70,36 +25,20 @@ document.addEventListener("DOMContentLoaded", () => { if (document.getElementById("ajaxForm")) { document.getElementById("ajaxForm").addEventListener("submit", (event) => { event.preventDefault() - console.log("send form via ajax") - if (!ajaxValidateCaptcha()) { - alert("invalid captcha provided"); - return false - } var form = event.target; - var formData = new FormData(form); + var formData = new URLSearchParams(new FormData(form)); fetch(form.action, { method: "post", + headers: {"Content-Type": "application/x-www-form-urlencoded"}, body: formData - }).then(res => res.json()).then(console.log); + }).then(res => res.json()).then(result => { + if (!result.success) { + alert(result.code || "The form could not be submitted") + } + }); return false }) - document.getElementById("submit-btn-test").addEventListener("click", (event) => { - event.preventDefault() - - if (ajaxValidateCaptcha()) { - alert("invalid captcha provided"); - return false - } - - var form = document.getElementById("ajaxForm") - var formData = new FormData(form); - fetch(form.action, { - method: "post", - body: formData - }).then(res => res.json()).then(console.log); - return false; - }) } }) diff --git a/demo/hosts/demo/config/forms.yaml b/demo/hosts/demo/config/forms.yaml index e73dc41..5a515c2 100644 --- a/demo/hosts/demo/config/forms.yaml +++ b/demo/hosts/demo/config/forms.yaml @@ -8,12 +8,36 @@ forms: - name: contact to: contact@example.com subject: Ich suche Kontakt! - fields: [message] + fields: + from: + type: email + required: true + message: + required: true + minLength: 10 + maxLength: 5000 + mail: + account: default + from: forms@example.com + spam: + honeypot: + enabled: true + field: website redirects: success: /forms/contact/success - name: test-form - fields: [message] + fields: + from: + type: email + required: true + message: + required: true + minLength: 3 + spam: + honeypot: + enabled: true + field: website redirects: success: /forms/contact/success redirects: - error: /forms/error \ No newline at end of file + error: /forms/error diff --git a/demo/hosts/demo/templates/ajax.html b/demo/hosts/demo/templates/ajax.html index 2760a19..35af069 100644 --- a/demo/hosts/demo/templates/ajax.html +++ b/demo/hosts/demo/templates/ajax.html @@ -17,11 +17,12 @@