?
avatar dennisheiden
dennisheiden
21 Nov 2017

Steps to reproduce the issue

JPluginHelper::importPlugin('captcha');
$dispatcher = JDispatcher::getInstance();
$arr = $dispatcher->trigger('onInit', 'dynamic_recaptcha_1');
echo $arr[0];

Expected result

<div id="dynamic_recaptcha_1" class="g-recaptcha " data-sitekey="SITEKEY_TOKEN" data-theme="light" data-size="compact"></div>

Actual result

<div id="dynamic_recaptcha_1" data-sitekey="SITEKEY_TOKEN" data-theme="light" data-size="compact"></div>

System information (as much as possible)

Joomla 3.8.2
PHP 7.0.25
Apache
Linux -- 3.13.0-135-generic #184-Ubuntu SMP Wed Oct 18 11:55:51 UTC 2017 x86_64

Additional comments

I think the bug is in plugins/captcha/recaptcha/recaptcha.php line 92

public function onDisplay($name = null, $id = 'dynamic_recaptcha_1', $class = '')
	{

		if ($this->params->get('version', '1.0') === '1.0')
		{
			return '<div id="' . $id . '" ' . $class . '></div>';
		}
		else
		{
			return '<div id="' . $id . '" ' . **str_replace('class="', 'class="g-recaptcha ', $class)**
					. ' data-sitekey="' . $this->params->get('public_key', '')
					. '" data-theme="' . $this->params->get('theme2', 'light')
					. '" data-size="' . $this->params->get('size', 'normal')
					. '"></div>';
		}
	}

The str_replace will only work if $class is containing 'class="', I don't think, that this does make any sense at all.

avatar dennisheiden dennisheiden - open - 21 Nov 2017
avatar joomla-cms-bot joomla-cms-bot - change - 21 Nov 2017
Labels Added: ?
avatar joomla-cms-bot joomla-cms-bot - labeled - 21 Nov 2017
avatar dennisheiden dennisheiden - change - 21 Nov 2017
Title
Captcha not displayed when ยงclass not set
Captcha not displayed when $class not set
avatar dennisheiden dennisheiden - edited - 21 Nov 2017
avatar franz-wohlkoenig franz-wohlkoenig - change - 21 Nov 2017
Category com_plugins
avatar Quy
Quy - comment - 8 Dec 2017

Per the docblock:

	 * @param   string  $class  The class of the field. This should be passed as
	 *                          e.g. 'class="required"'.

Changing:

public function onDisplay($name = null, $id = 'dynamic_recaptcha_1', $class = '')

to the following should fix this issue:

public function onDisplay($name = null, $id = 'dynamic_recaptcha_1', $class = 'class=""')
avatar franz-wohlkoenig franz-wohlkoenig - change - 22 Dec 2017
Status New Discussion
avatar franz-wohlkoenig franz-wohlkoenig - change - 22 Dec 2017
Status Discussion Information Required
avatar franz-wohlkoenig
franz-wohlkoenig - comment - 26 Dec 2017

If this Issue get no Response, it will be closed at 26th January 2018.

avatar Quy
Quy - comment - 27 Dec 2017

See PR #19190

avatar Quy Quy - change - 27 Dec 2017
Status Information Required Closed
Closed_Date 0000-00-00 00:00:00 2017-12-27 23:24:11
Closed_By Quy
avatar joomla-cms-bot joomla-cms-bot - change - 27 Dec 2017
Closed_By Quy joomla-cms-bot
avatar joomla-cms-bot joomla-cms-bot - close - 27 Dec 2017
avatar joomla-cms-bot
joomla-cms-bot - comment - 27 Dec 2017

Set to "closed" on behalf of @Quy by The JTracker Application at issues.joomla.org/joomla-cms/18773

avatar Quy
Quy - comment - 3 May 2018

@dennisheiden Please test PR #19190.

Add a Comment

Login with GitHub to post a comment