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

Материал из Semantex
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
 
(не показаны 4 промежуточные версии этого же участника)
Строка 1: Строка 1:
mw.loader.load('https://code.jquery.com/jquery-3.7.1.min.js');
// Находим все изображения на странице
var images = document.querySelectorAll('.mw-default-size img');


function makeSlimboxThumbs( $, pathRegexp, wgFullScriptPath ) {
// Для каждого изображения добавляем обработчик события
var re = new RegExp( pathRegexp );
images.forEach(function(image) {
var reExcl = /(^|\/)skins\//;
    image.addEventListener('click', function(event) {
var canview = /\.(jpe?g|jpe|gif|png)$/i;
        // Отменяем переход по ссылке
var m;
        event.preventDefault();
var names = [];
// When fitted into the viewport, thumbnail widths are quantized to multiples of this number
var quant = 80;
$( 'img' ).each( function( i, e ) {
if ( e.parentNode.nodeName == 'A' && ( m = re.exec( e.parentNode.href ) ) ) {
var n = decodeURIComponent( m[1] );
names.push( n );
}
} );
if ( names.length ) {
var cb = function( r ) {
var nodes = [];
var can;
var ww = $( window ).width();
var wh = $( window ).height() * 0.9;
$( 'img' ).each( function( i, e ) {
if ( e.parentNode.nodeName == 'A' && ( m = re.exec( e.parentNode.href ) ) && !reExcl.exec( e.src ) ) {
var n = decodeURIComponent( m[1] );
if ( !r[n] ) {
return;
}
var h = r[n].url;
can = canview.exec( n );
if ( !can || r[n].width > ww || r[n].height > wh ) {
var sc = Math.floor( ww / quant ) * quant;
var sh = Math.floor( r[n].width * wh / r[n].height / quant ) * quant;
if ( sh < sc ) {
sc = sh;
}
if ( r[n].local ) {
h = wgFullScriptPath + '/thumb.php?f=' + encodeURIComponent( n ) + '&w=' + sc;
} else {
h = wgFullScriptPath + '/index.php?action=ajax&rs=efSBTRemoteThumb&rsargs[]=' + encodeURIComponent( n ) + '&rsargs[]=' + sc;
}
}
if ( h != e.src ) {
var p = $( e.parentNode );
var c = p.next( '.thumbcaption' );
if ( !c.length ) {
c = p.parents( 'li.gallerybox' ).find( '.gallerytext' );
}
n = ( c.text().replace( /^\s+|\s+$/g, '' ) || n.replace( /_/g, ' ' ) ) + ' &rarr;';
e.parentNode._lightbox = [
h, '<a href="'+e.parentNode.href+'">'+n+'</a>'
];
nodes.push( e.parentNode );
}
}
} );
$( nodes ).slimbox({ captionAnimationDuration: 0 }, function( e, i ) {
return e._lightbox;
}, function() { return true; });
};
$.ajax({
url: wgFullScriptPath+'/index.php?action=ajax',
type: 'POST',
dataType: 'json',
data: {
rs: 'efSBTGetImageSizes',
'rsargs[]': [ names.join( ':' ) ]
},
success: cb
});
}
}


$( window ).on( 'load', function() {makeSlimboxThumbs( jQuery, "/index\\.php/[^:]+:(.*)", "http://wiki.semantex.ru" ); } );
        // Создаем элемент для полноэкранного просмотра
        var fullscreenContainer = document.createElement('div');
        fullscreenContainer.className = 'fullscreen-container';


console.log(111123);
        // Создаем изображение для полноэкранного просмотра
        var fullscreenImage = document.createElement('img');
        fullscreenImage.src = image.src;
        fullscreenImage.className = 'fullscreen-image';
 
        // Создаем кнопку для закрытия полноэкранного режима
        var closeButton = document.createElement('button');
        closeButton.textContent = 'Закрыть';
        closeButton.className = 'close-button';
 
        // Добавляем обработчик события для кнопки закрытия
        closeButton.addEventListener('click', function() {
            // Удаляем элементы при закрытии полноэкранного режима
            fullscreenContainer.remove();
        });
 
        // Добавляем изображение и кнопку закрытия в контейнер для полноэкранного просмотра
        fullscreenContainer.appendChild(fullscreenImage);
        fullscreenContainer.appendChild(closeButton);
 
        // Добавляем контейнер в тело документа
        document.body.appendChild(fullscreenContainer);
 
        // Добавляем обработчик события клика на контейнер полноэкранного просмотра
        fullscreenContainer.addEventListener('click', function(event) {
            // Проверяем, был ли клик выполнен вне изображения
            if (event.target === fullscreenContainer) {
                // Удаляем элементы при клике на пустую область
                fullscreenContainer.remove();
            }
        });
    });
});

Текущая версия от 13:05, 27 апреля 2024

// Находим все изображения на странице
var images = document.querySelectorAll('.mw-default-size img');

// Для каждого изображения добавляем обработчик события
images.forEach(function(image) {
    image.addEventListener('click', function(event) {
        // Отменяем переход по ссылке
        event.preventDefault();

        // Создаем элемент для полноэкранного просмотра
        var fullscreenContainer = document.createElement('div');
        fullscreenContainer.className = 'fullscreen-container';

        // Создаем изображение для полноэкранного просмотра
        var fullscreenImage = document.createElement('img');
        fullscreenImage.src = image.src;
        fullscreenImage.className = 'fullscreen-image';

        // Создаем кнопку для закрытия полноэкранного режима
        var closeButton = document.createElement('button');
        closeButton.textContent = 'Закрыть';
        closeButton.className = 'close-button';

        // Добавляем обработчик события для кнопки закрытия
        closeButton.addEventListener('click', function() {
            // Удаляем элементы при закрытии полноэкранного режима
            fullscreenContainer.remove();
        });

        // Добавляем изображение и кнопку закрытия в контейнер для полноэкранного просмотра
        fullscreenContainer.appendChild(fullscreenImage);
        fullscreenContainer.appendChild(closeButton);

        // Добавляем контейнер в тело документа
        document.body.appendChild(fullscreenContainer);

        // Добавляем обработчик события клика на контейнер полноэкранного просмотра
        fullscreenContainer.addEventListener('click', function(event) {
            // Проверяем, был ли клик выполнен вне изображения
            if (event.target === fullscreenContainer) {
                // Удаляем элементы при клике на пустую область
                fullscreenContainer.remove();
            }
        });
    });
});