diff --git a/js/comment.js b/js/comment.js
index 22157db..1147a44 100644
--- a/js/comment.js
+++ b/js/comment.js
@@ -119,7 +119,26 @@
initCommentTimers();
var $doc = $(document);
- // --- ЛОГИКА ВЫБОРА РЕЙТИНГА В ФОРМЕ (НОВОЕ) ---
+ // --- ЛОГИКА ПРЕДПРОСМОТРА ИЗОБРАЖЕНИЯ (НОВАЯ ФОРМА) ---
+ $doc.on('change', '#comment_image', function() {
+ var input = this;
+ if (input.files && input.files[0]) {
+ var reader = new FileReader();
+ reader.onload = function(e) {
+ $('#image_preview_img').attr('src', e.target.result);
+ $('#image_preview_wrapper').removeClass('d-none');
+ }
+ reader.readAsDataURL(input.files[0]);
+ }
+ });
+
+ $doc.on('click', '#remove_image_btn', function() {
+ $('#comment_image').val('');
+ $('#image_preview_wrapper').addClass('d-none');
+ $('#image_preview_img').attr('src', '#');
+ });
+
+ // --- ЛОГИКА ВЫБОРА РЕЙТИНГА В ФОРМЕ ---
$doc.on('mouseenter', '.star-choice', function() {
var val = $(this).data('value');
$(this).parent().find('.star-choice').each(function() {
@@ -143,40 +162,30 @@
});
});
- // Универсальный обработчик клика по звездам (и в новой форме, и в ред.)
$doc.on('click', '.star-choice', function() {
var val = $(this).data('value');
- var $parent = $(this).parent();
-
- // 1. Ищем инпут для формы редактирования (он находится внутри .rating-edit-block)
var ratingInput = $(this).closest('.rating-edit-block').find('input[type="hidden"]');
-
if (ratingInput.length) {
ratingInput.val(val);
} else {
- // 2. Ищем инпут для основной формы (по ID)
$('#comment_user_rating').val(val);
}
-
- // Визуально фиксируем звезды сразу после клика
$(this).prevAll().addBack().removeClass('bi-star').addClass('bi-star-fill');
$(this).nextAll().removeClass('bi-star-fill').addClass('bi-star');
});
- // Сброс звезд при очистке всей формы (кнопка Reset)
$doc.on('click', '#buttonReset', function() {
$('#comment_user_rating').val(0);
$('#user_rating_stars .star-choice').removeClass('bi-star-fill').addClass('bi-star');
+ $('#image_preview_wrapper').addClass('d-none');
});
- // Сброс только звезд по кнопке "Сбросить" в основной форме
$doc.on('click', '#reset_stars', function(e) {
e.preventDefault();
$('#comment_user_rating').val(0);
$('#user_rating_stars .star-choice').removeClass('bi-star-fill').addClass('bi-star');
});
- // Сброс звезд в форме редактирования
$doc.on('click', '.reset-edit-stars', function(e) {
e.preventDefault();
var cid = $(this).data('id');
@@ -198,9 +207,7 @@
$doc.on('mouseleave', '.star-item', function() {
var $parent = $(this).parent();
- if ($parent.hasClass('comment-like')) {
- $(this).css('transform', 'scale(1)');
- }
+ if ($parent.hasClass('comment-like')) { $(this).css('transform', 'scale(1)'); }
});
$doc.on('click', '.star-item', function() {
@@ -211,11 +218,7 @@
$.ajax({
url: 'index.php?module=comment&action=vote&ajax=1',
type: 'POST',
- data: {
- comment_id: commentId,
- vote: voteValue,
- ajax: 1
- },
+ data: { comment_id: commentId, vote: voteValue, ajax: 1 },
success: function(response) {
var res = response.toString().trim();
if (res.indexOf('success') !== -1) {
@@ -225,28 +228,18 @@
alert('Вы уже голосовали за этот комментарий.');
} else if (res.indexOf('own_comment') !== -1) {
alert('Нельзя голосовать за свой собственный комментарий.');
- }
- /* НОВОЕ: Обработка запрета голосования для незарегистрированных пользователей */
- else if (res.indexOf('forbidden_anon') !== -1) {
+ } else if (res.indexOf('forbidden_anon') !== -1) {
alert('Голосование доступно только зарегистрированным пользователям.');
- }
- else {
+ } else {
alert('Ошибка при обработке голоса сервером.');
}
},
- error: function(xhr) {
- alert('Ошибка связи с сервером. Статус: ' + xhr.status);
- }
+ error: function(xhr) { alert('Ошибка связи с сервером. Статус: ' + xhr.status); }
});
});
- // Глобальные кнопки управления
- $doc.on('click', '#mod_comment_close', function(e) {
- e.preventDefault(); cAction(this, 'close');
- });
- $doc.on('click', '#mod_comment_open', function(e) {
- e.preventDefault(); cAction(this, 'open');
- });
+ $doc.on('click', '#mod_comment_close', function(e) { e.preventDefault(); cAction(this, 'close'); });
+ $doc.on('click', '#mod_comment_open', function(e) { e.preventDefault(); cAction(this, 'open'); });
// КНОПКА ОТВЕТА
$doc.off('click', '.mod_comment_answer').on('click', '.mod_comment_answer', function(e) {
@@ -271,7 +264,7 @@
cAction(this, $(this).hasClass('mod_comment_lock') ? 'lock' : 'unlock');
});
- // --- РЕДАКТИРОВАНИЕ (ОБНОВЛЕННОЕ С ПРОВЕРКОЙ is_my_own) ---
+ // --- РЕДАКТИРОВАНИЕ (С ПРЕДПРОСМОТРОМ ТЕКУЩЕГО ФОТО) ---
$doc.off('click', '.mod_comment_edit').on('click', '.mod_comment_edit', function(e) {
e.preventDefault();
var cid = $(this).data('id');
@@ -280,7 +273,6 @@
if ($wrapper.find('.edit-form-container').length > 0) return;
- // ПРОВЕРКА АВТОРСТВА: используем флаг is_my_own из атрибута шаблона
var isMyOwn = $wrapper.attr('data-is-own') == '1';
var currentRating = parseInt($wrapper.attr('data-user-rating')) || 0;
@@ -290,19 +282,14 @@
var cleanText = $textBlock.html().replace(/
/mg, "\n").trim();
var currentImg = $wrapper.find('.mod_comment_attached_image img').first().attr('src');
- // Рисуем звезды ТОЛЬКО если настройка включена И это собственный комментарий (is_my_own)
var starsEditBlock = '';
if (typeof SHOW_USER_RATING !== 'undefined' && SHOW_USER_RATING == '1' && isMyOwn) {
-
- // ВНЕДРЕНИЕ: Проверка прав группы (Авторизован или разрешено анонимам)
if (typeof UGROUP !== 'undefined' && (UGROUP != '2' || RATING_ANON_SET == '1')) {
-
var starsHtml = '';
for(var i=1; i<=5; i++) {
var starClass = (i <= currentRating) ? 'bi-star-fill' : 'bi-star';
starsHtml += ``;
}
-
starsEditBlock = `