';
}
const allImagesName = document.getElementById('allImagesName');
if (allImagesName) {
allImagesName.value = '';
}
}
}
// Инициализация событий в модальном окне
function initModalEvents() {
const closeButton = modal.querySelector('.modal-close');
const cancelButton = document.getElementById('cancelUploadBtn');
const uploadButton = document.getElementById('uploadImagesBtn');
const fileInput = document.getElementById('galleryFileInput');
const addMoreButton = document.getElementById('addMoreImages');
const picsContainer = document.getElementById('picsContainer');
const allImagesName = document.getElementById('allImagesName');
const template = document.querySelector('.upload_pic.tpl');
// События закрытия
if (closeButton) closeButton.addEventListener('click', closeModal);
if (cancelButton) cancelButton.addEventListener('click', closeModal);
modal.addEventListener('click', function(e) {
if (e.target === modal) closeModal();
});
// Выбор файлов
if (addMoreButton) {
addMoreButton.addEventListener('click', function() {
fileInput.click();
});
}
if (fileInput) {
fileInput.addEventListener('change', function(e) {
if (e.target.files.length > 0) {
handleFileSelect(e.target.files, picsContainer, allImagesName, template);
}
this.value = '';
});
}
// Общее название
if (allImagesName) {
allImagesName.addEventListener('input', function() {
const inputs = picsContainer.querySelectorAll('.img_name');
inputs.forEach(input => {
if (!input.value || input.dataset.autoFilled === 'true') {
input.value = this.value;
input.dataset.autoFilled = 'true';
}
});
});
}
// Загрузка
if (uploadButton) {
uploadButton.addEventListener('click', function() {
uploadImages();
});
}
}
function handleFileSelect(files, container, commonNameInput, template) {
// Убираем сообщение "нет изображений"
if (container.querySelector('.no-images')) {
container.innerHTML = '';
}
for (let file of files) {
if (!file.type.match('image.*')) {
alert('Файл ' + file.name + ' не является изображением');
continue;
}
// Проверка размера файла
const maxSize = 5 * 1024 * 1024;
if (file.size > maxSize) {
alert('Файл ' + file.name + ' слишком большой. Максимальный размер: 5MB');
continue;
}
const reader = new FileReader();
reader.onload = function(e) {
const clone = template.cloneNode(true);
clone.style.display = 'inline-block';
// Устанавливаем превью
const preview = clone.querySelector('.preview');
preview.style.backgroundImage = `url(${e.target.result})`;
// Устанавливаем название
const nameInput = clone.querySelector('.img_name');
if (commonNameInput && commonNameInput.value) {
nameInput.value = commonNameInput.value;
nameInput.dataset.autoFilled = 'true';
}
// Обработчик удаления
const removeBtn = clone.querySelector('.remove');
removeBtn.addEventListener('click', function(e) {
e.preventDefault();
e.stopPropagation();
// Находим индекс удаляемого файла
const index = Array.from(container.children).indexOf(clone);
if (index > -1) {
selectedFiles.splice(index, 1);
}
clone.remove();
// Если не осталось изображений, показываем сообщение
if (container.children.length === 0) {
container.innerHTML = '
Пока нет выбранных изображений
';
}
});
container.appendChild(clone);
};
reader.readAsDataURL(file);
selectedFiles.push(file);
}
}
// Функция загрузки изображений
function uploadImages() {
const container = document.getElementById('picsContainer');
const imageElements = container.querySelectorAll('.upload_pic:not(.tpl)');
const formData = new FormData();
const gameId = 130;
const uploadButton = document.getElementById('uploadImagesBtn');
console.log('Проверка перед загрузкой:', {
selectedFiles: selectedFiles.length,
imageElements: imageElements.length
});
if (selectedFiles.length === 0) {
alert('Пожалуйста, выберите хотя бы одно изображение');
return;
}
formData.append('action', 'upload_multiple_gallery_images');
formData.append('game_id', gameId);
// Показываем индикатор загрузки
if (uploadButton) {
uploadButton.innerHTML = '
Загрузка...';
uploadButton.disabled = true;
}
// Показываем прогресс
const progressBars = document.querySelectorAll('.upload_progress');
progressBars.forEach(bar => {
bar.style.width = '50%';
});
selectedFiles.forEach((file, index) => {
const nameInput = imageElements[index] ? imageElements[index].querySelector('.img_name') : null;
const title = nameInput ? nameInput.value : '';
formData.append(`images[${index}]`, file);
formData.append(`titles[${index}]`, title);
});
console.log('Отправка FormData с', selectedFiles.length, 'файлами');
// Отправка на сервер
fetch(window.location.href, {
method: 'POST',
body: formData
})
.then(response => response.json())
.then(data => {
console.log('Ответ сервера:', data);
if (data.success) {
progressBars.forEach(bar => {
bar.style.width = '100%';
});
setTimeout(() => {
alert('Изображения успешно загружены и отправлены на модерацию!');
closeModal();
location.reload();
}, 500);
} else {
throw new Error(data.error || 'Неизвестная ошибка');
}
})
.catch(error => {
console.error('Ошибка загрузки:', error);
alert('Ошибка при загрузке изображений: ' + error.message);
progressBars.forEach(bar => {
bar.style.width = '0%';
});
})
.finally(() => {
if (uploadButton) {
uploadButton.innerHTML = '
Загрузить';
uploadButton.disabled = false;
}
});
}
});