Указан неверный код защиты от спама. 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>
Vladimir
15 февраля 2022, 10:02
modx.pro
615
0

Комментарии: 2

Vladimir
15 февраля 2022, 10:04
0
Можно сменить на нормальную капчу от гугла? или придётся возится с этой?
    cronAbs
    04 декабря 2024, 12:05
    0
    Нужно проверять метод save в файле assets/components/tickets/js/web/default.js
    Там лаг с 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 раза или/ жмешь отправить, а потом только вводишь, зато хоть работает, пример выше.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    2