Как перевести quip на recaptchav2

Если вы использовали на своем сайте для комментариев модуль quip, то скорее всего вы используете recaptcha для защиты от спама. Примерно с пол года назад google начал присылать предупреждения о том что вышла новая версия recaptcha v2, а поддержка старой будет в скоре приостановлена.

Сайт довольно продолжительное время жил своей жизнью, но вот наконец-то появилось на него время. Было заменены старый дизайн из нулевых, на bootstrap. Выступил в роли на пощупать :). В моих руках красотой конечно не блещет, но функцию свою выполнил, адаптивный веб-дизайн. В консолях гугла и яндекса уже давно висели предупреждения о том что сайт не предназначен для мобильных устройств, с прямым намеком на то что он будет понижен в результатах выдачи. А показателями посещения увы похвастаться не могу.

Так вот... Поискал готовые дополнения для modx revo и нашел уже  готовое решение recaptchav2. И всё бы хорошо, но в примерах и описаниях используется в связке в formIt и Login. Везде при этом использовались ловушки, они же hook'и. Курочить сильно старую капчу не хотелось, поэтому родная капча была сразу же отключена &recaptcha=`0`. В описании quip нашел информацию о том что он теперь умеет работать с hook'ами и добавил параметр &preHooks=`recaptchav2`

Вызов сниппета QuipReply получился таким:


[[!QuipReply? 
&preHooks=`recaptchav2`
&thread=`blog-post-[[*id]]`
&notifyEmails=`your@site.com`
&closeAfter=`0`
&recaptcha=`0`
&tplAddComment=`tplAddComment`
&disableRecaptchaWhenLoggedIn=`0`]]

в шаблоне добавления комментария добавил вызов рендера recaptchav2:


<div class="quip-fld recaptcha">
    [[+quip.recaptcha_html]]
    <span class="quip-error">[[+error.recaptcha]]</span>
    
    [[!recaptchav2_render]]
    <span class="quip-error">[[!+fi.error.recaptchav2_error]]</span>
</div>

 в настройках системы заполнил параметры recaptchav2.secret_key и recaptchav2.site_key.

Капча новая появилась. Более того она даже успешно не давала добавить комментарий и делал это слишком хорошо. Комментарий нельзя было добавить даже если капча пройдена.

Тут настало времени безудержного веселья. Расставил логи в сниппете recaptchav2 и выяснилось что она не видит данных ответа, которе успешно появляются на форме в div блоке 'g-recaptcha-response'. Расставил логи в классе создания комментарие core/components/quip/processors/web/comment/create.php и засел над изучение этим этих самых логов. Картина представла следующая:

  1.  в классе create.php 'g-recaptcha-response' есть и доступен через массив $fields
  2. в сниппете recaptchav2 данных нет, ни через $hook->getValue ни через $fields. Ничего. Ровно по нулям

Ха! подумалось глубокив вечером и добавил в в классе создания комментариев запись в хук: $hook->fields['g-recaptcha-response'] = $fields['g-recaptcha-response'];

Сохранил. Довольный запускаю и.... ничего не меняется от слова совсем. В сниппете капчи по прежнему данных ответа со страницы нет. WTF!?!?

Гугл про хуки мне ничего внятного так и не сказал. Отлаживаемся дальше и ищем способ как же передать в наш сниппет данные ответа

В итоге всё уперлось в запуск preHook. Пробую передать туда массив с полями:

 


-$quip->preHooks->loadMultiple($this->getProperty('preHooks',''),$this->getProperties(),array(
+$quip->preHooks->loadMultiple($this->getProperty('preHooks',''),$fields,array(

 

и о чудо! Всё завелось!

Так-с как бы теперь поделится то своим знанием? Вбиваю в поиск проблемную строчку кода и получаем первую же ссылку на аналогичный pull-request.

Больше всего настораживает что дополнение последний раз обновлялось в 12м году. может кто знает жив ли еще проект и как связаться с автором, оставьте инфу в комментарии буду очень благодарен


Читайте также

О Modx

MODx – это профессиональный инструмент вебмастера. Эта система open source, поэтому она…

Блог на MODx Revolution. Создание шаблона. (часть 1)

Это руководство должно помочь Вам установить гибкое и мощное решение для блога в MODx…


Подпишись на нашу группу в контакте и будь в курсе обновлений:


Статистика VkPlayer

day week month year
0(0) 1(0) 18 385



Комментарии (2)

  1. Igor Kniazeff:
    Сен 01, 2018 at 04:07

    работает







Разрешённые теги: <b><i><br>Добавить новый комментарий: