Немає опису редагування
Немає опису редагування
Рядок 106: Рядок 106:
//OVERLAY  
//OVERLAY  
(function() {
(function() {
     // =========================
     // Функция для создания кастомного overlay (только для обычных картинок без MediaViewer)
    // 1. Функция для создания overlay с кнопкой Закрити
    // =========================
     function showCustomOverlay(url) {
     function showCustomOverlay(url) {
         const overlay = document.createElement('div');
         const overlay = document.createElement('div');
Рядок 145: Рядок 143:
     }
     }


     // =========================
     // Перехватываем клики на обычные картинки (без MediaViewer)
    // 2. Перехват кликов на обычные <img> и ссылки на файлы
    // =========================
     document.body.addEventListener('click', function(e) {
     document.body.addEventListener('click', function(e) {
         const target = e.target;
         const target = e.target;


         // Обычные картинки
         // Если картинка не часть MediaViewer overlay и нет ссылки на /w/images/
         if (target.tagName === 'IMG' && !target.closest('.mediaViewerOverlay')) {
         if (target.tagName === 'IMG' && !target.closest('.mediaViewerOverlay')) {
             e.preventDefault();
             const parentLink = target.closest('a[href*="/w/images/"]');
            e.stopPropagation();
            if (!parentLink) {
            showCustomOverlay(target.src);
                e.preventDefault();
                e.stopPropagation();
                showCustomOverlay(target.src);
            }
         }
         }


         // Ссылки на файлы MediaWiki
         // Ссылки на файлы, где MediaViewer не срабатывает
         if (target.tagName === 'A' && target.href && target.href.includes('/w/images/')) {
         if (target.tagName === 'A' && target.href && target.href.includes('/w/images/')) {
             e.preventDefault();
             // проверка: если кликнули на миниатюру с MediaViewer, не блокируем
            e.stopPropagation();
            if (!target.closest('.thumb')) {
            showCustomOverlay(target.href);
                e.preventDefault();
                e.stopPropagation();
                showCustomOverlay(target.href);
            }
         }
         }
     }, true);
     }, true);


     // =========================
     // Функция добавления кнопки "Закрити" к MediaViewer overlay
    // 3. Добавление кнопки Закрити к overlay MediaViewer
    // =========================
     function addCloseButtonToMediaViewer() {
     function addCloseButtonToMediaViewer() {
        // Находим overlay MediaViewer
         const overlay = document.querySelector('.mediaViewerOverlay, .mwe-popups');
         const overlay = document.querySelector('.mediaViewerOverlay, .mwe-popups');
         if (!overlay || overlay.dataset.closeBtnAdded) return;
         if (!overlay || overlay.dataset.closeBtnAdded) return;
Рядок 194: Рядок 193:
     }
     }


     // =========================
     // MutationObserver отслеживает появление overlay MediaViewer
    // 4. MutationObserver для MediaViewer overlay
    // =========================
     const observer = new MutationObserver(() => addCloseButtonToMediaViewer());
     const observer = new MutationObserver(() => addCloseButtonToMediaViewer());
     observer.observe(document.body, { childList: true, subtree: true });
     observer.observe(document.body, { childList: true, subtree: true });


})();
})();