Немає опису редагування
Мітка: Скасовано
Немає опису редагування
Мітка: Скасовано
Рядок 104: Рядок 104:




// Простой и надежный перехватчик без ошибок
// Умный перехватчик, который не мешает MediaViewer
document.addEventListener('click', function(e) {
document.addEventListener('click', function(e) {
     var target = e.target;
     var target = e.target;
     var link = target.closest('a');
     var linkElement = target.closest('a');
      
      
     if (!link) return;
    // Если это не ссылка на изображение - пропускаем
     if (!linkElement || !linkElement.href) return;
      
      
     var href = link.href;
     var href = linkElement.href;
     if (!href) return;
    var isImageLink = href.match(/\.(jpg|jpeg|png|gif|bmp|webp)$/i) ||
                    href.includes('/wiki/File:');
   
     if (!isImageLink) return;
   
    // Проверяем, не находится ли ссылка внутри MediaViewer
    if (linkElement.closest('.mw-mmv-wrapper')) {
        return; // Пропускаем клики внутри MediaViewer
    }
   
    // Проверяем, не активирован ли уже MediaViewer
    if (window.mw && window.mw.mmv && window.mw.mmv.viewer &&
        window.mw.mmv.viewer.isOpen) {
        return; // MediaViewer уже открыт, пропускаем
    }
      
      
     // Проверяем, является ли ссылка изображением
     e.preventDefault();
    var isImageLink = href.match(/\.(jpg|jpeg|png|gif|bmp|webp)$/i) ||
    e.stopPropagation();
                    href.includes('/wiki/File:') ||
                    href.includes('/images/');
      
      
     if (isImageLink) {
     // Даем время MediaViewer обработать клик самостоятельно
        e.preventDefault();
    setTimeout(function() {
        e.stopImmediatePropagation();
         // Если MediaViewer не открыл изображение сам, помогаем ему
       
         if (window.mw && window.mw.mmv && window.mw.mmv.viewer &&
         // Простая попытка открыть в MediaViewer
            !window.mw.mmv.viewer.isOpen) {
         if (window.mw && window.mw.mmv && window.mw.mmv.viewer) {
              
             setTimeout(function() {
            try {
                try {
                var fileTitle = getFileTitleForMediaViewer(linkElement, href);
                    // Пробуем получить название файла разными способами
                if (fileTitle) {
                    var fileTitle = link.title ||
                     window.mw.mmv.viewer.openImage(fileTitle);
                                  link.getAttribute('data-title') ||
                                  extractSimpleFilename(href);
                   
                    if (fileTitle && !fileTitle.startsWith('File:')) {
                        fileTitle = 'File:' + fileTitle;
                    }
                   
                     if (fileTitle) {
                        window.mw.mmv.viewer.openImage(fileTitle);
                    }
                } catch (e) {
                    // Игнорируем ошибки
                 }
                 }
             }, 50);
             } catch (error) {
                // Тихий fallback - ничего не делаем
            }
         }
         }
     }
     }, 50);
}, true);
}, true);


function extractSimpleFilename(url) {
// Упрощенная функция получения названия файла
     try {
function getFileTitleForMediaViewer(linkElement, href) {
         var filename = url.split('/').pop().split('?')[0];
    // Пробуем получить из data-атрибутов
        if (filename.match(/\.(jpg|jpeg|png|gif|bmp|webp)/i)) {
    if (linkElement.dataset.title) {
            return decodeURIComponent(filename);
        return linkElement.dataset.title;
        }
    }
     } catch (e) {}
   
    // Пробуем получить из атрибута title
     if (linkElement.title && linkElement.title.startsWith('File:')) {
        return linkElement.title;
    }
   
    // Извлекаем из URL
    if (href.includes('/wiki/File:')) {
         var match = href.match(/\/wiki\/File:([^?]+)/i);
        if (match) return 'File:' + decodeURIComponent(match[1]);
    }
   
    // Из имени файла в URL
    var filename = href.split('/').pop().split('?')[0];
    if (filename.match(/\.(jpg|jpeg|png|gif|bmp|webp)/i)) {
        return 'File:' + decodeURIComponent(filename);
    }
      
     return null;
     return null;
}
}
// Минимальные блокировки
document.addEventListener('contextmenu', function(e) {
    if (e.target.closest('a img')) e.preventDefault();
});
document.addEventListener('dragstart', function(e) {
    if (e.target.tagName === 'IMG') e.preventDefault();
});