Звездный рейтинг в комментариях Tickets
        Здравствуйте! Для моей странички с отзывами понадобилось прикрутить звездный рейтинг. В для реализации данной возможности воспользовался этим решением. Только я использовал для себя плагин Star Rating.
В форму добавил
Может специалисты подскажут, как сделать, чтобы все заработало. Заранее спасибо!
    
    
                                                                                
            В форму добавил
<div class="form-group">
	<label for="comment-stars">Оставьте оценку</label>
        <input id="comment-stars" name="starrating" value="[[+properties.starrating]]" class="rating">
        <span class="error"></span>
</div>В чанке вывода<input value="[[+properties.starrating]]" class="rating-loading">Проблема в том, что в момент нажатия кнопки «Написать» появляется новый комментарий без звезд рейтинга с крутящимся прелоадером. Плюс сбиваются стили оформления рейтинга в самой форме. После обновления страницы, рейтинг отображается как нужно. Мне кажется, что где-то какой-то косяк в javascript, но я в нем не силен и не могу понять, где ошибка.Может специалисты подскажут, как сделать, чтобы все заработало. Заранее спасибо!
Комментарии: 8
                Думаю что проще будет использовать — easyComm, там всё из коробки работает.            
                    
                Это понятно, что проще, но мы не ищем простых путей.) На самом деле мне понравилась работа самого рейтинга, его возможности. Да и для себя было бы полезно разбираться в таких вещах.            
                    
                Надо повесить инициализацию плагина звёздочек после успешной отправки формы. Скорее всего js плагин повешен на событие загрузки страницы, после отправки формы плагин не знает и не работает            
                    
                Это в том случае когда именно Tickets нужен, а если не принципиально, то и вправду надо EasyComm использовать, там ещё учитывается/собирается рейтинг товара/ресурса, это для того чтобы потом с этими значениями что нибудь можно будет поделать, например фильтровать/сортировать            
                    
                Дело в том, что изначально звездочки были не нужны. И мне сразу хватало возможностей Tickets. Просто все зашло слишком далеко. Я все оформил, а также сделал вывод отзывов на главной странице. И тут вдруг понадобились звезды.) Вот я и решил довести дело до конца, надеясь на помощь специалистов.            
                    
                Скопируйте файл assets/components/tickets/js/web/default.js, дайте другое название и укажите в системных настройках.
В новом файле, где-то 315-ая строка:
                    В новом файле, где-то 315-ая строка:
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) {
                    $(button).removeAttr('disabled');
                    $(document).trigger('tickets_comment_save', response);
                    if (response.success) {
			// Тут запустите свой плагин звездного рейтинга  <<<<<------- ВОТ ЗДЕСЬ
                        Tickets.forms.comment(false);
                        $('#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 {
                        Tickets.Message.error(response.message);
                        if (response.data) {
                            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('
'));
                            }
                        }
                    }
                    if (response.data.captcha) {
                        $('input[name="captcha"]', form).val('').focus();
                        $('#comment-captcha', form).text(response.data.captcha);
                    }
                }
            });
            return false;
        },            
                Спасибо! Сделал как Вы сказали. Но сработало только через setTimeout
Еще скажите, где можно почитать, как вывести в админке Тикетов значения дополнительных полей, созданных с помощью JSON поля properties, с возможностью редактирования.
                    setTimeout(function() { 
	$(".rating-loading").rating({
	showClear:false,
	disabled:true
});
}, 100);Еще раз спасибо!Еще скажите, где можно почитать, как вывести в админке Тикетов значения дополнительных полей, созданных с помощью JSON поля properties, с возможностью редактирования.
                Здравствуйте. Решил попробывать ваш способ и у меня такая же проблема крутящимся прелоадером, после перезагрузки рейтинг появляется можете пожалуйста помочь
В форму добавил
                    В форму добавил
<div class="form-group">
	<label for="comment-stars">Оставьте оценку</label>
        <input id="input-4-ltr-star-md" type="number" name="input-4-ltr-star-md" value="[[+properties.input-4-ltr-star-md]]" class="kv-ltr-theme-fas-star" dir="ltr" data-size="md">
        <span class="error"></span>
</div>В чанке вывода<input value="[[+properties.input-4-ltr-star-md]]" class="kv-ltr-theme-fas-star rating-loading" dir="ltr" data-size="xs"><script>
    	$('.rating-loading').rating({
        hoverOnClear: false,
        hoverEnabled: false,
        hoverChangeStars: false,
        hoverOnClear: false,
        displayOnly: 'readonly',
        theme: 'krajee-fas',
        containerClass: 'is-star',
        stars: "5",
        defaultCaption: '{rating} из 5',
        clearCaption: 'Нет оценки',
        min: 0, 
        max: 5, 
        step: 1,
        starCaptions: function (rating) {
            return rating == 1 ? '1 из 5' : rating + ' из 5';
        },
        filledStar: '<i class="fas fa-star"></i>',
        emptyStar: '<i class="far fa-star"></i>'
    });
    setTimeout(function() { 
	$(".rating-loading").rating({
	showClear:false,
	disabled:true
});
}, 100);
    </script>            
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.