From fe63f2461770634d717823c0cda434ef1d10dcaa Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Wed, 8 Jun 2016 00:04:32 +0900 Subject: [PATCH] Support multiple CAPTCHA instances on the same page --- addons/recaptcha/recaptcha.addon.php | 2 +- addons/recaptcha/recaptcha.class.php | 8 +++++--- addons/recaptcha/recaptcha.js | 11 +++++++++++ common/lang/en.php | 2 +- common/lang/ko.php | 2 +- 5 files changed, 19 insertions(+), 6 deletions(-) create mode 100644 addons/recaptcha/recaptcha.js diff --git a/addons/recaptcha/recaptcha.addon.php b/addons/recaptcha/recaptcha.addon.php index 76b907b3e..3d01c82a8 100644 --- a/addons/recaptcha/recaptcha.addon.php +++ b/addons/recaptcha/recaptcha.addon.php @@ -9,7 +9,7 @@ if ($addon_info->use_signup === 'Y' && preg_match('/^(?:disp|proc)Member(?:SignU { $enable_captcha = true; } -if ($addon_info->use_recovery === 'Y' && preg_match('/^(?:disp|proc)Member(?:FindAccount|ResendAuthMail)/i', Context::get('act'))) +elseif ($addon_info->use_recovery === 'Y' && preg_match('/^(?:disp|proc)Member(?:FindAccount|ResendAuthMail)/i', Context::get('act'))) { $enable_captcha = true; } diff --git a/addons/recaptcha/recaptcha.class.php b/addons/recaptcha/recaptcha.class.php index fd550c960..2945eb1b7 100644 --- a/addons/recaptcha/recaptcha.class.php +++ b/addons/recaptcha/recaptcha.class.php @@ -5,6 +5,7 @@ class reCAPTCHA protected static $verify = 'https://www.google.com/recaptcha/api/siteverify'; protected static $config = null; protected static $script_added = false; + protected static $sequence = 1; public static function init($config) { @@ -49,12 +50,13 @@ class reCAPTCHA if (!self::$script_added) { - Context::addHtmlFooter(''); + Context::loadFile(array('./addons/recaptcha/recaptcha.js', 'body')); + Context::addHtmlFooter(''); self::$script_added = true; } - $html = '
'; - $html = sprintf($html, escape(self::$config->site_key), self::$config->theme ?: 'light', self::$config->size ?: 'normal'); + $html = '
'; + $html = sprintf($html, self::$sequence++, escape(self::$config->site_key), self::$config->theme ?: 'light', self::$config->size ?: 'normal'); return $html; } } diff --git a/addons/recaptcha/recaptcha.js b/addons/recaptcha/recaptcha.js new file mode 100644 index 000000000..7d74a9234 --- /dev/null +++ b/addons/recaptcha/recaptcha.js @@ -0,0 +1,11 @@ + +function reCaptchaCallback() { + $(".g-recaptcha").each(function() { + var instance = $(this); + grecaptcha.render(instance.attr("id"), { + sitekey: instance.data("sitekey"), + size: instance.data("size"), + theme: instance.data("theme") + }); + }); +} diff --git a/common/lang/en.php b/common/lang/en.php index 2de49032b..0b7e1abaf 100644 --- a/common/lang/en.php +++ b/common/lang/en.php @@ -318,7 +318,7 @@ $lang->cmd_no = 'No'; $lang->cmd_set_multilingual = 'Select Language'; $lang->cmd_multilingual = 'Language'; $lang->find_site = 'Find Site'; -$lang->captcha = 'Captcha'; +$lang->captcha = 'Spam Check'; $lang->reload = 'reload'; $lang->play = 'play'; $lang->use_and_display = 'Use and Display Vote List'; diff --git a/common/lang/ko.php b/common/lang/ko.php index b601277d2..e9290c67d 100644 --- a/common/lang/ko.php +++ b/common/lang/ko.php @@ -319,7 +319,7 @@ $lang->cmd_no = '아니오'; $lang->cmd_set_multilingual = '다국어 설정'; $lang->cmd_multilingual = '다국어'; $lang->find_site = '사이트 찾기'; -$lang->captcha = 'Captcha'; +$lang->captcha = '스팸 방지 기능'; $lang->reload = '새로고침'; $lang->play = '음성재생'; $lang->use_and_display = '사용 + 추천내역 공개';