приводим в порядок загрузку изображений

This commit is contained in:
2025-12-30 12:00:45 +05:00
parent 85bc016bc7
commit 0fe346b23f

View File

@@ -469,32 +469,38 @@ $doc.off('click', '.mod_comment_edit').on('click', '.mod_comment_edit', function
var cleanText = $textBlock.html().replace(/<br\s*\/?>/mg, "\n").trim();
// --- СБОР ТЕКУЩИХ КАРТИНОК (ТОТ САМЫЙ РАБОЧИЙ КОД) ---
var existingImagesHtml = '';
var $foundImgs = $wrapper.find('img').filter(function() {
return !$(this).hasClass('star-choice') && !$(this).hasClass('avatar') && !$(this).closest('.stars').length;
});
// --- СБОР ТЕКУЩИХ КАРТИНОК (ТОЧНЫЙ ПОИСК ПО КОНТЕЙНЕРУ) ---
var existingImagesHtml = '';
if ($foundImgs.length > 0) {
existingImagesHtml = '<div class="d-flex flex-wrap gap-2 mb-3" style="border: 1px dashed #ccc; padding: 10px; background: #fff;">';
$foundImgs.each(function(index) {
var imgSrc = $(this).attr('src');
var fileName = imgSrc.split('/').pop();
existingImagesHtml += `
<div id="existing_wrapper_${cid}_${index}" class="position-relative">
<img src="${imgSrc}" class="img-thumbnail" style="width: 80px; height: 80px; object-fit: cover;">
<button type="button" class="btn btn-danger btn-sm position-absolute top-0 end-0 remove-existing-img"
data-id="${cid}"
data-img-path="${fileName}"
data-target="existing_wrapper_${cid}_${index}"
style="padding: 0 5px; margin: 2px; line-height: 1; z-index: 10;">
<i class="bi bi-x-lg" style="font-size: 0.8rem;"></i>
</button>
</div>`;
});
existingImagesHtml += '</div>';
}
// Ищем картинки строго внутри контейнера вложений конкретного комментария
var $imageContainer = $('#image_container_' + cid);
var $foundImgs = $imageContainer.find('img');
if ($foundImgs.length > 0) {
existingImagesHtml = '<div class="d-flex flex-wrap gap-2 mb-3" style="border: 1px dashed #ccc; padding: 10px; background: #fff; border-radius: 8px;">';
$foundImgs.each(function(index) {
var imgSrc = $(this).attr('src');
if (!imgSrc) return;
// Извлекаем имя файла из пути для передачи на сервер
var fileName = imgSrc.split('/').pop();
existingImagesHtml += `
<div id="existing_wrapper_${cid}_${index}" class="position-relative">
<img src="${imgSrc}" class="img-thumbnail" style="width: 80px; height: 80px; object-fit: cover;">
<button type="button" class="btn btn-danger btn-sm position-absolute top-0 end-0 remove-existing-img"
data-id="${cid}"
data-img-path="${fileName}"
data-target="existing_wrapper_${cid}_${index}"
style="padding: 0 5px; margin: 2px; line-height: 1; z-index: 10;"
title="Удалить">
<i class="bi bi-x-lg" style="font-size: 0.8rem;"></i>
</button>
</div>`;
});
existingImagesHtml += '</div>';
}
// --- РЕЙТИНГ (ВОЗВРАЩЕНА ПОЛНАЯ ОРИГИНАЛЬНАЯ ЛОГИКА) ---
var starsEditBlock = '';
@@ -550,6 +556,34 @@ $doc.off('click', '.mod_comment_edit').on('click', '.mod_comment_edit', function
$foundImgs.hide();
$textBlock.after(editHtml);
// --- ПРЕВЬЮ НОВЫХ ФАЙЛОВ ПРИ РЕДАКТИРОВАНИИ ---
$('#new_file_' + cid).on('change', function() {
var files = this.files;
var $previewContainer = $('#new_files_preview_' + cid);
if ($previewContainer.length === 0) {
$(this).after(`<div id="new_files_preview_${cid}" class="d-flex flex-wrap gap-2 mt-2"></div>`);
$previewContainer = $('#new_files_preview_' + cid);
}
$previewContainer.empty();
if (files) {
$.each(files, function(i, file) {
if (!file.type.match('image.*')) return;
var reader = new FileReader();
reader.onload = function(e) {
$previewContainer.append(`
<div class="position-relative">
<img src="${e.target.result}" class="img-thumbnail" style="width: 80px; height: 80px; object-fit: cover; border: 2px solid #0d6efd;">
<span class="badge bg-primary position-absolute top-0 start-0 m-1" style="font-size: 0.6rem;">NEW</span>
</div>`);
};
reader.readAsDataURL(file);
});
}
});
// --- КОНЕЦ ВСТАВКИ ---
// Добавил поддержку лимита символов
if ($.fn.limit) {
@@ -622,11 +656,25 @@ $doc.on('change', 'input[id^="new_file_"]', function() {
$('#edit_preview_wrapper_' + cid).addClass('d-none');
});
$doc.on('click', '.cancelButton', function() {
var $container = $(this).closest('.edit-form-container');
$container.prev('.mod_comment_text').show();
$container.remove();
});
// Обработка кнопки "Отмена" при редактировании
$doc.on('click', '.cancelButton', function() {
var $container = $(this).closest('.edit-form-container');
// Находим главную обертку этого конкретного комментария
var $wrapper = $container.closest('[id^="comment_wrapper_"]');
// 1. Возвращаем текст
$wrapper.find('.mod_comment_text').show();
// 2. Возвращаем оригинальный блок с картинками
// Ищем все возможные варианты названий блоков, которые мы скрывали
$wrapper.find('.mod_comment_attached_image, .comment-files, .attached-images').show();
// 3. Если мы скрывали изображения напрямую через $foundImgs.hide(), показываем их
$wrapper.find('img').show();
// 4. Удаляем форму редактирования
$container.remove();
});
$doc.on('click', '.saveButton', function() {
var $btn = $(this);