@@ -147,16 +147,19 @@ <h4 class="font-medium lg:text-lg leading-relaxed">
147147 </ div >
148148 </ section >
149149
150- < section x-data ="{data: {email: '', listId: 6, acceptTerms: false, errorMessage: '', success: false, inProgress: false}} " class ="container text-center pt-12 pb-24 ">
150+ < section x-data ="{data: {email: '', listId: 'cryptomator', captcha: null, acceptTerms: false, errorMessage: '', success: false, inProgress: false}, captchaState: null } " class ="container text-center pt-12 pb-24 ">
151151 < h2 id ="newsletter " class ="font-h2 mb-4 "> {{ i18n "home_newsletter_title" . }}</ h2 >
152152
153- < form x-show ="!data.success " x-ref ="form " class ="max-w-xl mx-auto mb-4 ">
153+ < form x-show ="!data.success " x-ref ="form " class ="max-w-xl mx-auto mb-4 " @submit.prevent =" new Newsletter($refs.form, data).subscribe(); $refs.captcha.reset() " >
154154 < p class ="font-p mb-4 "> {{ i18n "home_newsletter_instruction" . | safeHTML }}</ p >
155155 < div class ="flex justify-center items-center rounded-sm bg-gray-300 mb-4 ">
156156 < input x-model ="data.email " x-ref ="email " @blur ="$refs.email.classList.add('show-invalid') " type ="email " class ="grow rounded-l border-gray-300 focus:ring-0 focus:border-secondary " placeholder ="{{ i18n "home_newsletter_email_placeholder " }}" required/>
157- < button :disabled ="data.inProgress || !data.acceptTerms " @click.prevent =" new Newsletter($refs.form, data).subscribe() " type ="submit " class ="shrink-0 flex items-center gap-1 btn btn-primary rounded-l-none px-4 " data-umami-event ="home-newsletter-form ">
157+ < button :disabled ="data.inProgress || !data.acceptTerms || captchaState == 'verifying' " type ="submit " class ="shrink-0 flex items-center gap-1 btn btn-primary rounded-l-none px-4 " data-umami-event ="home-newsletter-form ">
158158 < i :class ="{'fa-envelope': !data.inProgress, 'fa-spinner fa-spin': data.inProgress} " class ="fa-solid " aria-hidden ="true "> </ i > {{ i18n "home_newsletter_subscribe" }}
159159 </ button >
160+
161+ {{ $captchaUrl := printf "%s/connect/newsletter/challenge" .Site.Params.apiBaseUrl }}
162+ {{ partial "captcha.html" (dict "challengeUrl" $captchaUrl "captchaPayload" "data.captcha" "captchaState" "captchaState") }}
160163 </ div >
161164 < p class ="font-p "> {{ partial "checkbox.html" (dict "context" . "alpineVariable" "data.acceptTerms" "label" (i18n "accept_newsletter_privacy" | safeHTML)) }}</ p >
162165 < p :class ="{'hidden': !data.errorMessage} " class ="text-sm text-red-600 mt-2 " x-text ="data.errorMessage "> </ p >
@@ -262,10 +265,14 @@ <h2 class="font-h2 mb-1">{{ i18n "home_cebit_title" . }}</h2>
262265 < script type ="text/javascript " src ="{{ $indexJs.RelPermalink }} " defer > </ script >
263266 {{ $newsletterJs := resources.Get "js/newsletter.js" }}
264267 < script type ="text/javascript " src ="{{ $newsletterJs.RelPermalink }} " defer > </ script >
268+ {{ $altchaJs := resources.Get "js/altcha/altcha.js" }}
269+ < script type ="module " src ="{{ $altchaJs.RelPermalink }} " defer > </ script >
265270 {{ else }}
266271 {{ $indexJs := resources.Get "js/index.js" | minify | fingerprint }}
267272 < script type ="text/javascript " src ="{{ $indexJs.RelPermalink }} " integrity ="{{ $indexJs.Data.Integrity }} " defer > </ script >
268273 {{ $newsletterJs := resources.Get "js/newsletter.js" | minify | fingerprint }}
269274 < script type ="text/javascript " src ="{{ $newsletterJs.RelPermalink }} " integrity ="{{ $newsletterJs.Data.Integrity }} " defer > </ script >
275+ {{ $altchaJs := resources.Get "js/altcha/altcha.js" }}
276+ < script type ="module " src ="{{ $altchaJs.RelPermalink }} " integrity ="{{ $altchaJs.Data.Integrity }} " defer > </ script >
270277 {{ end }}
271278{{ end }}
0 commit comments