{% extends "forms/field.html.twig" %} {% block label %}{% endblock %} {% block input %} {% set config = grav.config %} {% set formId = form.id ?: form.name %} {% set callbackId = formId|underscorize %} {% set lang = grav.language.language %} {# Get configuration values with fallbacks #} {% set version = field.recaptcha_version ?? config.plugins.form.recaptcha.version ?? '2-checkbox' %} {% set site_key = field.recaptcha_site_key ?? config.plugins.form.recaptcha.site_key %} {% set theme = field.recaptcha_theme ?? config.plugins.form.recaptcha.theme ?? 'light' %} {% if not site_key %}
reCAPTCHA site key is not set. Please set it in the form field or plugin configuration.
{% else %} {% if version == 3 or version == '3' %} {# --- reCAPTCHA v3 Handling --- #} {% set action = (page.route|trim('/') ~ '-' ~ form.name)|underscorize|md5 %}
{# Container for v3 - will be managed by JS #}
{% do assets.addJs('https://www.google.com/recaptcha/api.js?render=' ~ site_key, { group: 'bottom' }) %} {% elseif version == '2-invisible' %} {# --- reCAPTCHA v2 Invisible Handling --- #}
{# Container for v2 invisible - will be managed by JS #}
{% else %} {# --- reCAPTCHA v2 Checkbox Handling --- #} {# Add script and container #} {% set container_id = 'g-recaptcha-' ~ formId %} {% set onloadCallback = 'captchaCheckboxOnloadCallback_' ~ callbackId %}
{% do assets.addJs('https://www.google.com/recaptcha/api.js?onload=' ~ onloadCallback ~ '&render=explicit', { 'group': 'bottom', 'loading': 'defer' }) %} {% endif %} {% endif %} {% endblock %}