Module:Mainspace editnotice
This module is used in system messages. Changes to it can cause immediate changes to the Festipedia user interface. To avoid large-scale disruption, any changes should first be tested in this module's /sandbox or /testcases subpage, or in your own user space. The tested changes can then be added in one single edit to this module. Please discuss any changes on the talk page before implementing them. |
This module depends on the following other modules: |
This module is for use in Template:Editnotices/Namespace/Main. It conditionally includes other editnotice templates.
Usage[edit]
{{#invoke:Mainspace editnotice|main}}
No parameters are required. For testing what editnotice would be generated for a specific page, you can pass |page=
.
local Arguments = require('Module:Arguments')
local Disambiguation = require('Module:Disambiguation')
local TfaTitle = require('Module:TFA title')
local p = {}
p.main = function(frame)
local args = Arguments.getArgs(frame)
return p.core(args.page and mw.title.new(args.page) or mw.title.getCurrentTitle(), frame)
end
local notices = {
draft_notice = function (page, ctx)
if page.exists
and (page.isRedirect or ctx.isDisambigPage)
and mw.title.new('Draft:'..page.fullText).exists then
return "Draft at"
end
end,
blp_notice = function(page)
local content = page:getContent()
local living = "%[%[%s*[Cc]ategory:%s*[Ll]iving[ _]people%s*%]%]"
local possiblyLiving = "%[%[%s*[Cc]ategory:%s*[Pp]ossibly[ _]living[ _]people%s*%]%]"
if content and (content:find(living) or content:find(possiblyLiving)) then
return "BLP editintro"
end
end,
disambig_notice = function(page, ctx)
if ctx.isDisambigPage then
return "Disambig editintro"
end
end,
tfa_notice = function(page)
if TfaTitle.today_title() == page.text then
return "TFA editnotice"
end
end,
refideas_notice = function(page)
local talkContent = page.talkPageTitle:getContent()
if talkContent and talkContent:match('%{%{[rR]ef ?idea') then
return "Refideas editnotice"
end
end,
}
p.core = function(page, frame)
-- Context object to store values that are expensive to compute and required
-- in multiple places
local context = {
isDisambigPage = Disambiguation._isDisambiguationPage(page.fullText)
}
local text = ''
for _, getNotice in pairs(notices) do
local template = getNotice(page, context)
text = text .. (template and frame:expandTemplate{ title = template } or '')
end
return text
end
return p