Указан неверный код защиты от спама. Tickets, как исправить?
Заполняю форму пишет что код не правильный а код 4 + 1, я написал 5, вроде правильно, но tickets знает лучше и не отправляет форму, в логах пусто.
Код такой
Код такой
{'!TicketComments' | snippet : [
'allowGuest' => '1',
'autoPublish' => '0',
'autoPublishGuest' => '0',
'tplCommentForm' => 'reviewsForm',
'tplCommentFormGuest' => 'reviewsForm',
'tplCommentGuest' => 'reviewsGuestComment',
'tplComments' => 'reviewsWrapper'
]}
Код с формой<form class="callback__form" id="comment-form">
<input type="text" name="name" id="comment-name" class="def-input" placeholder="{$_modx->getChunk('translate', ['ru' => 'Как вас зовут?', 'kz' => 'Сіздің атыңыз кім?'])}">
<div id="comment-preview-placeholder"></div>
<input type="hidden" name="thread" value="[[+thread]]"/>
<input type="hidden" name="parent" value="0"/>
<input type="hidden" name="id" value="0"/>
<input type="hidden" name="form_key" value="[[+formkey]]">
<input type="text" name="email" class="def-input" value="[[+email]]" id="comment-email" placeholder="{$_modx->getChunk('translate', ['ru' => 'Почта', 'kz' => 'Пошта'])}">
<div class="def-input" style="padding-bottom:0;border-bottom:0;">
<label for="captcha" id="comment-captcha">[[+captcha]]</label>
<input type="text" name="captcha" value="" id="captcha" class="form-control def-input" style="width:100%;"/>
</div>
<div class="def-input">
<div class="stars" data-stars="3">
<svg height="25" width="23" class="star rating" data-rating="1">
<polygon points="9.9, 1.1, 3.3, 21.78, 19.8, 8.58, 0, 8.58, 16.5, 21.78" style="fill-rule:nonzero;"/>
</svg>
<svg height="25" width="23" class="star rating" data-rating="2">
<polygon points="9.9, 1.1, 3.3, 21.78, 19.8, 8.58, 0, 8.58, 16.5, 21.78" style="fill-rule:nonzero;"/>
</svg>
<svg height="25" width="23" class="star rating" data-rating="3">
<polygon points="9.9, 1.1, 3.3, 21.78, 19.8, 8.58, 0, 8.58, 16.5, 21.78" style="fill-rule:nonzero;"/>
</svg>
<svg height="25" width="23" class="star rating" data-rating="4">
<polygon points="9.9, 1.1, 3.3, 21.78, 19.8, 8.58, 0, 8.58, 16.5, 21.78" style="fill-rule:nonzero;"/>
</svg>
<svg height="25" width="23" class="star rating" data-rating="5">
<polygon points="9.9, 1.1, 3.3, 21.78, 19.8, 8.58, 0, 8.58, 16.5, 21.78" style="fill-rule:nonzero;"/>
</svg>
<input type="hidden" name="rating" value="">
</div>
</div>
<textarea name="message" class="def-input" placeholder="{$_modx->getChunk('translate', ['ru' => 'Оставьте свой комментарий', 'kz' => 'Пікір қалдырыңыз'])}"></textarea>
<input type="hidden" name="pageName" value="{$_modx->resource.pagetitle}">
<input type="hidden" name="pageUrl" value="{$_modx->config.site_url}{$_modx->resource.uri}">
<button class="def-btn" type="submit">
<span>{$_modx->getChunk('translate', ['ru' => 'Отправить', 'kz' => 'жіберу'])}</span>
</button>
</form>
Комментарии: 2
Можно сменить на нормальную капчу от гугла? или придётся возится с этой?
Нужно проверять метод save в файле assets/components/tickets/js/web/default.js
Там лаг с label id и input id и как раз если убрать из label id, то и произойдёт ошибка. Конечно если важно, чтобы валидатор был без ошибок, то нужно добавить class и в скрипте поменять "#" на "."
К слову: Только вот непонятно почему после этих изменений отправляется только после второго раза, как жмешь кнопку отправить. То есть приходится вводить капчу 2 раза или/ жмешь отправить, а потом только вводишь, зато хоть работает, пример выше.
Там лаг с label id и input id и как раз если убрать из label id, то и произойдёт ошибка. Конечно если важно, чтобы валидатор был без ошибок, то нужно добавить class и в скрипте поменять "#" на "."
// Чанк с формой
<label for="comment-captcha" class="comment-captcha"[[-id="comment-captcha"]]>[[+captcha]]</label>
<input type="text" name="captcha" value="" id="comment-captcha" class="form-control" />
// Метод save
save: function (form, button) {
$(form).ajaxSubmit({
data: {action: 'comment/save'},
url: TicketsConfig.actionUrl,
form: form,
button: button,
dataType: 'json',
beforeSubmit: function () {
clearInterval(window.timer);
$('.error', form).text('');
$(button).attr('disabled', 'disabled');
return true;
},
success: function (response) {
form = '#comment-form';
$(button).removeAttr('disabled');
$(document).trigger('tickets_comment_save', response);
if (response.success) {
Tickets.forms.comment(false);
$('input[name="captcha"]', form).val('');
$('#comment-preview-placeholder').html('').hide();
$('#comment-editor', form).val('');
$('.ticket-comment .comment-reply a').show();
// autoPublish = 0
if (!response.data.length && response.message) {
Tickets.Message.info(response.message);
}
else {
Tickets.comment.insert(response.data.comment);
Tickets.utils.goto($(response.data.comment).attr('id'));
}
Tickets.comment.getlist();
prettyPrint();
}
else {
var cap = $('#comment-form-placeholder label[for=comment-captcha]').text().replace(/[^0-9+]/gi, '');
if (cap.indexOf('+') > 0 ) {
numbers = cap.split('+');
} else {
numbers = cap.split('-');
}
var sum = numbers.reduce(function(a, b) {
return parseInt(a) + parseInt(b);
}, 0);
if (response.data && $('input[name="captcha"]', form).val() != sum) {
Tickets.Message.error(response.message);
var errors = [];
var i, field;
for (i in response.data) {
field = response.data[i];
var elem = $(form).find('[name="' + field.field + '"]').parent().find('.error');
if (!elem.length) {
elem = $(form).find('.' + field.field + '-error');
}
if (elem.length) {
elem.text(field.message)
}
else if (field.field && field.message) {
errors.push(field.field + ': ' + field.message);
}
}
if (errors.length) {
Tickets.Message.error(errors.join('
'));
}
$('input[name="captcha"]', form).val('');
}
}
if (response.data.captcha) {
$('.comment-captcha', form).text(response.data.captcha);
}
}
});
return false;
},
К слову: Только вот непонятно почему после этих изменений отправляется только после второго раза, как жмешь кнопку отправить. То есть приходится вводить капчу 2 раза или/ жмешь отправить, а потом только вводишь, зато хоть работает, пример выше.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.