приводим в порядок загрузку изображений
This commit is contained in:
108
js/comment.js
108
js/comment.js
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user