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

Материал из Ascaron Online
Перейти к навигации Перейти к поиску
Нет описания правки
Метка: отменено
Нет описания правки
Метка: отменено
Строка 1: Строка 1:
// Функция для имитации загрузки
$(document).ready(function() {
window.onload = function() {
     // Создаем затемнение экрана
     // Создаем затемнение экрана
     var overlay = document.createElement('div');
     var overlay = $('<div id="loading-overlay"></div>');
    overlay.id = 'loading-overlay';
     $('body').append(overlay);
     document.body.appendChild(overlay);


     // Стилизация элемента загрузки (будет задаваться через CSS)
     // Создаем вращающийся круг
     overlay.style.position = 'fixed';
    var spinner = $('<div class="spinner"></div>');
    overlay.style.top = '0';
     overlay.append(spinner);
    overlay.style.left = '0';
 
    overlay.style.width = '100%';
    // Устанавливаем стили затемнения и круга
    overlay.style.height = '100%';
    overlay.css({
    overlay.style.backgroundColor = 'rgba(0, 0, 0, 0.5)';
        position: 'fixed',
    overlay.style.display = 'flex';
        top: '0',
    overlay.style.alignItems = 'center';
        left: '0',
    overlay.style.justifyContent = 'center';
        width: '100%',
     overlay.style.zIndex = '1000';
        height: '100%',
        background: 'rgba(0, 0, 0, 0.5)',
        display: 'flex',
        alignItems: 'center',
        justifyContent: 'center',
        zIndex: '1000',
        opacity: '1',
        transition: 'opacity 2s'
    });
 
     spinner.css({
        border: '4px solid rgba(255, 255, 255, 0.3)',
        borderTop: '4px solid #fff',
        borderRadius: '50%',
        width: '50px',
        height: '50px',
        animation: 'spin 2s linear infinite'
    });


     // Создаем вращающийся круг
     // Анимация вращения
     var spinner = document.createElement('div');
     $('head').append('<style>@keyframes spin {0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); }}</style>');
    spinner.className = 'spinner';
    overlay.appendChild(spinner);


     // Задержка перед исчезновением
     // Задержка перед исчезновением
     setTimeout(function() {
     setTimeout(function() {
         overlay.style.opacity = '0';
         overlay.css('opacity', '0');
         // После 2 секунд удаляем элемент с экрана
         // Удаляем элемент с экрана после 2 секунд
         setTimeout(function() {
         setTimeout(function() {
             overlay.remove();
             overlay.remove();
         }, 2000);
         }, 2000);
     }, 2000); // Задержка 2 секунды
     }, 2000);
};
});





Версия от 07:35, 5 апреля 2025

$(document).ready(function() {
    // Создаем затемнение экрана
    var overlay = $('<div id="loading-overlay"></div>');
    $('body').append(overlay);

    // Создаем вращающийся круг
    var spinner = $('<div class="spinner"></div>');
    overlay.append(spinner);

    // Устанавливаем стили затемнения и круга
    overlay.css({
        position: 'fixed',
        top: '0',
        left: '0',
        width: '100%',
        height: '100%',
        background: 'rgba(0, 0, 0, 0.5)',
        display: 'flex',
        alignItems: 'center',
        justifyContent: 'center',
        zIndex: '1000',
        opacity: '1',
        transition: 'opacity 2s'
    });

    spinner.css({
        border: '4px solid rgba(255, 255, 255, 0.3)',
        borderTop: '4px solid #fff',
        borderRadius: '50%',
        width: '50px',
        height: '50px',
        animation: 'spin 2s linear infinite'
    });

    // Анимация вращения
    $('head').append('<style>@keyframes spin {0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); }}</style>');

    // Задержка перед исчезновением
    setTimeout(function() {
        overlay.css('opacity', '0');
        // Удаляем элемент с экрана после 2 секунд
        setTimeout(function() {
            overlay.remove();
        }, 2000);
    }, 2000);
});


mw.loader.using('mediawiki.util').then(function () {
    // Не выполнять скрипт на странице редактирования
    if (location.href.includes('action=edit')) return;

    // Поддерживаемые языки (как в PHP $this->languages)
    var supportedLanguages = ['ru', 'en'];

    // Определяем язык из браузера (Accept-Language)
    var userLangRaw = navigator.languages && navigator.languages.length
        ? navigator.languages[0]
        : navigator.language || navigator.userLanguage || 'en';

    var lang = userLangRaw.slice(0, 2).toLowerCase();

    // Если язык не поддерживается — по умолчанию 'en'
    var userLang = supportedLanguages.includes(lang) ? lang : 'en';

    function processLangBlocks(container) {
        container.innerHTML = container.innerHTML.replace(
            /\{ru\}([\s\S]*?)\{else\}([\s\S]*?)\{end\}/gi,
            function(match, ruText, enText) {
                return userLang === 'ru' ? ruText.trim() : enText.trim();
            }
        );
    }

    processLangBlocks(document.body);
});