{% extends 'base.html.twig' %}{% block title %}Картина "{{ photo.title }}" – Николай Макаров{% endblock %}{% block meta_description %} <meta name="description" content="Картина '{{ photo.title }}' от Николая Макарова. {{ photo.description|striptags|slice(0, 160) }}. Прекрасные произведения искусства, доступные к просмотру и покупке.">{% endblock %}{% block meta_og %} <meta property="og:title" content="Картина '{{ photo.title }}' – Николай Макаров"> <meta property="og:description" content="Просмотр картины '{{ photo.title }}' от Николая Макарова. {{ photo.description|striptags|slice(0, 160) }}"> <meta property="og:image" content="{{ asset('photos/' ~ photo.path) }}"> <meta property="og:type" content="website"> <meta property="og:url" content="{{ app.request.uri }}">{% endblock %}{% block body %} <div class="flex flex-col items-center"> {% if isAdmin %} <a href="{{ path('app_admin_index') }}" class="mt-2 mb-5 inline-flex items-center justify-center p-5 text-base font-medium text-gray-500 rounded-lg bg-gray-50 hover:text-gray-900 hover:bg-gray-100 dark:text-gray-400 dark:bg-gray-800 dark:hover:bg-gray-700 dark:hover:text-white" aria-label="Вернуться на главную страницу администратора"> <span class="w-full">Вернуться на главную</span> </a> {% else %} <a href="{{ path('photo_gallery') }}" class="mt-2 mb-5 inline-flex items-center justify-center p-5 text-base font-medium text-gray-500 rounded-lg bg-gray-50 hover:text-gray-900 hover:bg-gray-100 dark:text-gray-400 dark:bg-gray-800 dark:hover:bg-gray-700 dark:hover:text-white" aria-label="Вернуться в галерею"> <span class="w-full">Вернуться в галерею</span> </a> {% endif %} <div class="mb-4 max-w-screen-sm mx-auto"> <!-- Картинка с открытием модалки --> <img src="{{ asset('photos/' ~ photo.path) }}" class="cursor-pointer mx-auto mb-4 rounded-lg" alt="Картина '{{ photo.title }}' от Николая Макарова" onclick="openModal('{{ asset('photos/' ~ photo.path) }}', '{{ photo.title }}')" aria-label="Просмотр картины '{{ photo.title }}' в увеличенном размере" > <div class="p-5 rounded-lg bg-white shadow-lg dark:bg-neutral-800"> <p class="font-bold my-3 text-lg text-gray-800 dark:text-gray-100">Название картины:</p> <h1 class="text-xl font-semibold dark:text-gray-200">{{ photo.title }}</h1> <p class="font-bold mb-2 text-lg text-gray-800 dark:text-gray-100">Описание:</p> <div class="text-gray-700 dark:text-gray-300"> {{ (photo is defined and photo.description is defined and photo.description ? photo.description : '') | replace({ '\\r\\n': '\n' }) | replace({ '\n\n': '<br><br>' }) | replace({ '\n': '<br>' }) | raw }} </div> <p class="font-bold mb-2 text-lg text-gray-800 dark:text-gray-100">Цена:</p> <div class="text-gray-700 dark:text-gray-300">{{ photo is defined and photo.price is defined ? photo.price : '' }}</div> </div> </div> </div> <!-- Modal --> <div class="fixed inset-0 hidden z-50 bg-black bg-opacity-70 flex items-center justify-center" onclick="closeModal()" aria-hidden="true"> <div class="relative max-w-3xl w-full bg-white p-4 rounded-lg shadow-lg dark:bg-neutral-900 transform transition-transform duration-300" onclick="stopPropagation(event)"> <button class="absolute top-3 right-3 w-6 h-6 bg-gray-400 rounded-full flex items-center justify-center cursor-pointer transition-transform duration-300 hover:bg-gray-500" onclick="closeModal()" aria-label="Закрыть изображение"> <span class="block w-3 h-0.5 bg-white transform rotate-45"></span> <span class="block w-3 h-0.5 bg-white transform -rotate-45"></span> </button> <img class="w-full h-auto max-h-[90vh] rounded-lg object-contain" src="" alt="Увеличенное изображение картины {{ photo.title }}"> <p class="mt-4 text-lg text-center font-semibold text-gray-800 dark:text-gray-100 modal-title"></p> </div> </div> <script> function openModal(imageSrc, imageTitle) { const modal = document.querySelector('.fixed.inset-0'); const modalImage = modal.querySelector('img'); const modalTitle = modal.querySelector('.modal-title'); modalImage.src = imageSrc; modalTitle.textContent = imageTitle; modal.classList.remove('hidden'); document.body.style.overflow = 'hidden'; } function closeModal() { const modal = document.querySelector('.fixed.inset-0'); modal.classList.add('hidden'); document.body.style.overflow = ''; } function stopPropagation(event) { event.stopPropagation(); } </script>{% endblock %}