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'); | ||
// Исключение глагне форумов (все они в Категория: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')) { | ||
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}');
});
})();