Difference between revisions of "Module:Protection banner/config"

From Amanita Research
Jump to navigation Jump to search
(use PAGETYPE variable with the reset reason)
(add an INTROFRAGMENT parameter to solve the problem of what punctuation to use in run-on sentences using INTROBLURB)
Line 31: Line 31:
 
-- ${INTROBLURB} - the PROTECTIONBLURB parameter, plus the expiry if an expiry
 
-- ${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  
 
-- is set. E.g. "Editing of this page by new or unregistered users is currently  
-- disabled until dd Month YYYY"
+
-- 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".
 
-- ${PAGETYPE} - the type of the page, e.g. "article" or "template".
Line 70: Line 73:
  
 
masterBanner = {
 
masterBanner = {
text = '${INTROBLURB}.',
+
text = '${INTROBLURB}',
 
explanation = '${EXPLANATIONBLURB}',
 
explanation = '${EXPLANATIONBLURB}',
 
tooltip = '${TOOLTIPBLURB}.',
 
tooltip = '${TOOLTIPBLURB}.',
Line 104: Line 107:
 
.. ' [[Wikipedia:Biographies of living persons'
 
.. ' [[Wikipedia:Biographies of living persons'
 
.. '|biographies of living persons]] policy.',
 
.. '|biographies of living persons]] policy.',
text = '${INTROBLURB} to promote compliance with'
+
text = '${INTROFRAGMENT} to promote compliance with'
 
.. ' [[Wikipedia:Biographies of living persons'
 
.. ' [[Wikipedia:Biographies of living persons'
 
.. "|Wikipedia's policy on the biographies"
 
.. "|Wikipedia's policy on the biographies"
Line 154: Line 157:
 
local msg
 
local msg
 
if type(protectionObj.expiry) == 'number' then
 
if type(protectionObj.expiry) == 'number' then
msg = '${INTROBLURB}, or until editing %s have been resolved.'
+
msg = '${INTROFRAGMENT} or until editing %s have been resolved.'
 
else
 
else
msg = '${INTROBLURB} until editing %s have been resolved.'
+
msg = '${INTROFRAGMENT} until editing %s have been resolved.'
 
end
 
end
 
return string.format(msg, disputes)
 
return string.format(msg, disputes)
Line 235: Line 238:
 
description = 'For pages protected due to'
 
description = 'For pages protected due to'
 
.. ' [[Wikipedia:Sock puppetry|sock puppetry]].',
 
.. ' [[Wikipedia:Sock puppetry|sock puppetry]].',
text = '${INTROBLURB} to prevent [[Wikipedia:Sock puppetry|sock puppets]] of'
+
text = '${INTROFRAGMENT} to prevent [[Wikipedia:Sock puppetry|sock puppets]] of'
 
.. ' [[Wikipedia:Blocking policy|blocked]] or'
 
.. ' [[Wikipedia:Blocking policy|blocked]] or'
 
.. ' [[Wikipedia:List of banned users|banned users]]'
 
.. ' [[Wikipedia:List of banned users|banned users]]'
Line 263: Line 266:
 
description = 'For pages protected against disruptive edits by a'
 
description = 'For pages protected against disruptive edits by a'
 
.. ' particular user.',
 
.. ' particular user.',
text = '${INTROBLURB} to prevent ${VANDAL} from using it to make disruptive edits,'
+
text = '${INTROFRAGMENT} to prevent ${VANDAL} from using it to make disruptive edits,'
 
.. ' such as abusing the'
 
.. ' such as abusing the'
 
.. ' {{[[Template:unblock|unblock]]}} template.',
 
.. ' {{[[Template:unblock|unblock]]}} template.',
Line 280: Line 283:
 
description = 'For pages protected against'
 
description = 'For pages protected against'
 
.. ' [[Wikipedia:Vandalism|vandalism]].',
 
.. ' [[Wikipedia:Vandalism|vandalism]].',
text = '${INTROBLURB} due to [[Wikipedia:Vandalism|vandalism]].',
+
text = '${INTROFRAGMENT} due to [[Wikipedia:Vandalism|vandalism]].',
 
explanation = function (protectionObj, args)
 
explanation = function (protectionObj, args)
 
local ret = ''
 
local ret = ''
Line 709: Line 712:
  
 
--------------------------------------------------------------------------------
 
--------------------------------------------------------------------------------
-- Intro blurb
+
-- Intro blurb and intro fragment
 
--------------------------------------------------------------------------------
 
--------------------------------------------------------------------------------
  
['intro-blurb-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY}',
+
['intro-blurb-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY}.',
['intro-blurb-noexpiry'] = '${PROTECTIONBLURB}',
+
['intro-blurb-noexpiry'] = '${PROTECTIONBLURB}.',
 +
['intro-fragment-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY},',
 +
['intro-fragment-noexpiry'] = '${PROTECTIONBLURB}',
  
 
--------------------------------------------------------------------------------
 
--------------------------------------------------------------------------------

Revision as of 06:09, 22 July 2014

Documentation for this module may be created at Module:Protection banner/config/doc

-- This module provides configuration data for [[Module:Protection banner]].

return {

--------------------------------------------------------------------------------
--                                BANNER DATA
--------------------------------------------------------------------------------

-- PARAMETERS
--
-- 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.
--
-- ${EXPIRY} - the protection expiry date in the format DD Month YYYY. If
-- protection is indefinite or is not set, this is the blank string.
--
-- ${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.
--]]


--------------------------------------------------------------------------------
-- Banner defaults
--------------------------------------------------------------------------------

-- If no protection reason is specified, or no banner data exists for the
-- reason given, then this data will be used for the banner. Individual items
-- from this data will also be used if that item doesn't exist in the reason-
-- specific banner config.

masterBanner = {
	text = '${INTROBLURB}',
	explanation = '${EXPLANATIONBLURB}',
	tooltip = '${TOOLTIPBLURB}.',
	link = '${IMAGELINK}',
	alt = 'Page ${PROTECTIONLEVEL}'
},

defaultBanners = {
	edit = {},
	move = {},
	autoreview = {
		autoconfirmed = {
			alt = 'Page protected with pending changes level 1',
			tooltip = 'All edits by unregistered and new users are subject to review',
			image = 'Padlock-silver-light.svg'
		},
		default = {
			alt = 'Page protected with pending changes level 2',
			tooltip = 'All edits by users who are not reviewers or administrators are'
				.. ' subject to review',
		}
	}
},

--------------------------------------------------------------------------------
-- Banner config
--------------------------------------------------------------------------------

banners = {
	edit = {
		blp = {
			description = 'For pages protected to promote compliance with the'
				.. ' [[Wikipedia:Biographies of living persons'
				.. '|biographies of living persons]] policy.',
			text = '${INTROFRAGMENT} to promote compliance with'
				.. ' [[Wikipedia:Biographies of living persons'
				.. "|Wikipedia's policy on the biographies"
				.. ' of living people]].',
			tooltip = '${TOOLTIPBLURB} to promote compliance with the policy on biographies of'
				.. ' living people',
		},
		dmca = {
			description = 'For pages protected by the Wikimedia Foundation'
				.. ' due to Digital Millennium Copyright Act takedown requests.',
			explanation = function (protectionObj, args)
				local ret = 'Pursuant to a rights owner notice under the Digital'
					.. ' Millennium Copyright Act (DMCA) regarding some content'
					.. ' in this article, the Wikimedia Foundation acted under'
					.. ' applicable law and took down and restricted the content'
					.. ' in question.'
				if args.notice then
					ret = ret .. ' A copy of the received notice can be found here: '
						.. args.notice .. '.'
				end
				ret = ret .. ' For more information, including websites discussing'
					.. ' how to file a counter-notice, please see'
					.. " [[Wikipedia:Office actions]] and the article's ${TALKPAGE}."
					.. "'''Do not remove this template from the article until the"
					.. " restrictions are withdrawn'''."
				return ret
			end,
			image = 'Padlock-black.svg',
		},
		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 = '${TOOLTIPBLURB} due to editing disputes',
		},
		mainpage = {
			description = 'For pages protected for being displayed on the [[Main Page]].',
			text = 'This file is currently'
				.. ' [[Wikipedia:This page is protected|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 by the Wikimedia Foundation.',
			text = function (protectionObj, args)
				local ret = 'This ${PAGETYPE} is currently under the'
					.. ' scrutiny of the'
					.. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]'
					.. ' and is protected.'
				if protectionObj.protectionDate then
					ret = ret .. ' It has been protected since ${PROTECTIONDATE}.'
				end
				return ret
			end,
			explanation = "If you can edit this page, please discuss all changes and"
				.. " additions on the ${TALKPAGE} first. '''Do not remove protection from this"
				.. " page unless you are authorized by the Wikimedia Foundation to do"
				.. " so.'''",
			image = 'Padlock-black.svg',
		},
		reset = {
			description = 'For pages protected by the Wikimedia Foundation and'
				.. ' "reset" to a bare-bones version.',
 			text = 'This ${PAGETYPE} is currently under the'
					.. ' scrutiny of the'
					.. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]'
					.. ' and is protected.',
			explanation = function (protectionObj, args)
				local ret = ''
				if protectionObj.protectionDate then
					ret = ret .. 'On ${PROTECTIONDATE} this ${PAGETYPE} was'
				else
					ret = ret .. 'This ${PAGETYPE} has been'
				end
				ret = ret .. ' reduced to a'
				.. ' simplified, "bare bones" version so that it may be completely'
				.. ' rewritten to ensure it meets the policies of'
				.. ' [[WP:NPOV|Neutral Point of View]] and [[WP:V|Verifiability]].'
				.. ' Standard Wikipedia policies will apply to its rewriting—which'
				.. ' will eventually be open to all editors—and will be strictly'
				.. ' enforced. The ${PAGETYPE} has been ${PROTECTIONLEVEL} while'
				.. ' it is being rebuilt.\n\n'
				.. 'Any insertion of material directly from'
				.. ' pre-protection revisions of the ${PAGETYPE} will be removed, as'
				.. ' will any material added to the ${PAGETYPE} that is not properly'
				.. ' sourced. The associated talk page(s) were also cleared on the'
				.. " same date.\n\n"
				.. "If you can edit this page, please discuss all changes and"
				.. " additions on the ${TALKPAGE} first. '''Do not override"
				.. " this action, and do not remove protection from this page,"
				.. " unless you are authorized by the Wikimedia Foundation"
				.. " to do so. No editor may remove this notice.'''"

				return ret
			end,
			image = 'Padlock-black.svg',
		},
		sock = {
			description = 'For pages protected due to'
				.. ' [[Wikipedia:Sock puppetry|sock puppetry]].',
			text = '${INTROFRAGMENT} to prevent [[Wikipedia:Sock puppetry|sock puppets]] of'
				.. ' [[Wikipedia:Blocking policy|blocked]] or'
				.. ' [[Wikipedia:List of banned users|banned users]]'
				.. ' from editing it.',
			tooltip = '${TOOLTIPBLURB} to prevent sock puppets of blocked or banned users from'
				.. ' editing it',
		},
		template = {
			description = 'For [[Wikipedia:High-risk templates|high-risk]]'
				.. ' templates and Lua modules.',
			text = 'This is a permanently [[Help:Protection|protected]] ${PAGETYPE},'
				.. ' as it is [[Wikipedia:High-risk templates|high-risk]].',
			explanation = 'Please discuss any changes on the ${TALKPAGE}; you may'
				.. ' ${EDITREQUEST} to ask an'
				.. ' [[Wikipedia:Administrators|administrator]] or'
				.. ' [[Wikipedia:Template editor|template editor]] to make an edit if'
				.. ' it is [[Help:Minor edit#When to mark an edit as a minor edit'
				.. '|uncontroversial]] or supported by'
				.. ' [[Wikipedia:Consensus|consensus]]. You can also'
				.. ' [[Wikipedia:Requests for page protection|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'
				.. ' &#123;&#123;[[Template:unblock|unblock]]&#125;&#125; template.',
			explanation = 'If you cannot edit this user talk page and you need to'
				.. ' make a change or leave a message, you can'
				.. ' [[Wikipedia:Requests for page protection'
				.. '#Current requests for edits to a protected page'
				.. '|request an edit]],'
				.. ' [[Wikipedia:Requests for page protection'
				.. '#Current requests for reduction in protection level'
				.. '|request unprotection]],'
				.. ' [[Special:Userlogin|log in]],'
				.. ' or [[Special:UserLogin/signup|create an account]].',
		},
		vandalism = {
			description = 'For pages protected against'
				.. ' [[Wikipedia:Vandalism|vandalism]].',
			text = '${INTROFRAGMENT} due to [[Wikipedia:Vandalism|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 = '${TOOLTIPBLURB} 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 = 'Padlock-olive.svg'
		},
		vandalism = {
			description = 'For pages protected against'
				.. ' [[Wikipedia:Vandalism#Page-move vandalism'
				.. ' |page-move vandalism]].'
		}
	},
	autoreview = {}
},

--------------------------------------------------------------------------------
-- Protection blurbs
--------------------------------------------------------------------------------

protectionBlurbs = {
	edit = {
		default = 'This ${PAGETYPE} is currently [[Help:Protection|'
			.. 'protected]] from editing',
		autoconfirmed = 'Editing of this ${PAGETYPE} by [[Wikipedia:User access'
			.. ' levels#New users|new]] or [[Wikipedia:User access levels#Unregistered'
			.. ' users|unregistered]] users is currently [[Help:Protection|disabled]]'
	},
	move = {
		default = 'This ${PAGETYPE} is currently [[Help:Protection|protected]]'
			.. ' from [[Help:Moving a page|page moves]]'
	},
	autoreview = {
		autoconfirmed = 'All edits made to this ${PAGETYPE} by'
			.. ' [[Wikipedia:User access levels#New users|new]] or'
			.. ' [[Wikipedia:User access levels#Unregistered users|unregistered]]'
			.. ' users are currently'
			.. ' [[Wikipedia:Pending changes|subject to review]]',
		default = 'All edits made to this ${PAGETYPE} by users who are not'
			.. ' [[Wikipedia:Reviewing|reviewers]] or'
			.. ' [[Wikipedia:Administrators|administrators]] are currently'
			.. ' [[Wikipedia:Pending changes|subject to review]]'
	}
},


--------------------------------------------------------------------------------
-- Explanation blurbs
--------------------------------------------------------------------------------

explanationBlurbs = {
	edit = {
		autoconfirmed = {
			subject = 'See the [[Wikipedia:Protection policy|'
				.. '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},'
				.. ' [[Wikipedia:Requests for page protection'
				.. '#Current requests for reduction in protection level'
				.. '|request unprotection]], [[Special:Userlogin|log in]], or'
				.. ' [[Special:UserLogin/signup|create an account]].',
			default = 'See the [[Wikipedia:Protection policy|'
				.. 'protection policy]] and ${PROTECTIONLOG} for more details. If you'
				.. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can'
				.. ' [[Wikipedia:Requests for page protection'
				.. '#Current requests for reduction in protection level'
				.. '|request unprotection]], [[Special:Userlogin|log in]], or'
				.. ' [[Special:UserLogin/signup|create an account]].',
		},
		default = {
			subject = 'See the [[Wikipedia:Protection policy|'
				.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
				.. ' Please discuss any changes on the ${TALKPAGE}; you'
				.. ' may ${EDITREQUEST} to ask an'
				.. ' [[Wikipedia:Administrators|administrator]] to make an edit if it'
				.. ' is [[Help:Minor edit#When to mark an edit as a minor edit'
				.. '|uncontroversial]] or supported by [[Wikipedia:Consensus'
				.. '|consensus]]. You may also [[Wikipedia:Requests for'
				.. ' page protection#Current requests for reduction in protection level'
				.. '|request]] that this page be unprotected.',
			default = 'See the [[Wikipedia:Protection policy|'
				.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
				.. ' You may [[Wikipedia:Requests for page'
				.. ' protection#Current requests for edits to a protected page|request an'
				.. ' edit]] to this page, or [[Wikipedia:Requests for'
				.. ' page protection#Current requests for reduction in protection level'
				.. '|ask]] for it to be unprotected.'
		}
	},
	move = {
		default = {
			subject = 'See the [[Wikipedia:Protection policy|'
				.. '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 [[Wikipedia:Requested moves]]. You can also'
				.. ' [[Wikipedia:Requests for page protection|request]] that the page be'
				.. ' unprotected.',
			default = 'See the [[Wikipedia:Protection policy|'
				.. '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'
				.. ' [[Wikipedia:Requested moves]]. You can also'
				.. ' [[Wikipedia:Requests for page protection|request]] that the page be'
				.. ' unprotected.'
		}
	},
	autoreview = {
		default = {
			reviewer = 'See the [[Wikipedia:Protection policy|'
				.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
				.. ' Edits to this ${PAGETYPE} will not be visible to readers'
				.. ' until they are accepted by a reviewer or an administrator.'
				.. ' To avoid the need for your edits to be reviewed, you may'
				.. ' [[Wikipedia:Requests for page protection'
				.. '#Current requests for reduction in protection level'
				.. '|request unprotection]]. Experienced editors may also'
				.. ' request the [[Wikipedia:Reviewing|reviewer user right]].',
			default = 'See the [[Wikipedia:Protection policy|'
				.. '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'
				.. ' [[Wikipedia:Requests for page protection'
				.. '#Current requests for reduction in protection level'
				.. '|request unprotection]], [[Special:Userlogin|log in]], or'
				.. ' [[Special:UserLogin/signup|create an account]].'
		},
	}
},

--------------------------------------------------------------------------------
-- Protection levels
--------------------------------------------------------------------------------

protectionLevels = {
	edit = {
		default = 'protected',
		templateeditor = 'template-protected',
		autoconfirmed = 'semi-protected',
	},
	move = {
		default = 'move-protected'
	},
	autoreview = {
	}
},

--------------------------------------------------------------------------------
-- Images
--------------------------------------------------------------------------------

images = {
	edit = {
		sysop = 'Padlock.svg',
		templateeditor = 'Padlock-pink.svg',
		autoconfirmed = 'Padlock-silver.svg'
	},
	move = {
		sysop = 'Padlock-olive.svg',
		templateeditor = 'Padlock-olive.svg'
	},
	autoreview = {
		autoconfirmed = 'Padlock-silver-light.svg',
		reviewer = 'Padlock-orange.svg'
	}
},

--------------------------------------------------------------------------------
-- Image links
--------------------------------------------------------------------------------

imageLinks = {
	edit = {
		default = 'Wikipedia:Protection policy#full',
		templateeditor = 'Wikipedia:Protection policy#template',
		autoconfirmed = 'Wikipedia:Protection policy#semi'
	},
	move = {
		default = 'Wikipedia:Protection policy#move'
	},
	autoreview = {
		autoconfirmed = 'Wikipedia:Protection policy#pc1',
		reviewer = 'Wikipedia:Protection policy#pc2'
	}
},

--------------------------------------------------------------------------------
-- Padlock positions
--------------------------------------------------------------------------------

-- Sets the "right" CSS property for padlock icons, based on its protection
-- action. This determines the position of the padlock among the other top
-- icons. If no value is found for the action, the default field is used.

padlockPositions = {
	autoreview = '85px',
	default = '55px'
},

--------------------------------------------------------------------------------
-- Protection categories
--------------------------------------------------------------------------------

--[[
-- The protection categories are stored in the cfg.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.
--]]

reasonsWithNamespacePriority = {
	-- If the reason specified to the template is listed in this table,
	-- namespace data will take priority over reason data in the protectionCategories
	-- table.
	vandalism = true,
},

categoryNamespaceKeys = {
	-- The string to use as a namespace key for the protectionCategories table for each
	-- namespace number.
	[  2] = 'user',
	[  3] = 'user',
	[  4] = 'project',
	[  6] = 'file',
	[  8] = 'mediawiki',
	[ 10] = 'template',
	[ 12] = 'project',
	[ 14] = 'category',
	[100] = 'portal',
},

protectionCategories = {
	['all|all|all|all|all']                  = 'Wikipedia protected pages',
	['all|all|office|all|all']               = 'Wikipedia Office-protected pages',
	['all|all|reset|all|all']                = 'Wikipedia Office-protected pages',
	['all|all|dmca|all|all']                 = 'Wikipedia Office-protected pages',
	['all|all|mainpage|all|all']             = 'Protected main page images',
	['all|template|all|all|edit']            = 'Wikipedia protected templates',
	['all|all|all|autoconfirmed|edit']       = 'Wikipedia semi-protected pages',
	['indef|all|all|autoconfirmed|edit']     = 'Wikipedia indefinitely semi-protected pages',
	['all|all|blp|autoconfirmed|edit']       = 'Wikipedia indefinitely semi-protected biographies of living people',
	['temp|all|blp|autoconfirmed|edit']      = 'Wikipedia temporarily semi-protected biographies of living people',
	['all|all|dispute|autoconfirmed|edit']   = 'Wikipedia pages semi-protected due to dispute',
	['all|all|sock|autoconfirmed|edit']      = 'Wikipedia pages semi-protected from banned users',
	['all|all|vandalism|autoconfirmed|edit'] = 'Wikipedia pages semi-protected against vandalism',
	['all|category|all|autoconfirmed|edit']  = 'Wikipedia semi-protected categories',
	['all|file|all|autoconfirmed|edit']      = 'Semi-protected images',
	['all|portal|all|autoconfirmed|edit']    = 'Semi-protected portals',
	['all|project|all|autoconfirmed|edit']   = 'Semi-protected project pages',
	['all|talk|all|autoconfirmed|edit']      = 'Semi-protected talk pages',
	['all|template|all|autoconfirmed|edit']  = 'Wikipedia semi-protected templates',
	['all|template|all|autoconfirmed|edit']  = 'Wikipedia semi-protected templates',
	['all|user|all|autoconfirmed|edit']      = 'Wikipedia semi-protected user and user talk pages',
	['all|all|blp|sysop|edit']               = 'Wikipedia indefinitely protected biographies of living people',
	['temp|all|blp|sysop|edit']              = 'Wikipedia temporarily protected biographies of living people',
	['all|all|dispute|sysop|edit']           = 'Wikipedia pages protected due to dispute',
	['all|all|sock|sysop|edit']              = 'Wikipedia pages protected from banned users',
	['all|all|vandalism|sysop|edit']         = 'Wikipedia pages protected against vandalism',
	['all|category|all|sysop|edit']          = 'Wikipedia protected categories',
	['all|file|all|sysop|edit']              = 'Protected images',
	['all|project|all|sysop|edit']           = 'Protected project pages',
	['all|talk|all|sysop|edit']              = 'Protected talk pages',
	['all|template|all|sysop|edit']          = 'Wikipedia protected templates',
	['all|user|all|sysop|edit']              = 'Wikipedia protected user and user talk pages',
	['all|all|all|sysop|move']               = 'Wikipedia move-protected pages',
	['indef|all|all|sysop|move']             = 'Wikipedia indefinitely move-protected pages',
	['all|all|dispute|sysop|move']           = 'Wikipedia pages move-protected due to dispute',
	['all|all|vandalism|sysop|move']         = 'Wikipedia pages move-protected due to vandalism',
	['all|portal|all|sysop|move']            = 'Wikipedia move-protected portals',
	['all|portal|all|sysop|move']            = 'Wikipedia move-protected portals',
	['all|project|all|sysop|move']           = 'Wikipedia move-protected project pages',
	['all|talk|all|sysop|move']              = 'Wikipedia move-protected talk pages',
	['all|template|all|sysop|move']          = 'Wikipedia move-protected templates',
	['all|user|all|sysop|move']              = 'Wikipedia move-protected user and user talk pages',
	['all|all|all|autoconfirmed|autoreview'] = 'Wikipedia pending changes protected pages (level 1)',
	['all|all|all|reviewer|autoreview']      = 'Wikipedia pending changes protected pages (level 2)',
},

--------------------------------------------------------------------------------
-- Expiry category config
--------------------------------------------------------------------------------

-- If any of the following reasons is passed to the module, it will not output
-- the "pages without expiry" tracking category.
reasonsWithoutExpiryCheck = {
	blp = true,
},

-- The module will only output the "pages without expiry" tracking category
-- for the actions set to true in the following table.
expiryCheckActions = {
	edit = true,
	move = false,
	autoreview = true
},

--------------------------------------------------------------------------------
-- Pagetypes
--------------------------------------------------------------------------------

pagetypes = {
	[0] = 'article',
	[6] = 'file',
	[10] = 'template',
	[14] = 'category',
	[828] = 'module',
	default = 'page'
},

--------------------------------------------------------------------------------
-- Strings marking indefinite protection
--------------------------------------------------------------------------------

indefStrings = {
	['indef'] = true,
	['indefinite'] = true,
	['indefinitely'] = true,
	['infinite'] = true,
},

--------------------------------------------------------------------------------
-- Wrapper templates and their default arguments
--------------------------------------------------------------------------------

wrappers = {
	['Template:Pp']                         = {},
	['Template:Pp-blp']                     = {'blp', action = 'edit'},
	-- we don't need Template:Pp-create
	['Template:Pp-dispute']                 = {'dispute', action = 'edit'},
	['Template:Pp-main-page']                = {'mainpage', action = 'edit'},
	['Template:Pp-move']                    = {action = 'move'},
	['Template:Pp-move-dispute']            = {'dispute', action = 'move'},
	-- we don't need Template:Pp-move-indef
	['Template:Pp-move-vandalism']          = {'vandalism', action = 'move'},
	['Template:Pp-office']                  = {'office'},
	['Template:Pp-office-dmca']             = {'dmca'},
	['Template:Pp-pc1']                     = {action = 'autoreview'},
	['Template:Pp-pc2']                     = {action = 'autoreview'},
	['Template:Pp-protected']               = {action = 'edit'},
	['Template:Pp-reset']                   = {'reset'},
	['Template:Pp-semi-indef']              = {expiry = 'indef'},
	['Template:Pp-sock']                    = {'sock', action = 'edit'},
	['Template:Pp-template']                = {'template', action = 'edit'},
	['Template:Pp-usertalk']                = {'usertalk', action = 'edit'},
	['Template:Pp-vandalism']               = {'vandalism', action = 'edit'},
},

--------------------------------------------------------------------------------
-- 
--                                 Messages
-- 
--------------------------------------------------------------------------------

msg = {

--------------------------------------------------------------------------------
-- Intro blurb and intro fragment
--------------------------------------------------------------------------------

['intro-blurb-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY}.',
['intro-blurb-noexpiry'] = '${PROTECTIONBLURB}.',
['intro-fragment-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY},',
['intro-fragment-noexpiry'] = '${PROTECTIONBLURB}',

--------------------------------------------------------------------------------
-- Tooltip blurb
--------------------------------------------------------------------------------

['tooltip-blurb-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY}',
['tooltip-blurb-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}',

--------------------------------------------------------------------------------
-- Special explanation blurb
--------------------------------------------------------------------------------

-- An explanation blurb for pages in the MediaWiki namespace.
['explanation-blurb-mediawiki'] = 'See the [[Wikipedia:Protection policy|'
	.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
	.. ' Please discuss any changes on the ${TALKPAGE}; you'
	.. ' may ${EDITREQUEST} to ask an'
	.. ' [[Wikipedia:Administrators|administrator]] to make an edit if it'
	.. ' is [[Help:Minor edit#When to mark an edit as a minor edit'
	.. '|uncontroversial]] or supported by [[Wikipedia:Consensus'
	.. '|consensus]].',

--------------------------------------------------------------------------------
-- Protection log links
--------------------------------------------------------------------------------

['protection-log-display'] = 'protection log',
['pc-log-display'] = 'pending changes log',

--------------------------------------------------------------------------------
-- Current version messages
--------------------------------------------------------------------------------

['current-version-move-display'] = 'current title',
['current-version-edit-display'] = 'current version',

--------------------------------------------------------------------------------
-- Talk page
--------------------------------------------------------------------------------

['talk-page-link-display'] = 'talk page',

--------------------------------------------------------------------------------
-- Edit requests
--------------------------------------------------------------------------------

['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'] = 'j F, Y',

--------------------------------------------------------------------------------
-- Tracking categories
--------------------------------------------------------------------------------

['tracking-category-incorrect'] = 'Wikipedia pages with incorrect protection templates',
['tracking-category-expiry'] = 'Wikipedia protected pages without expiry',
['tracking-category-create'] = 'Wikipedia pages tagged as create-protected',
['tracking-category-template'] = 'Wikipedia template-protected pages other than templates and modules',

--------------------------------------------------------------------------------
-- Images
--------------------------------------------------------------------------------

-- These are images that are not defined by their protection action and protection level.

['image-filename-indef'] = 'Padlock-red.svg',
['image-filename-default'] = 'Transparent.gif',

--------------------------------------------------------------------------------
-- Error message blurb
--------------------------------------------------------------------------------

-- $1 is replaced with the error message text. The whole message is turned into
-- a large red error message, so there is no need to add HTML styling.
['error-message-blurb'] = 'Error: $1 ([[Module:Protection banner#Errors|help]])'

--------------------------------------------------------------------------------
-- End messages
--------------------------------------------------------------------------------
}

--------------------------------------------------------------------------------
-- End configuration
--------------------------------------------------------------------------------
}