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

Материал из Абсурдопедии
Перейти к навигации Перейти к поиску
Нет описания правки
Минус служебные
Строка 1: Строка 1:
//* Гаджет для добавления секции снизу в обсуждениях *//
//* Гаджет для добавления секции снизу в обсуждениях *//
(function() {
(function() {
    var currentUrl = window.location.href;
    if (currentUrl.includes('/w/')) {
        return;
    }
     var namespace = mw.config.get('wgNamespaceNumber');
     var namespace = mw.config.get('wgNamespaceNumber');
     var discussionNamespaces = [1, 3, 5, 7, 9, 11, 13, 15, 101, 110, 113, 115, 117, 119, 121];
     var discussionNamespaces = [1, 3, 5, 7, 9, 11, 13, 15, 101, 110, 113, 115, 117, 119, 121];

Версия от 23:59, 4 марта 2026

//* Гаджет для добавления секции снизу в обсуждениях *//
(function() {
    var currentUrl = window.location.href;
    if (currentUrl.includes('/w/')) {
        return;
    }

    var namespace = mw.config.get('wgNamespaceNumber');
    var discussionNamespaces = [1, 3, 5, 7, 9, 11, 13, 15, 101, 110, 113, 115, 117, 119, 121];
    var pageName = mw.config.get('wgPageName');
    if (namespace === 110 && pageName === 'Форум:Общий') {
        return;
    }

    if (!discussionNamespaces.includes(namespace)) {
        return;
    }

    mw.loader.using('mediawiki.util').then(function() {
        var $content = $('#mw-content-text');
        if (!$content.length) return;

        // Проверка прав на редактирование
        var userGroups = mw.config.get('wgUserGroups') || [];
        var restrictionEdit = mw.config.get('wgRestrictionEdit');
        var canEdit = true;

        if (restrictionEdit) {
            var editRestrictions = restrictionEdit.edit || restrictionEdit;
            if (!Array.isArray(editRestrictions)) {
                editRestrictions = [editRestrictions];
            }

            if (editRestrictions.includes('sysop') && !userGroups.includes('sysop')) {
                canEdit = false;
            } else if (editRestrictions.includes('autoconfirmed') && 
                      !userGroups.includes('autoconfirmed') && 
                      !userGroups.includes('sysop')) {
                canEdit = false;
            }
        }

        if (!canEdit) return;

        // Локализация
        var buttonText = {
            'be': '✏️ новы раздзел унізе',
            'be-tarask': '✏️ новы раздзел унізе',
            'en': '✏️ new section at the bottom',
            'eo': '✏️ nova sekcio malsupre',
            'ja': '✏️ 下部に新しいセクション',
            'la': '✏️ nova pars infra',
            'tt': '✏️ аскы өлешкә яңа бүлек',
            'udm': '✏️ выль люкетэз улӥын',
            'uk': '✏️ новий розділ унизу'
        }[mw.config.get('wgUserLanguage')] || '✏️ новый раздел внизу';

        // Создание кнопки
        var editUrl = mw.util.getUrl(mw.config.get('wgPageName'), { 
            action: 'edit', 
            section: 'new' 
        });

        $('<a>', {
            href: editUrl,
            'class': 'mw-ui-button mw-ui-progressive mw-add-section-bottom',
            text: buttonText
        }).insertAfter($content);

        // Стили
        mw.util.addCSS('.mw-add-section-bottom{display:inline-block;margin:20px 0}');
    });
})();