Module:Protection banner/config: Difference between revisions
Appearance
m 1 revision imported |
Fix templates |
||
| (One intermediate revision by the same user not shown) | |||
| Line 155: | Line 155: | ||
edit = { | edit = { | ||
blp = { | blp = { | ||
description = 'For | description = 'For protected biographies of living people', | ||
text = '${INTROFRAGMENT} to prevent harmful edits about a living person.', | |||
tooltip = '${TOOLTIPFRAGMENT} to prevent harmful edits about a living person', | |||
text = '${INTROFRAGMENT} to | |||
tooltip = '${TOOLTIPFRAGMENT} to | |||
}, | }, | ||
deceased = { | deceased = { | ||
description = 'For user pages of | description = 'For protected user pages of deceased editors', | ||
text = '${INTROFRAGMENT} to prevent vandalism of a deceased | text = '${INTROFRAGMENT} to prevent vandalism of a deceased editor\'s user page. Please discuss changes on the ${TALKPAGE}.', | ||
tooltip = '${TOOLTIPFRAGMENT} to prevent vandalism', | |||
tooltip = '${TOOLTIPFRAGMENT} | |||
}, | }, | ||
dmca = { | dmca = { | ||
description = 'For pages protected | description = 'For pages protected following a copyright complaint', | ||
explanation = function (protectionObj, args) | explanation = function (protectionObj, args) | ||
local | local text = 'This page is protected following a copyright complaint.' | ||
if args.notice then text = text .. ' Notice: ' .. args.notice .. '.' end | |||
return text .. ' Please discuss changes on the ${TALKPAGE}.' | |||
if args.notice then | |||
end, | end, | ||
image = 'Office-protection-shackle.svg', | image = 'Office-protection-shackle.svg', | ||
link = ' | link = 'Special:Log/protect', | ||
}, | }, | ||
dispute = { | dispute = { | ||
| Line 229: | Line 206: | ||
}, | }, | ||
ecp = { | ecp = { | ||
description = 'For | description = 'For pages with extended protection', | ||
alt = 'Extended-protected ${PAGETYPE}', | alt = 'Extended-protected ${PAGETYPE}', | ||
}, | }, | ||
mainpage = { | mainpage = { | ||
description = 'For pages protected for being displayed on the [[Main Page]]', | description = 'For pages protected for being displayed on the [[Main Page]]', | ||
text = | text = "This file is currently protected from editing because it is currently or will soon be displayed on the [[Main Page]].", | ||
explanation = 'Images on the Main Page are protected due to their high' | explanation = 'Images on the Main Page are protected due to their high' | ||
.. ' visibility. Please discuss any necessary changes on the ${TALKPAGE}.' | .. ' visibility. Please discuss any necessary changes on the ${TALKPAGE}.' | ||
| Line 248: | Line 220: | ||
}, | }, | ||
office = { | office = { | ||
description = 'For pages protected | description = 'For pages protected for administrative review', | ||
text | text = 'This ${PAGETYPE} is protected for administrative review.', | ||
explanation = 'Please discuss changes on the ${TALKPAGE}.', | |||
explanation = | |||
image = 'Office-protection-shackle.svg', | image = 'Office-protection-shackle.svg', | ||
link = ' | link = 'Special:Log/protect', | ||
}, | }, | ||
reset = { | reset = { | ||
description = 'For pages protected | description = 'For pages protected during a rewrite', | ||
text = 'This ${PAGETYPE} is protected while it is being rewritten.', | |||
explanation = 'Please discuss changes on the ${TALKPAGE}.', | |||
image = 'Office-protection-shackle.svg', | image = 'Office-protection-shackle.svg', | ||
link = ' | link = 'Special:Log/protect', | ||
}, | }, | ||
sock = { | sock = { | ||
description = | description = "For pages protected due to sock puppetry", | ||
text = "${INTROFRAGMENT} to prevent sock puppets of blocked or banned users from editing it.", | |||
text = | |||
tooltip = '${TOOLTIPFRAGMENT} to prevent sock puppets of blocked or banned users from' | tooltip = '${TOOLTIPFRAGMENT} to prevent sock puppets of blocked or banned users from' | ||
.. ' editing it', | .. ' editing it', | ||
}, | }, | ||
template = { | template = { | ||
description = | description = "For high-risk templates and Lua modules", | ||
text = "This is a permanently protected ${PAGETYPE}, as it is high-risk.", | |||
text = | explanation = "Please discuss any changes on the ${TALKPAGE}; you may ${EDITREQUEST} to ask an administrator or template editor to make an edit if it is uncontroversial or supported by consensus. You can also request that the page be unprotected.", | ||
explanation = | |||
tooltip = 'This high-risk ${PAGETYPE} is permanently ${PROTECTIONLEVEL}' | tooltip = 'This high-risk ${PAGETYPE} is permanently ${PROTECTIONLEVEL}' | ||
.. ' to prevent vandalism', | .. ' to prevent vandalism', | ||
| Line 338: | Line 253: | ||
.. ' such as abusing the' | .. ' such as abusing the' | ||
.. ' {{[[Template:unblock|unblock]]}} template.', | .. ' {{[[Template:unblock|unblock]]}} template.', | ||
explanation = | explanation = "If you cannot edit this user talk page and you need to make a change or leave a message, you can request an edit, request unprotection, [[Special:Userlogin|log in]], or [[Special:UserLogin/signup|create an account]].", | ||
}, | }, | ||
vandalism = { | vandalism = { | ||
description = | description = "For pages protected against vandalism", | ||
text = "${INTROFRAGMENT} due to vandalism.", | |||
text = | |||
explanation = function (protectionObj, args) | explanation = function (protectionObj, args) | ||
local ret = '' | local ret = '' | ||
| Line 373: | Line 278: | ||
}, | }, | ||
vandalism = { | vandalism = { | ||
description = | description = "For pages protected against page-move vandalism" | ||
} | } | ||
}, | }, | ||
| Line 403: | Line 306: | ||
protectionBlurbs = { | protectionBlurbs = { | ||
edit = { | edit = { | ||
default = | default = "This ${PAGETYPE} is currently protected from editing", | ||
templateeditor = "This ${PAGETYPE} is currently protected from editing", | |||
templateeditor = | autoconfirmed = "Editing of this ${PAGETYPE} by new or unregistered users is currently disabled", | ||
extendedconfirmed = "This ${PAGETYPE} is currently under extended confirmed protection", | |||
autoconfirmed = | |||
extendedconfirmed = | |||
}, | }, | ||
move = { | move = { | ||
default = | default = "This ${PAGETYPE} is currently protected from [[Help:Moving a page|page moves]]" | ||
}, | }, | ||
autoreview = { | autoreview = { | ||
default = | default = "All edits made to this ${PAGETYPE} by new or unregistered users are currently subject to review" | ||
}, | }, | ||
upload = { | upload = { | ||
| Line 450: | Line 342: | ||
edit = { | edit = { | ||
autoconfirmed = { | autoconfirmed = { | ||
subject = | subject = "See the protection policy and ${PROTECTIONLOG} for more details. If you cannot edit this ${PAGETYPE} and you wish to make a change, you can ${EDITREQUEST}, discuss changes on the ${TALKPAGE}, request unprotection, [[Special:Userlogin|log in]], or [[Special:UserLogin/signup|create an account]].", | ||
default = "See the protection policy and ${PROTECTIONLOG} for more details. If you cannot edit this ${PAGETYPE} and you wish to make a change, you can request unprotection, [[Special:Userlogin|log in]], or [[Special:UserLogin/signup|create an account]].", | |||
default = | |||
}, | }, | ||
extendedconfirmed = { | extendedconfirmed = { | ||
default = | default = "Extended confirmed protection prevents edits from all unregistered editors and registered users with fewer than 30 days tenure and 500 edits. The policy on community use specifies that extended confirmed protection can be applied to combat disruption, if semi-protection has proven to be ineffective. Extended confirmed protection may also be applied to enforce arbitration sanctions. Please discuss any changes on the ${TALKPAGE}; you may ${EDITREQUEST} to ask for uncontroversial changes supported by consensus." | ||
}, | }, | ||
default = { | default = { | ||
subject = | subject = "See the protection policy and ${PROTECTIONLOG} for more details. Please discuss any changes on the ${TALKPAGE}; you may ${EDITREQUEST} to ask an administrator to make an edit if it is uncontroversial or supported by consensus. You may also request that this page be unprotected.", | ||
default = "See the protection policy and ${PROTECTIONLOG} for more details. You may request an edit to this page, or ask for it to be unprotected." | |||
default = | |||
} | } | ||
}, | }, | ||
move = { | move = { | ||
default = { | default = { | ||
subject = | subject = "See the protection policy and ${PROTECTIONLOG} for more details. The page may still be edited but cannot be moved until unprotected. Please discuss any suggested moves on the ${TALKPAGE} or at Requested moves. You can also request that the page be unprotected.", | ||
default = "See the protection policy and ${PROTECTIONLOG} for more details. The page may still be edited but cannot be moved until unprotected. Please discuss any suggested moves at Requested moves. You can also request that the page be unprotected." | |||
default = | |||
} | } | ||
}, | }, | ||
autoreview = { | autoreview = { | ||
default = { | default = { | ||
default = | default = "See the protection policy and ${PROTECTIONLOG} for more details. Edits to this ${PAGETYPE} by new and unregistered users will not be visible to readers until they are accepted by a reviewer. To avoid the need for your edits to be reviewed, you may request unprotection, [[Special:Userlogin|log in]], or [[Special:UserLogin/signup|create an account]]." | ||
}, | }, | ||
}, | }, | ||
upload = { | upload = { | ||
default = { | default = { | ||
default = | default = "See the protection policy and ${PROTECTIONLOG} for more details. The page may still be edited but new versions of the file cannot be uploaded until it is unprotected. You can request that a new version be uploaded by using a protected edit request, or you can request that the file be unprotected." | ||
} | } | ||
} | } | ||
| Line 624: | Line 451: | ||
imageLinks = { | imageLinks = { | ||
edit = { | edit = { | ||
default = | default = "Special:Log/protect", | ||
templateeditor = | templateeditor = "Special:Log/protect", | ||
extendedconfirmed = | extendedconfirmed = "Special:Log/protect", | ||
autoconfirmed = | autoconfirmed = "Special:Log/protect" | ||
}, | }, | ||
move = { | move = { | ||
default = | default = "Special:Log/protect" | ||
}, | }, | ||
autoreview = { | autoreview = { | ||
default = | default = "Special:Log/protect" | ||
}, | }, | ||
upload = { | upload = { | ||
default = | default = "Special:Log/protect" | ||
} | } | ||
}, | }, | ||
| Line 747: | Line 574: | ||
protectionCategories = { | protectionCategories = { | ||
['all|all|all|all|all'] = | ['all|all|all|all|all'] = "Protected pages", | ||
['all|all|office|all|all'] = | ['all|all|office|all|all'] = "Protected pages", | ||
['all|all|reset|all|all'] = | ['all|all|reset|all|all'] = "Protected pages", | ||
['all|all|dmca|all|all'] = | ['all|all|dmca|all|all'] = "Protected pages", | ||
['all|all|mainpage|all|all'] = | ['all|all|mainpage|all|all'] = "Protected pages", | ||
['all|all|all|extendedconfirmed|all'] = | ['all|all|all|extendedconfirmed|all'] = "Protected pages", | ||
['all|all|ecp|extendedconfirmed|all'] = | ['all|all|ecp|extendedconfirmed|all'] = "Protected pages", | ||
['all|template|all|all|edit'] = | ['all|template|all|all|edit'] = "Protected pages", | ||
['all|all|all|autoconfirmed|edit'] = | ['all|all|all|autoconfirmed|edit'] = "Protected pages", | ||
['indef|all|all|autoconfirmed|edit'] = | ['indef|all|all|autoconfirmed|edit'] = "Protected pages", | ||
['all|all|blp|autoconfirmed|edit'] = | ['all|all|blp|autoconfirmed|edit'] = "Protected pages", | ||
['temp|all|blp|autoconfirmed|edit'] = | ['temp|all|blp|autoconfirmed|edit'] = "Protected pages", | ||
['all|all|dispute|autoconfirmed|edit'] = | ['all|all|dispute|autoconfirmed|edit'] = "Protected pages", | ||
['all|all|sock|autoconfirmed|edit'] = | ['all|all|sock|autoconfirmed|edit'] = "Protected pages", | ||
['all|all|vandalism|autoconfirmed|edit'] = | ['all|all|vandalism|autoconfirmed|edit'] = "Protected pages", | ||
['all|category|all|autoconfirmed|edit'] = | ['all|category|all|autoconfirmed|edit'] = "Protected pages", | ||
['all|file|all|autoconfirmed|edit'] = | ['all|file|all|autoconfirmed|edit'] = "Protected pages", | ||
['all|portal|all|autoconfirmed|edit'] = | ['all|portal|all|autoconfirmed|edit'] = "Protected pages", | ||
['all|project|all|autoconfirmed|edit'] = | ['all|project|all|autoconfirmed|edit'] = "Protected pages", | ||
['all|talk|all|autoconfirmed|edit'] = | ['all|talk|all|autoconfirmed|edit'] = "Protected pages", | ||
['all|template|all|autoconfirmed|edit'] = | ['all|template|all|autoconfirmed|edit'] = "Protected pages", | ||
['all|user|all|autoconfirmed|edit'] = | ['all|user|all|autoconfirmed|edit'] = "Protected pages", | ||
['all|all|all|templateeditor|move'] = | ['all|all|all|templateeditor|move'] = "Protected pages", | ||
['all|all|all|templateeditor|edit'] = | ['all|all|all|templateeditor|edit'] = "Protected pages", | ||
['all|template|all|templateeditor|edit'] = | ['all|template|all|templateeditor|edit'] = "Protected pages", | ||
['all|template|all|templateeditor|move'] = | ['all|template|all|templateeditor|move'] = "Protected pages", -- move-protected templates | ||
['all|all|blp|sysop|edit'] = | ['all|all|blp|sysop|edit'] = "Protected pages", | ||
['temp|all|blp|sysop|edit'] = | ['temp|all|blp|sysop|edit'] = "Protected pages", | ||
['all|all|dispute|sysop|edit'] = | ['all|all|dispute|sysop|edit'] = "Protected pages", | ||
['all|all|sock|sysop|edit'] = | ['all|all|sock|sysop|edit'] = "Protected pages", | ||
['all|all|vandalism|sysop|edit'] = | ['all|all|vandalism|sysop|edit'] = "Protected pages", | ||
['all|category|all|sysop|edit'] = | ['all|category|all|sysop|edit'] = "Protected pages", | ||
['all|file|all|sysop|edit'] = | ['all|file|all|sysop|edit'] = "Protected pages", | ||
['all|project|all|sysop|edit'] = | ['all|project|all|sysop|edit'] = "Protected pages", | ||
['all|talk|all|sysop|edit'] = | ['all|talk|all|sysop|edit'] = "Protected pages", | ||
['all|template|all|extendedconfirmed|edit'] = | ['all|template|all|extendedconfirmed|edit'] = "Protected pages", | ||
['all|template|all|extendedconfirmed|move'] = | ['all|template|all|extendedconfirmed|move'] = "Protected pages", | ||
['all|template|all|sysop|edit'] = | ['all|template|all|sysop|edit'] = false, | ||
['all|user|all|sysop|edit'] = | ['all|user|all|sysop|edit'] = "Protected pages", | ||
['all|module|all|all|edit'] = | ['all|module|all|all|edit'] = false, | ||
['all|module|all|templateeditor|edit'] = | ['all|module|all|templateeditor|edit'] = "Protected pages", | ||
['all|module|all|extendedconfirmed|edit'] = | ['all|module|all|extendedconfirmed|edit'] = "Protected pages", | ||
['all|module|all|autoconfirmed|edit'] = | ['all|module|all|autoconfirmed|edit'] = "Protected pages", | ||
['all|all|all|sysop|move'] = | ['all|all|all|sysop|move'] = "Protected pages", | ||
['indef|all|all|sysop|move'] = | ['indef|all|all|sysop|move'] = "Protected pages", | ||
['all|all|dispute|sysop|move'] = | ['all|all|dispute|sysop|move'] = "Protected pages", | ||
['all|all|vandalism|sysop|move'] = | ['all|all|vandalism|sysop|move'] = "Protected pages", | ||
['all|portal|all|sysop|move'] = | ['all|portal|all|sysop|move'] = "Protected pages", | ||
['all|project|all|sysop|move'] = | ['all|project|all|sysop|move'] = "Protected pages", | ||
['all|talk|all|sysop|move'] = | ['all|talk|all|sysop|move'] = "Protected pages", | ||
['all|template|all|sysop|move'] = | ['all|template|all|sysop|move'] = "Protected pages", | ||
['all|user|all|sysop|move'] = | ['all|user|all|sysop|move'] = "Protected pages", | ||
['all|all|all|autoconfirmed|autoreview'] = | ['all|all|all|autoconfirmed|autoreview'] = "Protected pages", | ||
['all|file|all|all|upload'] = | ['all|file|all|all|upload'] = "Protected pages", | ||
}, | }, | ||
| Line 958: | Line 785: | ||
-- in the MediaWiki namespace. | -- in the MediaWiki namespace. | ||
-- It is possible to use banner parameters in this message. | -- It is possible to use banner parameters in this message. | ||
['explanation-blurb-nounprotect'] = | ['explanation-blurb-nounprotect'] = "See the protection policy and ${PROTECTIONLOG} for more details. Please discuss any changes on the ${TALKPAGE}; you may ${EDITREQUEST} to ask an administrator to make an edit if it is uncontroversial or supported by consensus.", | ||
-------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ||
| Line 1,018: | Line 838: | ||
-- These messages determine which tracking categories the module outputs. | -- These messages determine which tracking categories the module outputs. | ||
['tracking-category-incorrect'] = ' | ['tracking-category-incorrect'] = 'Pages with incorrect protection templates', | ||
['tracking-category-template'] = | ['tracking-category-template'] = "Protected pages", | ||
-------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ||
Latest revision as of 17:45, 31 October 2026
-- This module provides configuration data for [[Module:Protection banner]].
return {
--------------------------------------------------------------------------------
--
-- BANNER DATA
--
--------------------------------------------------------------------------------
--[[
-- Banner data consists of six fields:
-- * text - the main protection text that appears at the top of protection
-- banners.
-- * explanation - the text that appears below the main protection text, used
-- to explain the details of the protection.
-- * tooltip - the tooltip text you see when you move the mouse over a small
-- padlock icon.
-- * link - the page that the small padlock icon links to.
-- * alt - the alt text for the small padlock icon. This is also used as tooltip
-- text for the large protection banners.
-- * image - the padlock image used in both protection banners and small padlock
-- icons.
--
-- The module checks in three separate tables to find a value for each field.
-- First it checks the banners table, which has values specific to the reason
-- for the page being protected. Then the module checks the defaultBanners
-- table, which has values specific to each protection level. Finally, the
-- module checks the masterBanner table, which holds data for protection
-- templates to use if no data has been found in the previous two tables.
--
-- The values in the banner data can take parameters. These are specified
-- using ${TEXTLIKETHIS} (a dollar sign preceding a parameter name
-- enclosed in curly braces).
--
-- Available parameters:
--
-- ${CURRENTVERSION} - a link to the page history or the move log, with the
-- display message "current-version-edit-display" or
-- "current-version-move-display".
--
-- ${EDITREQUEST} - a link to create an edit request for the current page.
--
-- ${EXPLANATIONBLURB} - an explanation blurb, e.g. "Please discuss any changes
-- on the talk page; you may submit a request to ask an administrator to make
-- an edit if it is minor or supported by consensus."
--
-- ${IMAGELINK} - a link to set the image to, depending on the protection
-- action and protection level.
--
-- ${INTROBLURB} - the PROTECTIONBLURB parameter, plus the expiry if an expiry
-- is set. E.g. "Editing of this page by new or unregistered users is currently
-- disabled until dd Month YYYY."
--
-- ${INTROFRAGMENT} - the same as ${INTROBLURB}, but without final punctuation
-- so that it can be used in run-on sentences.
--
-- ${PAGETYPE} - the type of the page, e.g. "article" or "template".
-- Defined in the cfg.pagetypes table.
--
-- ${PROTECTIONBLURB} - a blurb explaining the protection level of the page, e.g.
-- "Editing of this page by new or unregistered users is currently disabled"
--
-- ${PROTECTIONDATE} - the protection date, if it has been supplied to the
-- template.
--
-- ${PROTECTIONLEVEL} - the protection level, e.g. "fully protected" or
-- "semi-protected".
--
-- ${PROTECTIONLOG} - a link to the protection log or the pending changes log,
-- depending on the protection action.
--
-- ${TALKPAGE} - a link to the talk page. If a section is specified, links
-- straight to that talk page section.
--
-- ${TOOLTIPBLURB} - uses the PAGETYPE, PROTECTIONTYPE and EXPIRY parameters to
-- create a blurb like "This template is semi-protected", or "This article is
-- move-protected until DD Month YYYY".
--
-- ${VANDAL} - links for the specified username (or the root page name)
-- using Module:Vandal-m.
--
-- Functions
--
-- For advanced users, it is possible to use Lua functions instead of strings
-- in the banner config tables. Using functions gives flexibility that is not
-- possible just by using parameters. Functions take two arguments, the
-- protection object and the template arguments, and they must output a string.
--
-- For example:
--
-- text = function (protectionObj, args)
-- if protectionObj.level == 'autoconfirmed' then
-- return 'foo'
-- else
-- return 'bar'
-- end
-- end
--
-- Some protection object properties and methods that may be useful:
-- protectionObj.action - the protection action
-- protectionObj.level - the protection level
-- protectionObj.reason - the protection reason
-- protectionObj.expiry - the expiry. Nil if unset, the string "indef" if set
-- to indefinite, and the protection time in unix time if temporary.
-- protectionObj.protectionDate - the protection date in unix time, or nil if
-- unspecified.
-- protectionObj.bannerConfig - the banner config found by the module. Beware
-- of editing the config field used by the function, as it could create an
-- infinite loop.
-- protectionObj:isProtected - returns a boolean showing whether the page is
-- protected.
-- protectionObj:isTemporary - returns a boolean showing whether the expiry is
-- temporary.
-- protectionObj:isIncorrect - returns a boolean showing whether the protection
-- template is incorrect.
--]]
-- The master banner data, used if no values have been found in banners or
-- defaultBanners.
masterBanner = {
text = '${INTROBLURB}',
explanation = '${EXPLANATIONBLURB}',
tooltip = '${TOOLTIPBLURB}',
link = '${IMAGELINK}',
alt = 'Page ${PROTECTIONLEVEL}'
},
-- The default banner data. This holds banner data for different protection
-- levels.
-- *required* - this table needs edit, move, autoreview and upload subtables.
defaultBanners = {
edit = {},
move = {},
autoreview = {
default = {
alt = 'Page protected with pending changes',
tooltip = 'All edits by unregistered and new users are subject to review prior to becoming visible to unregistered users',
image = 'Pending-protection-shackle.svg'
}
},
upload = {}
},
-- The banner data. This holds banner data for different protection reasons.
-- In fact, the reasons specified in this table control which reasons are
-- valid inputs to the first positional parameter.
--
-- There is also a non-standard "description" field that can be used for items
-- in this table. This is a description of the protection reason for use in the
-- module documentation.
--
-- *required* - this table needs edit, move, autoreview and upload subtables.
banners = {
edit = {
blp = {
description = 'For protected biographies of living people',
text = '${INTROFRAGMENT} to prevent harmful edits about a living person.',
tooltip = '${TOOLTIPFRAGMENT} to prevent harmful edits about a living person',
},
deceased = {
description = 'For protected user pages of deceased editors',
text = '${INTROFRAGMENT} to prevent vandalism of a deceased editor\'s user page. Please discuss changes on the ${TALKPAGE}.',
tooltip = '${TOOLTIPFRAGMENT} to prevent vandalism',
},
dmca = {
description = 'For pages protected following a copyright complaint',
explanation = function (protectionObj, args)
local text = 'This page is protected following a copyright complaint.'
if args.notice then text = text .. ' Notice: ' .. args.notice .. '.' end
return text .. ' Please discuss changes on the ${TALKPAGE}.'
end,
image = 'Office-protection-shackle.svg',
link = 'Special:Log/protect',
},
dispute = {
description = 'For pages protected due to editing disputes',
text = function (protectionObj, args)
-- Find the value of "disputes".
local display = 'disputes'
local disputes
if args.section then
disputes = string.format(
'[[%s:%s#%s|%s]]',
mw.site.namespaces[protectionObj.title.namespace].talk.name,
protectionObj.title.text,
args.section,
display
)
else
disputes = display
end
-- Make the blurb, depending on the expiry.
local msg
if type(protectionObj.expiry) == 'number' then
msg = '${INTROFRAGMENT} or until editing %s have been resolved.'
else
msg = '${INTROFRAGMENT} until editing %s have been resolved.'
end
return string.format(msg, disputes)
end,
explanation = "This protection is '''not''' an endorsement of the"
.. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}',
tooltip = '${TOOLTIPFRAGMENT} due to editing disputes',
},
ecp = {
description = 'For pages with extended protection',
alt = 'Extended-protected ${PAGETYPE}',
},
mainpage = {
description = 'For pages protected for being displayed on the [[Main Page]]',
text = "This file is currently protected from editing because it is currently or will soon be displayed on the [[Main Page]].",
explanation = 'Images on the Main Page are protected due to their high'
.. ' visibility. Please discuss any necessary changes on the ${TALKPAGE}.'
.. '<br /><span style="font-size:90%;">'
.. "'''Administrators:''' Once this image is definitely off the Main Page,"
.. ' please unprotect this file, or reduce to semi-protection,'
.. ' as appropriate.</span>',
},
office = {
description = 'For pages protected for administrative review',
text = 'This ${PAGETYPE} is protected for administrative review.',
explanation = 'Please discuss changes on the ${TALKPAGE}.',
image = 'Office-protection-shackle.svg',
link = 'Special:Log/protect',
},
reset = {
description = 'For pages protected during a rewrite',
text = 'This ${PAGETYPE} is protected while it is being rewritten.',
explanation = 'Please discuss changes on the ${TALKPAGE}.',
image = 'Office-protection-shackle.svg',
link = 'Special:Log/protect',
},
sock = {
description = "For pages protected due to sock puppetry",
text = "${INTROFRAGMENT} to prevent sock puppets of blocked or banned users from editing it.",
tooltip = '${TOOLTIPFRAGMENT} to prevent sock puppets of blocked or banned users from'
.. ' editing it',
},
template = {
description = "For high-risk templates and Lua modules",
text = "This is a permanently protected ${PAGETYPE}, as it is high-risk.",
explanation = "Please discuss any changes on the ${TALKPAGE}; you may ${EDITREQUEST} to ask an administrator or template editor to make an edit if it is uncontroversial or supported by consensus. You can also request that the page be unprotected.",
tooltip = 'This high-risk ${PAGETYPE} is permanently ${PROTECTIONLEVEL}'
.. ' to prevent vandalism',
alt = 'Permanently protected ${PAGETYPE}',
},
usertalk = {
description = 'For pages protected against disruptive edits by a'
.. ' particular user',
text = '${INTROFRAGMENT} to prevent ${VANDAL} from using it to make disruptive edits,'
.. ' such as abusing the'
.. ' {{[[Template:unblock|unblock]]}} template.',
explanation = "If you cannot edit this user talk page and you need to make a change or leave a message, you can request an edit, request unprotection, [[Special:Userlogin|log in]], or [[Special:UserLogin/signup|create an account]].",
},
vandalism = {
description = "For pages protected against vandalism",
text = "${INTROFRAGMENT} due to vandalism.",
explanation = function (protectionObj, args)
local ret = ''
if protectionObj.level == 'sysop' then
ret = ret .. "This protection is '''not''' an endorsement of the"
.. ' ${CURRENTVERSION}. '
end
return ret .. '${EXPLANATIONBLURB}'
end,
tooltip = '${TOOLTIPFRAGMENT} due to vandalism',
}
},
move = {
dispute = {
description = 'For pages protected against page moves due to'
.. ' disputes over the page title',
explanation = "This protection is '''not''' an endorsement of the"
.. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}',
image = 'Move-protection-shackle.svg'
},
vandalism = {
description = "For pages protected against page-move vandalism"
}
},
autoreview = {},
upload = {}
},
--------------------------------------------------------------------------------
--
-- GENERAL DATA TABLES
--
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- Protection blurbs
--------------------------------------------------------------------------------
-- This table produces the protection blurbs available with the
-- ${PROTECTIONBLURB} parameter. It is sorted by protection action and
-- protection level, and is checked by the module in the following order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
-- 3. "edit" protection action, default protection level
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
protectionBlurbs = {
edit = {
default = "This ${PAGETYPE} is currently protected from editing",
templateeditor = "This ${PAGETYPE} is currently protected from editing",
autoconfirmed = "Editing of this ${PAGETYPE} by new or unregistered users is currently disabled",
extendedconfirmed = "This ${PAGETYPE} is currently under extended confirmed protection",
},
move = {
default = "This ${PAGETYPE} is currently protected from [[Help:Moving a page|page moves]]"
},
autoreview = {
default = "All edits made to this ${PAGETYPE} by new or unregistered users are currently subject to review"
},
upload = {
default = 'Uploading new versions of this ${PAGETYPE} is currently disabled'
}
},
--------------------------------------------------------------------------------
-- Explanation blurbs
--------------------------------------------------------------------------------
-- This table produces the explanation blurbs available with the
-- ${EXPLANATIONBLURB} parameter. It is sorted by protection action,
-- protection level, and whether the page is a talk page or not. If the page is
-- a talk page it will have a talk key of "talk"; otherwise it will have a talk
-- key of "subject". The table is checked in the following order:
-- 1. page's protection action, page's protection level, page's talk key
-- 2. page's protection action, page's protection level, default talk key
-- 3. page's protection action, default protection level, page's talk key
-- 4. page's protection action, default protection level, default talk key
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
explanationBlurbs = {
edit = {
autoconfirmed = {
subject = "See the protection policy and ${PROTECTIONLOG} for more details. If you cannot edit this ${PAGETYPE} and you wish to make a change, you can ${EDITREQUEST}, discuss changes on the ${TALKPAGE}, request unprotection, [[Special:Userlogin|log in]], or [[Special:UserLogin/signup|create an account]].",
default = "See the protection policy and ${PROTECTIONLOG} for more details. If you cannot edit this ${PAGETYPE} and you wish to make a change, you can request unprotection, [[Special:Userlogin|log in]], or [[Special:UserLogin/signup|create an account]].",
},
extendedconfirmed = {
default = "Extended confirmed protection prevents edits from all unregistered editors and registered users with fewer than 30 days tenure and 500 edits. The policy on community use specifies that extended confirmed protection can be applied to combat disruption, if semi-protection has proven to be ineffective. Extended confirmed protection may also be applied to enforce arbitration sanctions. Please discuss any changes on the ${TALKPAGE}; you may ${EDITREQUEST} to ask for uncontroversial changes supported by consensus."
},
default = {
subject = "See the protection policy and ${PROTECTIONLOG} for more details. Please discuss any changes on the ${TALKPAGE}; you may ${EDITREQUEST} to ask an administrator to make an edit if it is uncontroversial or supported by consensus. You may also request that this page be unprotected.",
default = "See the protection policy and ${PROTECTIONLOG} for more details. You may request an edit to this page, or ask for it to be unprotected."
}
},
move = {
default = {
subject = "See the protection policy and ${PROTECTIONLOG} for more details. The page may still be edited but cannot be moved until unprotected. Please discuss any suggested moves on the ${TALKPAGE} or at Requested moves. You can also request that the page be unprotected.",
default = "See the protection policy and ${PROTECTIONLOG} for more details. The page may still be edited but cannot be moved until unprotected. Please discuss any suggested moves at Requested moves. You can also request that the page be unprotected."
}
},
autoreview = {
default = {
default = "See the protection policy and ${PROTECTIONLOG} for more details. Edits to this ${PAGETYPE} by new and unregistered users will not be visible to readers until they are accepted by a reviewer. To avoid the need for your edits to be reviewed, you may request unprotection, [[Special:Userlogin|log in]], or [[Special:UserLogin/signup|create an account]]."
},
},
upload = {
default = {
default = "See the protection policy and ${PROTECTIONLOG} for more details. The page may still be edited but new versions of the file cannot be uploaded until it is unprotected. You can request that a new version be uploaded by using a protected edit request, or you can request that the file be unprotected."
}
}
},
--------------------------------------------------------------------------------
-- Protection levels
--------------------------------------------------------------------------------
-- This table provides the data for the ${PROTECTIONLEVEL} parameter, which
-- produces a short label for different protection levels. It is sorted by
-- protection action and protection level, and is checked in the following
-- order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
-- 3. "edit" protection action, default protection level
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
protectionLevels = {
edit = {
default = 'protected',
templateeditor = 'template-protected',
extendedconfirmed = 'extended-confirmed-protected',
autoconfirmed = 'semi-protected',
},
move = {
default = 'move-protected'
},
autoreview = {
},
upload = {
default = 'upload-protected'
}
},
--------------------------------------------------------------------------------
-- Images
--------------------------------------------------------------------------------
-- This table lists different padlock images for each protection action and
-- protection level. It is used if an image is not specified in any of the
-- banner data tables, and if the page does not satisfy the conditions for using
-- the ['image-filename-indef'] image. It is checked in the following order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
images = {
edit = {
default = 'Full-protection-shackle.svg',
templateeditor = 'Template-protection-shackle.svg',
extendedconfirmed = 'Extended-protection-shackle.svg',
autoconfirmed = 'Semi-protection-shackle.svg'
},
move = {
default = 'Move-protection-shackle.svg',
},
autoreview = {
default = 'Pending-protection-shackle.svg'
},
upload = {
default = 'Upload-protection-shackle.svg'
}
},
-- Pages with a reason specified in this table will show the special "indef"
-- padlock, defined in the 'image-filename-indef' message, if no expiry is set.
indefImageReasons = {
template = true
},
--------------------------------------------------------------------------------
-- Image links
--------------------------------------------------------------------------------
-- This table provides the data for the ${IMAGELINK} parameter, which gets
-- the image link for small padlock icons based on the page's protection action
-- and protection level. It is checked in the following order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
-- 3. "edit" protection action, default protection level
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
imageLinks = {
edit = {
default = "Special:Log/protect",
templateeditor = "Special:Log/protect",
extendedconfirmed = "Special:Log/protect",
autoconfirmed = "Special:Log/protect"
},
move = {
default = "Special:Log/protect"
},
autoreview = {
default = "Special:Log/protect"
},
upload = {
default = "Special:Log/protect"
}
},
--------------------------------------------------------------------------------
-- Padlock indicator names
--------------------------------------------------------------------------------
-- This table provides the "name" attribute for the <indicator> extension tag
-- with which small padlock icons are generated. All indicator tags on a page
-- are displayed in alphabetical order based on this attribute, and with
-- indicator tags with duplicate names, the last tag on the page wins.
-- The attribute is chosen based on the protection action; table keys must be a
-- protection action name or the string "default".
padlockIndicatorNames = {
autoreview = 'pp-autoreview',
default = 'pp-default'
},
--------------------------------------------------------------------------------
-- Protection categories
--------------------------------------------------------------------------------
--[[
-- The protection categories are stored in the protectionCategories table.
-- Keys to this table are made up of the following strings:
--
-- 1. the expiry date
-- 2. the namespace
-- 3. the protection reason (e.g. "dispute" or "vandalism")
-- 4. the protection level (e.g. "sysop" or "autoconfirmed")
-- 5. the action (e.g. "edit" or "move")
--
-- When the module looks up a category in the table, first it will will check to
-- see a key exists that corresponds to all five parameters. For example, a
-- user page semi-protected from vandalism for two weeks would have the key
-- "temp-user-vandalism-autoconfirmed-edit". If no match is found, the module
-- changes the first part of the key to "all" and checks the table again. It
-- keeps checking increasingly generic key combinations until it finds the
-- field, or until it reaches the key "all-all-all-all-all".
--
-- The module uses a binary matrix to determine the order in which to search.
-- This is best demonstrated by a table. In this table, the "0" values
-- represent "all", and the "1" values represent the original data (e.g.
-- "indef" or "file" or "vandalism").
--
-- expiry namespace reason level action
-- order
-- 1 1 1 1 1 1
-- 2 0 1 1 1 1
-- 3 1 0 1 1 1
-- 4 0 0 1 1 1
-- 5 1 1 0 1 1
-- 6 0 1 0 1 1
-- 7 1 0 0 1 1
-- 8 0 0 0 1 1
-- 9 1 1 1 0 1
-- 10 0 1 1 0 1
-- 11 1 0 1 0 1
-- 12 0 0 1 0 1
-- 13 1 1 0 0 1
-- 14 0 1 0 0 1
-- 15 1 0 0 0 1
-- 16 0 0 0 0 1
-- 17 1 1 1 1 0
-- 18 0 1 1 1 0
-- 19 1 0 1 1 0
-- 20 0 0 1 1 0
-- 21 1 1 0 1 0
-- 22 0 1 0 1 0
-- 23 1 0 0 1 0
-- 24 0 0 0 1 0
-- 25 1 1 1 0 0
-- 26 0 1 1 0 0
-- 27 1 0 1 0 0
-- 28 0 0 1 0 0
-- 29 1 1 0 0 0
-- 30 0 1 0 0 0
-- 31 1 0 0 0 0
-- 32 0 0 0 0 0
--
-- In this scheme the action has the highest priority, as it is the last
-- to change, and the expiry has the least priority, as it changes the most.
-- The priorities of the expiry, the protection level and the action are
-- fixed, but the priorities of the reason and the namespace can be swapped
-- through the use of the cfg.bannerDataNamespaceHasPriority table.
--]]
-- If the reason specified to the template is listed in this table,
-- namespace data will take priority over reason data in the protectionCategories
-- table.
reasonsWithNamespacePriority = {
vandalism = true,
},
-- The string to use as a namespace key for the protectionCategories table for each
-- namespace number.
categoryNamespaceKeys = {
[ 2] = 'user',
[ 3] = 'user',
[ 4] = 'project',
[ 6] = 'file',
[ 8] = 'mediawiki',
[ 10] = 'template',
[ 12] = 'project',
[ 14] = 'category',
[100] = 'portal',
[828] = 'module',
},
protectionCategories = {
['all|all|all|all|all'] = "Protected pages",
['all|all|office|all|all'] = "Protected pages",
['all|all|reset|all|all'] = "Protected pages",
['all|all|dmca|all|all'] = "Protected pages",
['all|all|mainpage|all|all'] = "Protected pages",
['all|all|all|extendedconfirmed|all'] = "Protected pages",
['all|all|ecp|extendedconfirmed|all'] = "Protected pages",
['all|template|all|all|edit'] = "Protected pages",
['all|all|all|autoconfirmed|edit'] = "Protected pages",
['indef|all|all|autoconfirmed|edit'] = "Protected pages",
['all|all|blp|autoconfirmed|edit'] = "Protected pages",
['temp|all|blp|autoconfirmed|edit'] = "Protected pages",
['all|all|dispute|autoconfirmed|edit'] = "Protected pages",
['all|all|sock|autoconfirmed|edit'] = "Protected pages",
['all|all|vandalism|autoconfirmed|edit'] = "Protected pages",
['all|category|all|autoconfirmed|edit'] = "Protected pages",
['all|file|all|autoconfirmed|edit'] = "Protected pages",
['all|portal|all|autoconfirmed|edit'] = "Protected pages",
['all|project|all|autoconfirmed|edit'] = "Protected pages",
['all|talk|all|autoconfirmed|edit'] = "Protected pages",
['all|template|all|autoconfirmed|edit'] = "Protected pages",
['all|user|all|autoconfirmed|edit'] = "Protected pages",
['all|all|all|templateeditor|move'] = "Protected pages",
['all|all|all|templateeditor|edit'] = "Protected pages",
['all|template|all|templateeditor|edit'] = "Protected pages",
['all|template|all|templateeditor|move'] = "Protected pages", -- move-protected templates
['all|all|blp|sysop|edit'] = "Protected pages",
['temp|all|blp|sysop|edit'] = "Protected pages",
['all|all|dispute|sysop|edit'] = "Protected pages",
['all|all|sock|sysop|edit'] = "Protected pages",
['all|all|vandalism|sysop|edit'] = "Protected pages",
['all|category|all|sysop|edit'] = "Protected pages",
['all|file|all|sysop|edit'] = "Protected pages",
['all|project|all|sysop|edit'] = "Protected pages",
['all|talk|all|sysop|edit'] = "Protected pages",
['all|template|all|extendedconfirmed|edit'] = "Protected pages",
['all|template|all|extendedconfirmed|move'] = "Protected pages",
['all|template|all|sysop|edit'] = false,
['all|user|all|sysop|edit'] = "Protected pages",
['all|module|all|all|edit'] = false,
['all|module|all|templateeditor|edit'] = "Protected pages",
['all|module|all|extendedconfirmed|edit'] = "Protected pages",
['all|module|all|autoconfirmed|edit'] = "Protected pages",
['all|all|all|sysop|move'] = "Protected pages",
['indef|all|all|sysop|move'] = "Protected pages",
['all|all|dispute|sysop|move'] = "Protected pages",
['all|all|vandalism|sysop|move'] = "Protected pages",
['all|portal|all|sysop|move'] = "Protected pages",
['all|project|all|sysop|move'] = "Protected pages",
['all|talk|all|sysop|move'] = "Protected pages",
['all|template|all|sysop|move'] = "Protected pages",
['all|user|all|sysop|move'] = "Protected pages",
['all|all|all|autoconfirmed|autoreview'] = "Protected pages",
['all|file|all|all|upload'] = "Protected pages",
},
--------------------------------------------------------------------------------
-- Expiry category config
--------------------------------------------------------------------------------
-- This table configures the expiry category behaviour for each protection
-- action.
-- * If set to true, setting that action will always categorise the page if
-- an expiry parameter is not set.
-- * If set to false, setting that action will never categorise the page.
-- * If set to nil, the module will categorise the page if:
-- 1) an expiry parameter is not set, and
-- 2) a reason is provided, and
-- 3) the specified reason is not blacklisted in the reasonsWithoutExpiryCheck
-- table.
expiryCheckActions = {
edit = nil,
move = false,
autoreview = true,
upload = false
},
reasonsWithoutExpiryCheck = {
blp = true,
template = true,
},
--------------------------------------------------------------------------------
-- Pagetypes
--------------------------------------------------------------------------------
-- This table produces the page types available with the ${PAGETYPE} parameter.
-- Keys are namespace numbers, or the string "default" for the default value.
pagetypes = {
[0] = 'article',
[6] = 'file',
[10] = 'template',
[14] = 'category',
[828] = 'module',
default = 'page'
},
--------------------------------------------------------------------------------
-- Strings marking indefinite protection
--------------------------------------------------------------------------------
-- This table contains values passed to the expiry parameter that mean the page
-- is protected indefinitely.
indefStrings = {
['indef'] = true,
['indefinite'] = true,
['indefinitely'] = true,
['infinite'] = true,
},
--------------------------------------------------------------------------------
-- Group hierarchy
--------------------------------------------------------------------------------
-- This table maps each group to all groups that have a superset of the original
-- group's page editing permissions.
hierarchy = {
sysop = {},
reviewer = {'sysop'},
filemover = {'sysop'},
templateeditor = {'sysop'},
extendedconfirmed = {'sysop'},
autoconfirmed = {'reviewer', 'filemover', 'templateeditor', 'extendedconfirmed'},
user = {'autoconfirmed'},
['*'] = {'user'}
},
--------------------------------------------------------------------------------
-- Wrapper templates and their default arguments
--------------------------------------------------------------------------------
-- This table contains wrapper templates used with the module, and their
-- default arguments. Templates specified in this table should contain the
-- following invocation, and no other template content:
--
-- {{#invoke:Protection banner|main}}
--
-- If other content is desired, it can be added between
-- <noinclude>...</noinclude> tags.
--
-- When a user calls one of these wrapper templates, they will use the
-- default arguments automatically. However, users can override any of the
-- arguments.
wrappers = {
['Template:Pp'] = {},
['Template:Protection padlock'] = {},
['Template:Pp-extended'] = {'ecp'},
['Template:Pp-blp'] = {'blp'},
-- we don't need Template:Pp-create
['Template:Pp-dispute'] = {'dispute'},
['Template:Pp-main-page'] = {'mainpage'},
['Template:Pp-move'] = {action = 'move', catonly = 'yes'},
['Template:Pp-move-dispute'] = {'dispute', action = 'move', catonly = 'yes'},
-- we don't need Template:Pp-move-indef
['Template:Pp-move-vandalism'] = {'vandalism', action = 'move', catonly = 'yes'},
['Template:Pp-office'] = {'office'},
['Template:Pp-office-dmca'] = {'dmca'},
['Template:Pp-pc'] = {action = 'autoreview', small = true},
['Template:Pp-pc1'] = {action = 'autoreview', small = true},
['Template:Pp-reset'] = {'reset'},
['Template:Pp-semi-indef'] = {small = true},
['Template:Pp-sock'] = {'sock'},
['Template:Pp-template'] = {'template', small = true},
['Template:Pp-upload'] = {action = 'upload'},
['Template:Pp-usertalk'] = {'usertalk'},
['Template:Pp-vandalism'] = {'vandalism'},
},
--------------------------------------------------------------------------------
--
-- MESSAGES
--
--------------------------------------------------------------------------------
msg = {
--------------------------------------------------------------------------------
-- Intro blurb and intro fragment
--------------------------------------------------------------------------------
-- These messages specify what is produced by the ${INTROBLURB} and
-- ${INTROFRAGMENT} parameters. If the protection is temporary they use the
-- intro-blurb-expiry or intro-fragment-expiry, and if not they use
-- intro-blurb-noexpiry or intro-fragment-noexpiry.
-- It is possible to use banner parameters in these messages.
['intro-blurb-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY}.',
['intro-blurb-noexpiry'] = '${PROTECTIONBLURB}.',
['intro-fragment-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY},',
['intro-fragment-noexpiry'] = '${PROTECTIONBLURB}',
--------------------------------------------------------------------------------
-- Tooltip blurb
--------------------------------------------------------------------------------
-- These messages specify what is produced by the ${TOOLTIPBLURB} parameter.
-- If the protection is temporary the tooltip-blurb-expiry message is used, and
-- if not the tooltip-blurb-noexpiry message is used.
-- It is possible to use banner parameters in these messages.
['tooltip-blurb-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY}.',
['tooltip-blurb-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}.',
['tooltip-fragment-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY},',
['tooltip-fragment-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}',
--------------------------------------------------------------------------------
-- Special explanation blurb
--------------------------------------------------------------------------------
-- An explanation blurb for pages that cannot be unprotected, e.g. for pages
-- in the MediaWiki namespace.
-- It is possible to use banner parameters in this message.
['explanation-blurb-nounprotect'] = "See the protection policy and ${PROTECTIONLOG} for more details. Please discuss any changes on the ${TALKPAGE}; you may ${EDITREQUEST} to ask an administrator to make an edit if it is uncontroversial or supported by consensus.",
--------------------------------------------------------------------------------
-- Protection log display values
--------------------------------------------------------------------------------
-- These messages determine the display values for the protection log link
-- or the pending changes log link produced by the ${PROTECTIONLOG} parameter.
-- It is possible to use banner parameters in these messages.
['protection-log-display'] = 'protection log',
['pc-log-display'] = 'pending changes log',
--------------------------------------------------------------------------------
-- Current version display values
--------------------------------------------------------------------------------
-- These messages determine the display values for the page history link
-- or the move log link produced by the ${CURRENTVERSION} parameter.
-- It is possible to use banner parameters in these messages.
['current-version-move-display'] = 'current title',
['current-version-edit-display'] = 'current version',
--------------------------------------------------------------------------------
-- Talk page
--------------------------------------------------------------------------------
-- This message determines the display value of the talk page link produced
-- with the ${TALKPAGE} parameter.
-- It is possible to use banner parameters in this message.
['talk-page-link-display'] = 'talk page',
--------------------------------------------------------------------------------
-- Edit requests
--------------------------------------------------------------------------------
-- This message determines the display value of the edit request link produced
-- with the ${EDITREQUEST} parameter.
-- It is possible to use banner parameters in this message.
['edit-request-display'] = 'submit an edit request',
--------------------------------------------------------------------------------
-- Expiry date format
--------------------------------------------------------------------------------
-- This is the format for the blurb expiry date. It should be valid input for
-- the first parameter of the #time parser function.
['expiry-date-format'] = 'F j, Y "at" H:i e',
--------------------------------------------------------------------------------
-- Tracking categories
--------------------------------------------------------------------------------
-- These messages determine which tracking categories the module outputs.
['tracking-category-incorrect'] = 'Pages with incorrect protection templates',
['tracking-category-template'] = "Protected pages",
--------------------------------------------------------------------------------
-- Images
--------------------------------------------------------------------------------
-- These are images that are not defined by their protection action and protection level.
['image-filename-indef'] = 'Full-protection-shackle.svg',
['image-filename-default'] = 'Transparent.gif',
--------------------------------------------------------------------------------
-- End messages
--------------------------------------------------------------------------------
}
--------------------------------------------------------------------------------
-- End configuration
--------------------------------------------------------------------------------
}