From 451359dc5d51945e02df3fe815b0f39857ff1a83 Mon Sep 17 00:00:00 2001 From: Schorsch Date: Mon, 6 Nov 2017 14:06:19 +0100 Subject: [PATCH 1/2] Change JsFooterInlineCode to allow any #g--recaptcha-{uid} ({uid} > 1000) Do not iterate from 1 to 1000 and check if there is a matching #g-recaptcha-{uid} div on current site, but iterate over existing .g-recaptcha elements and call grecaptcha.render(...) based on that .g-recaptcha elements. --- Classes/ViewHelpers/ReCaptchaViewHelper.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Classes/ViewHelpers/ReCaptchaViewHelper.php b/Classes/ViewHelpers/ReCaptchaViewHelper.php index dea9a56..a50b80f 100644 --- a/Classes/ViewHelpers/ReCaptchaViewHelper.php +++ b/Classes/ViewHelpers/ReCaptchaViewHelper.php @@ -101,11 +101,12 @@ public function render() 'recaptcha', ' var recaptchaCallback = function() { - for (var i = 1; i <= 1000; ++i) { - if (document.getElementById(\'g-recaptcha-\' + i)) { - grecaptcha.render(\'g-recaptcha-\' + i, {\'sitekey\' : \'' . $key . '\'}); - } - } + var tx_recaptcha__elements = document.getElementsByClassName("g-recaptcha"); + if (tx_recaptcha__elements.length > 0) { + for (i = 0; i < tx_recaptcha__elements.length; i++) { + grecaptcha.render(tx_recaptcha__elements[i].getAttribute("id"), {\'sitekey\' : \'' . $key . '\'}); + } + } }; /*]]>*/ From 37867fd0feaa0b83889de217fe702d32b07ec817 Mon Sep 17 00:00:00 2001 From: Schorsch Date: Mon, 6 Nov 2017 15:27:07 +0100 Subject: [PATCH 2/2] Reformat code --- Classes/ViewHelpers/ReCaptchaViewHelper.php | 26 +++++++++++---------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/Classes/ViewHelpers/ReCaptchaViewHelper.php b/Classes/ViewHelpers/ReCaptchaViewHelper.php index a50b80f..ad005f1 100644 --- a/Classes/ViewHelpers/ReCaptchaViewHelper.php +++ b/Classes/ViewHelpers/ReCaptchaViewHelper.php @@ -1,4 +1,5 @@ initialized) { + if ( ! $this->initialized) { $key = $reCaptchaSettings['siteKey']; $this->initialized = true; $pageRenderer = $this->getPageRenderer(); $pageRenderer->addJsFooterInlineCode( 'recaptcha', ' - var recaptchaCallback = function() { - var tx_recaptcha__elements = document.getElementsByClassName("g-recaptcha"); - if (tx_recaptcha__elements.length > 0) { - for (i = 0; i < tx_recaptcha__elements.length; i++) { - grecaptcha.render(tx_recaptcha__elements[i].getAttribute("id"), {\'sitekey\' : \'' . $key . '\'}); - } + var recaptchaCallback = function() { + var tx_recaptcha__elements = document.getElementsByClassName("g-recaptcha"); + if (tx_recaptcha__elements.length > 0) { + for (i = 0; i < tx_recaptcha__elements.length; i++) { + grecaptcha.render(tx_recaptcha__elements[i].getAttribute("id"), {\'sitekey\' : \'' . $key . '\'}); } - }; - /*]]>*/ - - +