Joomla 4. Компонент K2 и форк K2ForJ4 (18 янв 2024)

Если вас, как и меня, достало выслушивать (вычитывать) бесконечные обещания разработчика K2 опубликовать версию компонента K2 под Joomla 4 (без чего невозможно реализовать апгрейд from Joomla 3 to Joomla 4) - воспользуйтесь форком K2ForJ4. Который в данный момент установлен и без каких-либо проблем работает на этом веб-сайте.

Как подключить recaptcha 2.0

Больше
7 года 10 мес. назад - 7 года 10 мес. назад #1 от Aleksej
Aleksej создал тему: Как подключить recaptcha 2.0
Топик является продолжением статьи Как подключить recaptcha 2.0. jTriad contact form и показывает git show, иллюстрирующий процесс подключения recaptcha 2.0 для модуля jTriad Contact form. Приятного всем чтения!


Code:
Reinit recaptcha all time when error happened instead of ask user about it diff --git a/assets/js/script.js b/assets/js/script.js index 4003cc1..ae97480 100644 --- a/assets/js/script.js +++ b/assets/js/script.js @@ -16,27 +16,29 @@ jQuery(document).ready(function(){ }) jQuery('#contact-form').submit(function(e){ - if(use_ajax){ - jQuery('#loading').css('visibility','visible'); - jQuery.post( - window.location - ,jQuery(this).serialize() + '&ajax=1', - function(data){ - if(data.Error){ - jQuery('#errorMessage').html(data.Data.strErr); - jQuery('#errorMessage').slideDown(); - if (data.Data.err[7]) - jQuery.validationEngine.buildPrompt('#recaptcha_response_field', '* Неправильное значение! На - } - else{ - jQuery('#contact-form').hide('slow').after('<h1>Спасибо!</h1>'); - } + if(use_ajax){ + jQuery('#loading').css('visibility','visible'); + jQuery.post( + window.location + ,jQuery(this).serialize() + '&ajax=1', + function(data){ + if(data.Error){ + jQuery('#errorMessage').html(data.Data.strErr); + jQuery('#errorMessage').slideDown(); - jQuery('#loading').css('visibility','hidden'); + /* Always reinit recaptcha element to update code and check */ + jQuery('#dynamic_recaptcha_1').replaceWith(data.recaptchaHTML); + window.JoomlaInitReCaptcha2(); } - ,'json' - ); - } - e.preventDefault(); + else{ + jQuery('#contact-form').hide('slow').after('<h1>Спасибо!</h1>'); + } + + jQuery('#loading').css('visibility','hidden'); + } + ,'json' + ); + } + e.preventDefault(); }) }); diff --git a/helper.php b/helper.php index 61ecca4..9aae245 100644 --- a/helper.php +++ b/helper.php @@ -9,6 +9,8 @@ defined('_JEXEC') or die; +JPluginHelper::importPlugin('captcha'); + /** * Helper for mod_contactform_masterpro * @@ -36,9 +38,7 @@ class ModContactformMasterpro{ if(!self::checkLen($input->getString('message'))) $err[6] = '6) Сообщение должно быть заполнено!'; - JPluginHelper::importPlugin('captcha'); - $dispatcher = JDispatcher::getInstance(); - $res = $dispatcher->trigger('onCheckAnswer', $input->get('recaptcha_response_field')); + $res = JDispatcher::getInstance()->trigger('onCheckAnswer', $input->get('recaptcha_response_field')); if(!(isset($res[0]) and $res[0])){ $err[7] = '7) Не корректный код подтверждения!'; } @@ -109,13 +109,16 @@ IP: ' . $input->server->get('REMOTE_ADDR') . '<br /><br /> * @param $data Will be put in session var state and returned in json Data field **/ public static function processAnswer($isAjax, $status, $data){ + $recaptcha = JDispatcher::getInstance()->trigger('onDisplay', array(null, 'dynamic_recaptcha_1', 'class=""')); + $recaptchaHTML = isset($recaptcha[0]) ? $recaptcha[0] : ''; + if($isAjax){ - exit(json_encode(array('Error' => $status, 'Data' => $data))); + exit(json_encode(array('Error' => $status, 'Data' => $data, 'recaptchaHTML' => $recaptchaHTML))); + } + else if($input->server->getString('HTTP_REFERER')){ + $session->set('state', $data, SESSION_NAMESPACE); + header('Location: ' . $input->server->getString('HTTP_REFERER')); } -// else if($input->server->getString('HTTP_REFERER')){ -// $session->set('state', $data, SESSION_NAMESPACE); -// header('Location: ' . $input->server->getString('HTTP_REFERER')); -// } exit(); } diff --git a/tmpl/default.php b/tmpl/default.php index 0209eff..d8d37ce 100644 --- a/tmpl/default.php +++ b/tmpl/default.php @@ -12,7 +12,7 @@ $session->clear('email', SESSION_NAMESPACE); $oldData = $session->get('postTwergewrtgert', '', SESSION_NAMESPACE); ?> -<?=$css?> +<?=@$css?> <div id="main-container"> @@ -21,7 +21,7 @@ $oldData = $session->get('postTwergewrtgert', '', SESSION_NAMESPACE); <table width="100%" border="0" cellspacing="0" cellpadding="5"> <tr> <td width="15%"><label for="name">ФИО</label></td> - <td width="70%"><input type="text" class="validate[required,custom[onlyLetter]]" name="name" id="name" value="<?=htmlentities + <td width="70%"><input type="text" class="validate[required,custom[onlyLetter]]" name="name" id="name" value="<?=htmlentities <td width="15%" id="errOffset">&nbsp;</td> </tr> <tr> @@ -40,7 +40,7 @@ $oldData = $session->get('postTwergewrtgert', '', SESSION_NAMESPACE); </tr> <tr> <td><label for="phone">Телефон</label></td> - <td><input type="text" class="validate[required,custom[telephone]]" name="phone" id="phone" value="<?=htmlentities($oldData[' + <td><input type="text" class="validate[required,custom[telephone]]" name="phone" id="phone" value="<?=htmlentities(@$oldData[ <td>&nbsp;</td> <tr> <td><label for="vacancy">Вакансия</label></td> @@ -58,17 +58,20 @@ $oldData = $session->get('postTwergewrtgert', '', SESSION_NAMESPACE); </tr> <tr> <td valign="top"><label for="message">Опыт работы</label></td> - <td><textarea name="message" id="message" class="validate[required]" cols="30" rows="7"><?=htmlentities($oldData['message'], + <td><textarea name="message" id="message" class="validate[required]" cols="30" rows="7"><?=htmlentities(@$oldData['message'], <td valign="top">&nbsp;</td> </tr> <tr> <td valign="top"><label for="message1">Дополнительно</label></td> - <td><textarea name="message1" id="message1" cols="30" rows="7"><?=htmlentities($oldData['message1'], ENT_QUOTES, "UTF-8")?></ + <td><textarea name="message1" id="message1" cols="30" rows="7"><?=htmlentities(@$oldData['message1'], ENT_QUOTES, "UTF-8")?>< <td valign="top">&nbsp;</td> </tr> <tr> - <td colspan="3"><? - $recaptcha = $dispatcher->trigger('onDisplay', array(null, 'dynamic_recaptcha_1', 'class=""')); echo (isset($recaptcha[0])) ? $recaptcha[0] : ''; ?></td + <td colspan="3"><? + $recaptcha = $dispatcher->trigger('onDisplay', array(null, 'dynamic_recaptcha_1', 'class=""')); + echo (isset($recaptcha[0])) ? $recaptcha[0] : ''; + ?> + </td> </tr> <tr> <td valign="top">&nbsp;</td> (END)
Последнее редактирование: 7 года 10 мес. назад пользователем Aleksej.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Dev banner 3
Работает на Kunena форум