MediaWiki:Common.js: відмінності між версіями
Wiki (обговорення | внесок) Немає опису редагування |
Wiki (обговорення | внесок) Немає опису редагування |
||
| Рядок 106: | Рядок 106: | ||
//OVERLAY | //OVERLAY | ||
(function() { | (function() { | ||
// | // Функция для создания кастомного overlay (только для обычных картинок без MediaViewer) | ||
function showCustomOverlay(url) { | function showCustomOverlay(url) { | ||
const overlay = document.createElement('div'); | const overlay = document.createElement('div'); | ||
| Рядок 145: | Рядок 143: | ||
} | } | ||
// | // Перехватываем клики на обычные картинки (без MediaViewer) | ||
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/"]'); | ||
if (!parentLink) { | |||
e.preventDefault(); | |||
e.stopPropagation(); | |||
showCustomOverlay(target.src); | |||
} | |||
} | } | ||
// Ссылки на файлы | // Ссылки на файлы, где 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, не блокируем | ||
if (!target.closest('.thumb')) { | |||
e.preventDefault(); | |||
e.stopPropagation(); | |||
showCustomOverlay(target.href); | |||
} | |||
} | } | ||
}, true); | }, true); | ||
// | // Функция добавления кнопки "Закрити" к MediaViewer overlay | ||
function addCloseButtonToMediaViewer() { | function addCloseButtonToMediaViewer() { | ||
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 | ||
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 }); | ||
})(); | })(); | ||