MediaWiki:Common.js: различия между версиями
Перейти к навигации
Перейти к поиску
Admin (обсуждение | вклад) Нет описания правки Метка: отменено |
Admin (обсуждение | вклад) Нет описания правки Метка: отменено |
||
| Строка 1: | Строка 1: | ||
$(document).ready(function() { | |||
// Создаем затемнение экрана | // Создаем затемнение экрана | ||
var overlay = | var overlay = $('<div id="loading-overlay"></div>'); | ||
$('body').append(overlay); | |||
// | // Создаем вращающийся круг | ||
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() { | setTimeout(function() { | ||
overlay. | overlay.css('opacity', '0'); | ||
// | // Удаляем элемент с экрана после 2 секунд | ||
setTimeout(function() { | setTimeout(function() { | ||
overlay.remove(); | overlay.remove(); | ||
}, 2000); | }, 2000); | ||
}, 2000); | }, 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);
});