@@ -147,16 +147,19 @@ <h4 class="font-medium lg:text-lg leading-relaxed">
147
147
</ div >
148
148
</ section >
149
149
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 ">
151
151
< h2 id ="newsletter " class ="font-h2 mb-4 "> {{ i18n "home_newsletter_title" . }}</ h2 >
152
152
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() " >
154
154
< p class ="font-p mb-4 "> {{ i18n "home_newsletter_instruction" . | safeHTML }}</ p >
155
155
< div class ="flex justify-center items-center rounded-sm bg-gray-300 mb-4 ">
156
156
< 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 ">
158
158
< i :class ="{'fa-envelope': !data.inProgress, 'fa-spinner fa-spin': data.inProgress} " class ="fa-solid " aria-hidden ="true "> </ i > {{ i18n "home_newsletter_subscribe" }}
159
159
</ button >
160
+
161
+ {{ $captchaUrl := printf "%s/connect/newsletter/challenge" .Site.Params.apiBaseUrl }}
162
+ {{ partial "captcha.html" (dict "challengeUrl" $captchaUrl "captchaPayload" "data.captcha" "captchaState" "captchaState") }}
160
163
</ div >
161
164
< p class ="font-p "> {{ partial "checkbox.html" (dict "context" . "alpineVariable" "data.acceptTerms" "label" (i18n "accept_newsletter_privacy" | safeHTML)) }}</ p >
162
165
< 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>
262
265
< script type ="text/javascript " src ="{{ $indexJs.RelPermalink }} " defer > </ script >
263
266
{{ $newsletterJs := resources.Get "js/newsletter.js" }}
264
267
< 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 >
265
270
{{ else }}
266
271
{{ $indexJs := resources.Get "js/index.js" | minify | fingerprint }}
267
272
< script type ="text/javascript " src ="{{ $indexJs.RelPermalink }} " integrity ="{{ $indexJs.Data.Integrity }} " defer > </ script >
268
273
{{ $newsletterJs := resources.Get "js/newsletter.js" | minify | fingerprint }}
269
274
< 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 >
270
277
{{ end }}
271
278
{{ end }}
0 commit comments