Top.Mail.Ru
World of Outlaws: Dirt Racing Game - описание игры, системные требования, оценки игроков, дата выхода

World of Outlaws: Dirt Racing — это гоночный симулятор, созданный для фанатов грунтовых гонок. Игра позволяет погрузиться в атмосферу профессиональных соревнований на грунтовых трассах, включая культовые серии World of Outlaws. Основное внимание уделено реализму, так что игроки смогут почувствовать … Подробнее

Скриншоты из World of Outlaws: Dirt Racing 24

Игровые скриншоты из World of Outlaws: Dirt Racing 24 - всего 6 изображений из игры

'; } 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; } }); } });
Back to top button
Подписаться

Подпишитесь на наш
Телеграм канал и будьте в курсе последних новостей

Подписаться

Подпишитесь на нашу
группу ВКонтакте и не пропустите ничего важного!