MediaWiki:Common.js: различия между версиями

Материал из Музыкально-фольклорный депозитарий
Нет описания правки
Нет описания правки
 
Строка 1: Строка 1:
/* Бронебойный скрипт для SVG-баннеров в боковом меню (Timeless) */
/* Бронебойный скрипт для SVG-баннеров с ИНДИВИДУАЛЬНЫМИ размерами (Timeless) */
mw.loader.using('mediawiki.util').then(function () {
mw.loader.using('mediawiki.util').then(function () {
     mw.hook('wikipage.content').add(function () {
     mw.hook('wikipage.content').add(function () {
        // Ищем ссылки во всех боковых меню (и левом, и правом)
         $('#mw-site-navigation a, #mw-related-navigation a, .sidebar-chunk a, .mw-portlet a').each(function () {
         $('#mw-site-navigation a, #mw-related-navigation a, .sidebar-chunk a, .mw-portlet a').each(function () {
             var $link = $(this);
             var $link = $(this);
             var linkText = $link.text().trim();
             var rawText = $link.text().trim();


             // Если текст ссылки заканчивается на .svg (регистронезависимо)
            // Разделяем текст по символу "|", чтобы отделить имя файла от размера
             if (linkText.match(/\.svg$/i)) {
            var parts = rawText.split('|');
                // Получаем прямую ссылку на файл
            var fileName = parts[0].trim();
                 var imgSrc = mw.util.getUrl('Special:FilePath/' + linkText);
             // Если размер указан — берем его, если нет — ставим 100%
            var customWidth = parts[1] ? parts[1].trim() : '100%';
 
             if (fileName.match(/\.svg$/i)) {
                 var imgSrc = mw.util.getUrl('Special:FilePath/' + fileName);


                // Создаем картинку
                 var $img = $('<img>', {
                 var $img = $('<img>', {
                     src: imgSrc,
                     src: imgSrc,
                     alt: 'Баннер',
                     alt: 'Баннер',
                     css: {
                     css: {
                         'max-width': '100%',
                        'width': customWidth, // Применяем индивидуальный размер!
                         'max-width': '100%', // Защита от вылезания за пределы сайдбара
                         'height': 'auto',
                         'height': 'auto',
                         'display': 'block',
                         'display': 'block',
Строка 26: Строка 29:
                 });
                 });


                // Эффект при наведении прямо в JS (чтобы не зависеть от CSS)
                 $img.hover(
                 $img.hover(
                     function() { $(this).css('transform', 'scale(1.03)'); },
                     function() { $(this).css('transform', 'scale(1.03)'); },
Строка 32: Строка 34:
                 );
                 );


                // Очищаем стили родительских элементов (убираем маркеры списка)
                 $link.closest('li').css({'list-style': 'none', 'margin-bottom': '10px'});
                 $link.closest('li').css({'list-style': 'none', 'margin-bottom': '10px'});
                 $link.closest('ul').css({'padding-left': '0', 'list-style': 'none'});
                 $link.closest('ul').css({'padding-left': '0', 'list-style': 'none'});


                // Меняем текст на картинку
                 $link.empty().append($img);
                 $link.empty().append($img);
             }
             }

Текущая версия от 12:54, 8 апреля 2026

/* Бронебойный скрипт для SVG-баннеров с ИНДИВИДУАЛЬНЫМИ размерами (Timeless) */
mw.loader.using('mediawiki.util').then(function () {
    mw.hook('wikipage.content').add(function () {
        $('#mw-site-navigation a, #mw-related-navigation a, .sidebar-chunk a, .mw-portlet a').each(function () {
            var $link = $(this);
            var rawText = $link.text().trim();

            // Разделяем текст по символу "|", чтобы отделить имя файла от размера
            var parts = rawText.split('|');
            var fileName = parts[0].trim();
            // Если размер указан — берем его, если нет — ставим 100%
            var customWidth = parts[1] ? parts[1].trim() : '100%'; 

            if (fileName.match(/\.svg$/i)) {
                var imgSrc = mw.util.getUrl('Special:FilePath/' + fileName);

                var $img = $('<img>', {
                    src: imgSrc,
                    alt: 'Баннер',
                    css: {
                        'width': customWidth, // Применяем индивидуальный размер!
                        'max-width': '100%',  // Защита от вылезания за пределы сайдбара
                        'height': 'auto',
                        'display': 'block',
                        'margin': '5px auto',
                        'border-radius': '4px',
                        'transition': 'transform 0.2s'
                    }
                });

                $img.hover(
                    function() { $(this).css('transform', 'scale(1.03)'); },
                    function() { $(this).css('transform', 'scale(1)'); }
                );

                $link.closest('li').css({'list-style': 'none', 'margin-bottom': '10px'});
                $link.closest('ul').css({'padding-left': '0', 'list-style': 'none'});

                $link.empty().append($img);
            }
        });
    });
});