Модуль:Editnotice
Перейти к навигации
Перейти к поиску
Этот модуль относится к критическим. У него очень много включений или он используется с подстановкой. Из-за опасности вандализма или ошибочного редактирования он был защищён. |
Модуль, реализующий показ уведомлений о биографиях современников и опасности редактирования определённых статей. Также используется для уведомлений при редактировании некоторых страниц обсуждения статей.
Функции
[править код]p._main— для возможности тестирования изменений принимает параметр с названием страницы.p.main— используется в коде MediaWiki:Editnotice-0, MediaWiki:Editnotice-1 и MediaWiki:Editnotice-10. Эдитнотис шаблона отображается также и в его документации.
Скрытие
[править код]Зарегистрированные участники могут скрыть уведомления, добавленные модулем. Для этого добавьте в свой common.css:
- чтобы скрыть о современниках:
/* Отключение предупреждения [[Шаблон:Editnotice/Ныне живущие]] */ #editnotice-blp { display: none }
- об РФ/Беларуси:
/* Отключение предупреждения [[Шаблон:Editnotice/RU-BY]] */ #editnotice-ru-by { display: none }
- о страницах значений:
/* Отключение предупреждения [[Шаблон:Editnotice/Страницы значений]] */ #editnotice-disambig { display: none }
- о нейросетях и чат-ботах:
/* Отключение предупреждения [[Шаблон:Editnotice/AI]] */ #editnotice-ai { display: none }
- о шаблонах с никами последнего редактора:
/* Отключение предупреждения [[Шаблон:Editnotice/Ник последнего редактора]] */ #editnotice-request-template { display: none }
- о шаблонах, в которых нельзя подставлять автодату:
/* Отключение предупреждения [[Шаблон:Editnotice/Автодата]] */ #editnotice-subst-time { display: none }
Известные проблемы
[править код]Эдитнотисы дублируются, если статья находится одновременно в обеих категориях: Биографии современников и Персоналии, умершие менее года назад. Нужно оставить в статье только вторую.
См. также
[править код]- {{Editnotice}} — основа для модуля
--
-- Реализует показ эдитнотисов на основе категорий
-- Ранее было реализовано через [[MediaWiki:Gadget-blpEditNotice.js]]
--
require( 'strict' )
local p = {}
local noticeList = {
-- [[Категория:Тептар:Статьи с предупреждением об осторожности при редактировании]] / [[Шаблон:Editnotice/RU-BY]]
['Тептар:Статьи с предупреждением об осторожности при редактировании'] = {
id = 'ru-by',
template = 'Шаблон:Editnotice/RU-BY',
},
-- [[Категория:Тептар:Биографии современников]] / [[Шаблон:Editnotice/Ныне живущие]]
['Тептар:Биографии современников'] = {
id = 'blp',
template = 'Шаблон:Editnotice/Ныне живущие',
},
-- [[Категория:Персоналии, умершие менее года назад]] / [[Шаблон:Editnotice/Недавно умершие]]
['Персоналии, умершие менее года назад'] = {
id = 'blp',
template = 'Шаблон:Editnotice/Недавно умершие',
},
-- [[Категория:Страницы значений по алфавиту]] / [[Шаблон:Editnotice/Страницы значений]]
['Страницы значений по алфавиту'] = {
id = 'disambig',
template = 'Шаблон:Editnotice/Страницы значений',
},
-- [[Категория:Тептар:Страницы обсуждения с предупреждением о нейросетях и LLM]] / [[Шаблон:Editnotice/AI]]
['Тептар:Страницы обсуждения с предупреждением о нейросетях и LLM'] = {
id = 'ai',
template = 'Шаблон:Editnotice/AI',
},
-- [[Категория:Шаблоны:Отображающие ник последнего редактора]] / [[Шаблон:Editnotice/Ник последнего редактора]]
['Шаблоны:Отображающие ник последнего редактора'] = {
id = 'request-template',
template = 'Шаблон:Editnotice/Ник последнего редактора',
},
-- [[Категория:Шаблоны:Оформление источников]] / [[Шаблон:Editnotice/Автодата]]
['Шаблоны:Оформление источников'] = {
id = 'subst-time',
template = 'Шаблон:Editnotice/Автодата',
}
}
local function isEmpty( str )
return str == nil or str == ''
end
function p._main( page, frame )
local mwTitle = mw.title.getCurrentTitle()
if not isEmpty( page ) then
mwTitle = mw.title.new( page )
end
if not mwTitle then
return ''
end
local ns = mwTitle.namespace
-- Разрешение пространства статей (0), их обсуждений (1) и пространства шаблонов (10)
if ns ~= 0 and ns ~= 1 and ns ~= 10 then
return ''
end
-- Проверка на существование страницы нужна только для статей (ns=0),
-- так как обсуждения полезно ловить, даже если они новые с категориями.
if ns == 0 and (mwTitle.id == 0 or not mwTitle.exists) then
return ''
end
if frame == nil then
frame = mw.getCurrentFrame()
end
-- Эдитнотис шаблона работает и в его документации
local targetTitle = mwTitle
if targetTitle.isSubpage and ( targetTitle.subpageText == 'doc' ) then
targetTitle = targetTitle.basePageTitle
end
local result = mw.html.create( 'div' )
local catCount = 0
for _, category in ipairs( targetTitle.categories ) do
local noticeInfo = noticeList[ category ]
if noticeInfo ~= nil and not isEmpty( noticeInfo.id ) and not isEmpty( noticeInfo.template ) then
local tmpl = frame:expandTemplate{
title = noticeInfo.template,
args = {}
}
result:tag( 'div' )
:attr( 'id', 'editnotice-' .. noticeInfo.id )
:wikitext( tmpl )
catCount = catCount + 1
end
end
if catCount == 0 then
return ''
end
return tostring( result )
end
function p.main( frame )
local page = frame.args[ 'page' ]
return p._main( page, frame )
end
return p