From 4e83eed1e4466dd4922c26344d1b57ae3ef91265 Mon Sep 17 00:00:00 2001 From: Victor Larodiel Date: Wed, 22 Apr 2026 16:42:51 -0300 Subject: [PATCH 01/12] [KAD-5541] Add captcha token regeneration after form submission Implemented a new function to regenerate captcha tokens for Google reCAPTCHA v3, Cloudflare Turnstile, and hCaptcha after form submissions. This ensures users can submit the form multiple times without encountering token issues. Updated the form handling logic to call this function upon successful form reset. --- .../assets/js/kb-advanced-form-block.min.js | 2 +- includes/assets/js/kb-header-block.min.js | 2 +- src/assets/js/kb-advanced-form-block.js | 53 ++++++++++++++++++- 3 files changed, 54 insertions(+), 3 deletions(-) diff --git a/includes/assets/js/kb-advanced-form-block.min.js b/includes/assets/js/kb-advanced-form-block.min.js index aa335eb19..dc6527d4d 100644 --- a/includes/assets/js/kb-advanced-form-block.min.js +++ b/includes/assets/js/kb-advanced-form-block.min.js @@ -1 +1 @@ -(function(){"use strict";window.kadenceAdvancedForm={error_item:1,clearForm(a){a.reset()},ensureLiveRegion(a){let b=a.querySelector(".kb-form-live-region");return b||(b=document.createElement("div"),b.className="kb-form-live-region",b.setAttribute("aria-live","polite"),b.setAttribute("aria-atomic","true"),b.setAttribute("role","status"),b.style.position="absolute",b.style.left="-10000px",b.style.width="1px",b.style.height="1px",b.style.overflow="hidden",a.appendChild(b)),b},announceMessage(a,b,c="polite"){const d=window.kadenceAdvancedForm.ensureLiveRegion(a);d.textContent="",d.setAttribute("aria-live",c),setTimeout(()=>{d.textContent=b},100)},insertAfter(a,b){b.parentNode.insertBefore(a,b.nextSibling)},markError(a,b,c,d=null,e=null){let f="";if(c.classList.contains("kb-adv-form-has-error")||c.classList.add("kb-adv-form-has-error"),a.classList.add("has-error"),b){switch(b){case"required":const c=a.getAttribute("data-kb-required-message");if(c&&""!==c){f=c;break}f=a.getAttribute("data-required-message"),f&&""!==f&&void 0!==f||(f=a.getAttribute("data-label"),(!f||""===f||void 0===f)&&(f=kb_adv_form_params.item),f=f+" "+kb_adv_form_params[b]);break;case"mismatch":f=a.getAttribute("data-mismatch-message"),f&&""!==f&&void 0!==f||(f=a.getAttribute("data-label"),(!f||""===f||void 0===f)&&(f=kb_adv_form_params.item),f=f+" "+kb_adv_form_params[b]);break;case"validation":f=a.getAttribute("data-validation-message"),f&&""!==f&&void 0!==f||(f=a.getAttribute("data-label"),(!f||""===f||void 0===f)&&(f=kb_adv_form_params.item),f=f+" "+kb_adv_form_params[b]);break;case"custom":const d=e?.message;f=d?d:a.getAttribute("data-label")+" has an issue"}const c=a.parentNode.querySelector(".kb-adv-form-error-msg");c&&c.remove();const g=a.getAttribute("name")+"-error";a.setAttribute("aria-describedby",g),a.setAttribute("aria-invalid","true");const h=document.createElement("div");h.id=g,h.classList.add("kb-adv-form-error-msg"),h.classList.add("kb-adv-form-message"),h.classList.add("kb-adv-form-warning"),h.innerHTML=window.kadenceAdvancedForm.strip_tags(f,"