From efabd21d92afd4d265adf2a490625cc994493656 Mon Sep 17 00:00:00 2001
From: Alexander Bilz <mail@alexbilz.com>
Date: Sat, 16 Jan 2021 10:47:49 +0000
Subject: [PATCH] Revert "Added reCAPTCHA to Formspree and support for Netlify forms"
---
layouts/partials/contact.html | 106 ++--------------------------------------------------
1 files changed, 5 insertions(+), 101 deletions(-)
diff --git a/layouts/partials/contact.html b/layouts/partials/contact.html
index 53c33b1..e598114 100644
--- a/layouts/partials/contact.html
+++ b/layouts/partials/contact.html
@@ -1,115 +1,19 @@
-{{ $jquery := resources.Get "js/jquery.js" }}
-<script type="text/javascript" src="{{ $jquery.Permalink }}"></script>
<div class="contact-form">
- <form id="contact-form" name="Contact Form" class="form-style" method="POST" action="{{ if eq .Site.Params.contactFormType "netlify" }}/{{ else }}{{ .Site.Params.contactFormAction }}{{ end }}"
- {{ with .Site.Params.contactFormReCaptchaSiteKey }} data-netlify-recaptcha="true"{{ end }}
- {{ if eq .Site.Params.contactFormType "netlify" }} data-netlify="true" netlify-honeypot="my-lovely-house"{{ end }}>
+ <form class="form-style" method="POST" action="{{ .Site.Params.contactFormAction }}" data-toggle="validator">
<ul>
<li>
- <input class="field-style field-full" type="text" name="username" id="username" placeholder="{{ i18n "name" }}" oninvalid="setCustomValidity('{{ i18n "name_error" }}')" oninput="setCustomValidity('')" required>
+ <input class="field-style field-full" type="text" name="username" id="username" placeholder="Name" required>
</li>
<li>
- <input class="field-style field-full" type="email" name="email" id="email" placeholder="{{ i18n "email" }}" pattern="^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$" oninvalid="setCustomValidity('{{ i18n "email_error" }}')" oninput="setCustomValidity('')" required>
+ <input class="field-style field-full" type="email" id="email" name="email" placeholder="Email" required>
</li>
<li>
- <textarea class="field-style" name="message" id="message" rows="6" placeholder="{{ i18n "message" }}" oninvalid="setCustomValidity('{{ i18n "message_error" }}')" oninput="setCustomValidity('')" required></textarea>
+ <textarea class="field-style" name="message" id="message" rows="6" placeholder="{{ i18n "message" }}"></textarea>
</li>
<li>
- <input class="field-style" id="form-submit" type="submit" value="{{ i18n "send" }}">
+ <input class="field-style" type="submit" value="{{ i18n "send" }}"></input>
</li>
- <li>
- <div class="form-feedback" id="submit-feedback"></div>
- </li>
- {{ if eq .Site.Params.contactFormType "netlify"}}
- <input name="form-name" value="Contact Form" type="hidden">
- <input class="field-style" name="my-lovely-house" id="my-lovely-house" type="hidden">
- {{ end }}
- {{ with .Site.Params.contactFormReCaptchaSiteKey }}
- <li>
- <div id="g-recaptcha"></div>
- </li>
- {{ end }}
</ul>
</form>
</div>
-
-<script>
- // Sets feedback message.
- function setFeedback(message = '', ok = true) {
- const feedback = $('#submit-feedback');
-
- feedback.attr('feedback-success', ok);
- feedback.text(message);
- }
-
- // This hanlder takes care of submission post-captcha.
- function onSubmit() {
- // Verify if we have a recaptcha at all before checking.
- if($('.g-recaptcha')[0] != null &&
- grecaptcha.getResponse().length == 0) {
- setFeedback('{{ i18n "form_captcha_error" }}', false);
- } else {
- // Formspree requires json; ajax will do the conversion.
- const form = $('#contact-form');
- const message = form.serialize();
- const dataType = ('{{ .Site.Params.ContactFormType }}' === 'netlify')
- ? 'application/x-www-form-urlencoded' : 'json';
-
- $.ajax({
- url: form.prop('action'),
- method: 'POST',
- data: message,
- dataType,
- complete: (xhr, status) => {
- // Netlify asks for urlencoded data but sends back HTML. This causes a
- // data type mismatch that Ajax flags as an error ... I believe the solution is to just
- // screen for the false negative in this combined handler.
- // https://stackoverflow.com/questions/16230624/ajax-call-fires-error-event-but-returns-200-ok/16230794
- if (status === 'error' && xhr.status !== 200) {
- setFeedback('{{ i18n "form_error" }}', false);
- } else {
- setFeedback('{{ i18n "form_success" }}');
- }
- },
- });
-
- // Enable button.
- $('#form-submit').prop('disabled', false);
- }
- }
-
- // Initial contact form submit is disabled, and optionally kicks off captcha.
- $('#contact-form').submit((e) => {
- // We're doing the submission to avoid the redirect for free Formspree accounts.
- e.preventDefault();
- setFeedback('');
- // Disable submit button for the time being,
- $('#form-submit').prop('disabled', true);
-
- // Make sure we have a captcha to execute before trying to do so.
- if ($('.g-recaptcha')[0] !== null) {
- grecaptcha.execute();
- } else {
- onSubmit();
- }
- });
-</script>
-
-{{ with .Site.Params.contactFormReCaptchaSiteKey }}
- <script>
- // Captcha rendered dynamically to deal with some rendering issues with
- // theme and with animation.
- function captchaLoadCallback() {
- grecaptcha.render( 'g-recaptcha', {
- sitekey: '{{ . }}',
- callback: onSubmit,
- size: 'invisible',
- badge: 'bottomright',
- theme: $('html').attr('data-theme'),
- });
- }
- </script>
- <!-- Explicit rendering of recaptcha to deal with data-theme and animation issues -->
- <script type="text/javascript" src="https://www.google.com/recaptcha/api.js?onload=captchaLoadCallback&render=explicit" async defer></script>
-{{ end }}
--
Gitblit v1.10.0