MediaWiki:Common.js

Страница интерфейса MediaWiki

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

  • Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl+F5 или Ctrl+R (⌘+R на Mac)
  • Google Chrome: Нажмите Ctrl+Shift+R (⌘+Shift+R на Mac)
  • Internet Explorer / Edge: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl+F5
  • Opera: Нажмите Ctrl+F5.
/* Размещённый здесь код JavaScript будет загружаться пользователям при обращении к каждой странице */

function insertAfter(newNode, referenceNode) {
    referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
}

// Код данте ниже
function setupTabs() {
    const tabHeaders = document.querySelectorAll('.tab-header');
    const tabContents = document.querySelectorAll('.tab-content');
    console.log("Количество заголовков вкладок:", tabHeaders.length);
    console.log("Количество содержимого вкладок:", tabContents.length);
    tabHeaders.forEach(function(header, index) {
        header.addEventListener('click', function() {
            console.log("Клик по вкладке:", index);
            tabHeaders.forEach(function(h) {
                h.classList.remove('active');
            });
            tabContents.forEach(function(c) {
                c.classList.remove('active');
            });
            header.classList.add('active');
            tabContents[index].classList.add('active');
        });
    });
}
mw.hook('wikipage.content').add(setupTabs);
// выше, ниже мой недо скрип

document.addEventListener('DOMContentLoaded', function() {
    console.log("Скрипт загружен и выполнен");
    
    function toggleRole(roleId) {
        console.log("Функция toggleRole вызвана с roleId:", roleId);
        var content = document.getElementById(roleId);
        if (content) {
            if (content.style.display === "none" || content.style.display === "") {
                content.style.display = "block";
                console.log("Элемент с id '" + roleId + "' теперь отображается.");
            } else {
                content.style.display = "none";
                console.log("Элемент с id '" + roleId + "' теперь скрыт.");
            }
        } else {
            console.error("Элемент с id '" + roleId + "' не найден.");
        }
    }

    var headers = document.querySelectorAll('.role-header');
    console.log("Найдено заголовков с классом role-header:", headers.length);
    headers.forEach(function(header) {
        header.addEventListener('click', function() {
            var roleId = this.getAttribute('data-role-id');
            console.log("Клик по заголовку с data-role-id:", roleId);
            if (roleId) {
                toggleRole(roleId);
            } else {
                console.error("Атрибут data-role-id отсутствует у элемента:", this);
            }
        });
    });
});


// Конец данте

function addCopyButtons() {
    var codeBlocks = document.querySelectorAll('code:not(.copy-processed)');

    codeBlocks.forEach(function(block) {
        var copyButton = document.createElement('button');
        copyButton.textContent = 'Copy';
        copyButton.className = 'copy-button';

        copyButton.addEventListener('click', function() {
            var textArea = document.createElement('textarea');
            textArea.value = block.textContent;
            document.body.appendChild(textArea);
            textArea.select();
            document.execCommand('copy');
            document.body.removeChild(textArea);
            alert('Содержимое скопировано!');
        });

        insertAfter(copyButton, block);
        block.classList.add('copy-processed');
    });
}

// Функция для форматирования содержимого блоков <code>
function formatCodeBlocks() {
    var codeBlocks = document.querySelectorAll('code:not(.formatted)');

    codeBlocks.forEach(function(block) {
        // Заменяем пробелы на неразрывные пробелы и вставляем <br> для переносов строк
        block.innerHTML = block.textContent.replace(/ /g, '\u00A0').replace(/\n/g, '<br>');
        block.classList.add('formatted');
    });
}

function formatNullDocsAbout() {
    $('.docs-about').each(function() {
        if ($(this).html().includes("{{{Примечание документа}}}")) {
            $(this).hide();
        }
    });
}

// Вызываем функции после загрузки страницы
mw.hook('wikipage.content').add(formatCodeBlocks);
mw.hook('wikipage.content').add(addCopyButtons);
mw.hook('wikipage.content').add(formatNullDocsAbout);