Открыть меню
Переключить меню настроек
Открыть персональное меню
Вы не представились системе
Ваш IP-адрес будет виден всем, если вы внесёте какие-либо изменения.

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

Страница интерфейса MediaWiki
Нет описания правки
Нет описания правки
 
(не показаны 34 промежуточные версии 2 участников)
Строка 1: Строка 1:
const pageName = mw.config.get("wgPageName");
const pageName = mw.config.get("wgPageName");


if (pageName == "Заглавная_страница" || pageName == "Test2") {
mw.loader.using([], function () {
     document.documentElement.classList.replace('skin-theme-clientpref-day', 'skin-theme-clientpref-night');
     importScript("MediaWiki:PageDefaultAttributes.js");
}
});
 
// Отображение онлайна


document.querySelectorAll(".server-hook").forEach(function(element) {
document.querySelectorAll(".server-hook").forEach(function(element) {
Строка 20: Строка 22:
     });
     });
});
});
// Интерактивная таблица


if (pageName != "Шаблон:Таблица_Космический_Закон") {
if (pageName != "Шаблон:Таблица_Космический_Закон") {
Строка 49: Строка 53:
     allObjects.forEach(el => el.style.display = "block");
     allObjects.forEach(el => el.style.display = "block");
}
}
// Вертикальный tabs


mw.loader.using('jquery', function() {
mw.loader.using('jquery', function() {
Строка 67: Строка 73:
     });
     });
});
});
// Сворачиваемая строка


mw.loader.using('mediawiki.util', function() {
mw.loader.using('mediawiki.util', function() {
Строка 79: Строка 87:
     });
     });
});
});
// Пасхалка буква жопа


mw.loader.using('mediawiki.util', function() {
mw.loader.using('mediawiki.util', function() {
Строка 84: Строка 94:
         'p-personal',
         'p-personal',
         '#',
         '#',
         'Режим Ѿ',
         ' ',
         'pt-omode',
         'pt-omode',
         'Режим Ѿ'
         ' '
     ).addEventListener('click', function(e) {
     ).addEventListener('click', function(e) {
         e.preventDefault();
         e.preventDefault();
Строка 100: Строка 110:
     function getVisibleTextNodes(root) {
     function getVisibleTextNodes(root) {
         let nodes = [];
         let nodes = [];
         function walk(node) {
         function walk(node) {
             if (node.nodeType === Node.TEXT_NODE) {
             if (node.nodeType === Node.TEXT_NODE) {
Строка 113: Строка 122:
         return nodes;
         return nodes;
     }
     }
     let textNodes = getVisibleTextNodes(document.body);
     let textNodes = getVisibleTextNodes(document.body);
     let available = [];
     let matches = [];
     for (let node of textNodes) {
     for (let node of textNodes) {
         for (let i = 0; i < node.nodeValue.length; i++) {
         let regex = /от/gi;
            if (!/[\s]/.test(node.nodeValue[i])) {
        let match;
                available.push({
        while ((match = regex.exec(node.nodeValue)) !== null) {
                    node,
            matches.push({
                    index: i
                node,
                });
                start: match.index,
            }
                length: match[0].length
            });
         }
         }
     }
     }


     function replaceNext() {
     function replaceNext() {
         if (available.length === 0) return;
         if (matches.length === 0) return;
         let randIndex = Math.floor(Math.random() * available.length);
         let randIndex = Math.floor(Math.random() * matches.length);
         let {
         let {
             node,
             node,
             index
             start,
         } = available.splice(randIndex, 1)[0];
            length
         } = matches.splice(randIndex, 1)[0];
         let chars = node.nodeValue.split("");
         let chars = node.nodeValue.split("");
         chars[index] = "Ѿ";
         chars.splice(start, length, "Ѿ");
         node.nodeValue = chars.join("");
         node.nodeValue = chars.join("");
        matches = matches.filter(m => m.node !== node || m.start > start);
         setTimeout(replaceNext, 1);
         setTimeout(replaceNext, 1);
     }
     }
     replaceNext();
     replaceNext();
}
}


function toggleSecret() {
function toggleSecret() {
     let enabled = localStorage.getItem('ѾmodeEnabled') === 'true';
     if (localStorage.getItem('ѾmodeEnabled') === 'true') {
    if (enabled) {
         localStorage.setItem('ѾmodeEnabled', 'false');
         localStorage.setItem('ѾmodeEnabled', 'false');
         location.reload();
         location.reload();