formspree/formspree/templates/forms/captcha.html

73 lines
2.1 KiB
HTML

{% extends 'layouts/message.html' %}
{% block head_scripts %}
<script type="text/javascript">
var appendField = function(form, key, value) {
var input = document.createElement('input');
input.setAttribute('name', key);
input.setAttribute('value', value);
input.setAttribute('style', 'display:none');
form.appendChild(input);
}
var success = function(response) {
var form = document.querySelector('#passthrough');
//handles the case where user has a button named 'submit'
document.createElement('form').submit.call(form);
};
var onloadCallback = function() {
var form = document.querySelector('#passthrough');
var data = {{ data|tojson|safe }};
var keys = {{ sorted_keys|tojson|safe }};
for (var i = 0; i < keys.length; i++) {
var key = keys[i]
if (data.hasOwnProperty(key)) {
appendField(form, key, data[key])
delete data[key];
}
}
for (var key in data) {
if (data.hasOwnProperty(key)) {
appendField(form, key, data[key])
}
}
grecaptcha.render('recaptcha', {
'sitekey' : {{ config.RECAPTCHA_KEY|tojson|safe }},
'callback' : success,
'size': window.innerWidth < 400 ? 'compact' : 'normal'
});
};
</script>
{% endblock head_scripts %}
{% block base %}
<div class="container narrow card">
<div class="container" id="header">
<div class="col-1-1 header success">
<i class="ion ion-email"></i>
</div>
</div>
<div class="container">
<div class="col-1-1">
<h1>Almost there</h1>
<p>Please help us fight spam by following the directions below:</p>
<form action="{{ action }}" method="POST" id="passthrough">
<div id="recaptcha" style="text-align:center; display:inline-block"></div>
</form>
</div>
</div>
</div>
{% endblock base %}
{% block tail_scripts %}
<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit"
async defer>
</script>
{% endblock tail_scripts %}