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

Материал из Абсурдопедии
Перейти к навигации Перейти к поиску
Нет описания правки
Минис заглавные форумов по категории их включения
Метка: отменено
Строка 5: Строка 5:
         return;
         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];
     var pageName = mw.config.get('wgPageName');
     var pageName = mw.config.get('wgPageName');
     if (namespace === 110 && pageName === 'Форум:Общий') {
      
    // Исключение глагне форумов (все они в Категория:Pages using DynamicPageList4)
    var $content = $('#mw-content-text');
    var categories = $content.find('.catlinks ul li a').map(function() {
        return $(this).text();
    }).get();
   
    if (categories.includes('Pages using DynamicPageList4')) {
         return;
         return;
     }
     }
 
   
     if (!discussionNamespaces.includes(namespace)) {
     if (!discussionNamespaces.includes(namespace)) {
         return;
         return;
     }
     }
 
   
     mw.loader.using('mediawiki.util').then(function() {
     mw.loader.using('mediawiki.util').then(function() {
         var $content = $('#mw-content-text');
         var $content = $('#mw-content-text');
         if (!$content.length) return;
         if (!$content.length) return;
 
       
         // Проверка прав на редактирование
         // Проверка прав на редактирование
         var userGroups = mw.config.get('wgUserGroups') || [];
         var userGroups = mw.config.get('wgUserGroups') || [];
         var restrictionEdit = mw.config.get('wgRestrictionEdit');
         var restrictionEdit = mw.config.get('wgRestrictionEdit');
         var canEdit = true;
         var canEdit = true;
 
       
         if (restrictionEdit) {
         if (restrictionEdit) {
             var editRestrictions = restrictionEdit.edit || restrictionEdit;
             var editRestrictions = restrictionEdit.edit || restrictionEdit;
Строка 31: Строка 38:
                 editRestrictions = [editRestrictions];
                 editRestrictions = [editRestrictions];
             }
             }
 
           
             if (editRestrictions.includes('sysop') && !userGroups.includes('sysop')) {
             if (editRestrictions.includes('sysop') && !userGroups.includes('sysop')) {
                 canEdit = false;
                 canEdit = false;
             } else if (editRestrictions.includes('autoconfirmed') &&  
             } else if (editRestrictions.includes('autoconfirmed') && !userGroups.includes('autoconfirmed') && !userGroups.includes('sysop')) {
                      !userGroups.includes('autoconfirmed') &&  
                      !userGroups.includes('sysop')) {
                 canEdit = false;
                 canEdit = false;
             }
             }
         }
         }
 
       
         if (!canEdit) return;
         if (!canEdit) return;
 
       
         // Локализация
         // Локализация
         var buttonText = {
         var buttonText = {
Строка 85: Строка 90:
             'zh': '✏️ 新话题'
             'zh': '✏️ 新话题'
         }[mw.config.get('wgUserLanguage')] || '✏️ новая тема';
         }[mw.config.get('wgUserLanguage')] || '✏️ новая тема';
 
       
         // Создание кнопки
         // Создание кнопки
         var editUrl = mw.util.getUrl(mw.config.get('wgPageName'), {  
         var editUrl = mw.util.getUrl(mw.config.get('wgPageName'), {
             action: 'edit',  
             action: 'edit',
             section: 'new'  
             section: 'new'
         });
         });
 
       
         $('<a>', {
         $('<a>', {
             href: editUrl,
             href: editUrl,
Строка 97: Строка 102:
             text: buttonText
             text: buttonText
         }).insertAfter($content);
         }).insertAfter($content);
 
       
         // Стили
         // Стили
         mw.util.addCSS('.mw-add-section-bottom{display:inline-block;margin:20px 0}');
         mw.util.addCSS('.mw-add-section-bottom{display:inline-block;margin:20px 0}');
     });
     });
})();
})();

Версия от 12:29, 5 марта 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');
    
    // Исключение глагне форумов (все они в Категория:Pages using DynamicPageList4)
    var $content = $('#mw-content-text');
    var categories = $content.find('.catlinks ul li a').map(function() {
        return $(this).text();
    }).get();
    
    if (categories.includes('Pages using DynamicPageList4')) {
        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 = {
            'az': '✏️ yeni mövzu',
            'ba': '✏️ яңы тема',
            'be': '✏️ новая тэма',
            'bxr': '✏️ шэнэ сэдэб',
            'ce': '✏️ керла тема',
            'cv': '✏️ ҫӗнӗ тема',
            'en': '✏️ new topic',
            'eo': '✏️ nova temo',
            'et': '✏️ uus teema',
            'hy': '✏️ նոր թեմա',
            'inh': '✏️ керда тема',
            'ja': '✏️ 新しいトピック',
            'ka': '✏️ ახალი თემა',
            'kk': '✏️ жаңа тақырып',
            'ko': '✏️ 새로운 주제',
            'koi': '✏️ выль тема',
            'kv': '✏️ выль тема',
            'ky': '✏️ жаңы тема',
            'la': '✏️ novum argumentum',
            'lt': '✏️ nauja tema',
            'lv': '✏️ jauna tēma',
            'mdf': '✏️ од тема',
            'mhr': '✏️ у теме',
            'mrj': '✏️ у тема',
            'myv': '✏️ од тема',
            'os': '✏️ ног темæ',
            'ro': '✏️ subiect nou',
            'sah': '✏️ саҥа тиэмэ',
            'tg': '✏️ мавзӯи нав',
            'tk': '✏️ täze tema',
            'tt': '✏️ яңа тема',
            'tyv': '✏️ чаа тема',
            'udm': '✏️ выль тема',
            'uk': '✏️ нова тема',
            'uz': '✏️ yangi mavzu',
            'vep': '✏️ uz’ tem',
            'yi': 'נייע טעמע ✏️',
            'xal': '✏️ шин төр',
            'zh': '✏️ 新话题'
        }[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}');
    });
})();