MediaWiki:Common.js

Материал из Ascaron Online
Перейти к навигации Перейти к поиску

Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.

  • Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl+F5 или Ctrl+R (⌘+R на Mac)
  • Google Chrome: Нажмите Ctrl+Shift+R (⌘+Shift+R на Mac)
  • Edge: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl+F5
  • Opera: Нажмите Ctrl+F5.
// Функция для имитации загрузки
window.onload = function() {
    // Создаем затемнение экрана
    var overlay = document.createElement('div');
    overlay.id = 'loading-overlay';
    document.body.appendChild(overlay);

    // Стилизация элемента загрузки (будет задаваться через CSS)
    overlay.style.position = 'fixed';
    overlay.style.top = '0';
    overlay.style.left = '0';
    overlay.style.width = '100%';
    overlay.style.height = '100%';
    overlay.style.backgroundColor = 'rgba(0, 0, 0, 0.5)';
    overlay.style.display = 'flex';
    overlay.style.alignItems = 'center';
    overlay.style.justifyContent = 'center';
    overlay.style.zIndex = '1000';

    // Создаем вращающийся круг
    var spinner = document.createElement('div');
    spinner.className = 'spinner';
    overlay.appendChild(spinner);

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


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);
});