по адресу \plugins\system\cdcaptcha\extension\site\ создаем файл cdcaptcha_com_breezingforms.php с таким содержанием:
<?php
// no direct access
defined('_JEXEC') or die;
/**
* WCMS! Contact Component
*/
class cdcaptcha_com_breezingforms
{
public $name = 'CDCaptcha and BreezingForms';
public $version = '2.5';
public $enabled = 1;
public $redirect = '';
public $rememberFields = 1;
public $isAjax = 0;
/**
* WCMS! Application Input
* @var null
*/
private $JInput = null;
/**
* Constructor
*/
public function __construct()
{
$this->JInput = JFactory::getApplication()->input;
}
/**
* Get Instance
* @return instance
*/
public static function getInstance()
{
static $instance;
if ($instance == null) $instance = new cdcaptcha_com_breezingforms();
return $instance;
}
/**
* Form object
* @return object Form element.
*/
public function formObject()
{
$formObject = new stdClass();
$view = $this->JInput->get->get('view', '', 'cmd');
//var_dump($view);
//{WebXlooForms:ContactUs}
switch($view) {
case 'form':
$formObject->formElement = 'form';
$formObject->submitElement = 'input[name="ff_nm_Submit"]';
$formObject->scriptDeclaration = "
container.before('<style>#cdcaptcha {margin: 10px 0 10px -35%; width: 300px;} #cdcaptcha .ui-widget .ui-widget {width: 90%;} #cdcaptcha .infotext {font-size: 1em; font-weight: bold; text-align: center; color: #183e65;} #cdcaptcha .status .status_locked {color: red;} #cdcaptcha .status .status_unlocked {color: green;} #cdcaptcha .infotext {font-style: normal;} #cdcaptcha .status {display:none;}</style><script>$(\".infotext\").html(\"NO ROBOTS ALLOWED\"); $(\".captcha_header\").html(\"\"); $(\".status\").before(\"<center><b>slide to submit</b></center><br>\"); </script>');
container.appendTo($('div', container.prev('div.Submit')));
";
$formObject->rememberFields = array(
'jform'=> array(
'ff_nm_in_name',
'contact_email',
'contact_subject',
'contact_message',
'contact_email_copy'
)
);
break;
default:
$formObject->formElement = 'form';
$formObject->submitElement = 'input[name="ff_nm_Submit"]';
$formObject->scriptDeclaration = "
container.before('<style>#cdcaptcha {margin: 10px 0 10px -35%; width: 300px;} #cdcaptcha .ui-widget .ui-widget {width: 90%;} #cdcaptcha .infotext {font-size: 1em; font-weight: bold; text-align: center; color: #183e65;} #cdcaptcha .status .status_locked {color: red;} #cdcaptcha .status .status_unlocked {color: green;} #cdcaptcha .infotext {font-style: normal;} #cdcaptcha .status {display:none;}</style><script>$(\".infotext\").html(\"NO ROBOTS ALLOWED\"); $(\".captcha_header\").html(\"\"); $(\".status\").before(\"<center><b>Slide to submit</b></center><br>\"); </script>');
/*container.appendTo($('div', container.prev('div.Submit')));
console.log(container.parent().before('555'));*/
";
break;
}
return $formObject;
}
/**
* Check captcha if required
* @return boolean True if captcha is checked.
*/
public function checkCaptchaRules()
{
$post_task = $this->JInput->post->get('task', '', 'cmd');
switch($post_task)
{
case 'form.submit':
return true;
break;
default: break;
}
return false;
}
}
?>
дальше стили и код правим под свои нужды.
п.с. кнопка сабмита должа иметь имя "Submit" - это же правится в коде тут ff_nm_Submit
апдейт 28.02.2014
обнаружилась проблема, что если у кнопки сабмита в ХТМЛ убрать disabled, то форма отсылается без капчи. решилось так:
в /components/com_breezingforms/facileforms.process.php находим (примерно 2776 строка)
$params = ' action="' . $url . '"' .
и меняем на:
$params = ' action="about:blank' . $url . '"' .
далее в /plugins/system/cdcaptcha/extension/site/cdcaptcha_com_breezingforms.php добавляем проверку на драг слайдера и вставляем скрипт убирания about:blank
$formObject->sliderStop = "
console.log('Hello world');
$(function() {
$('form').attr('action', function(jj,ww){
return ww.replace('about:blank','');
});
});
console.log('Hello world2');
";

