Module:Protection banner/config: Difference between revisions

    From Nonbinary Wiki
    (further conversion to new bannerData scheme)
    (use the old banner config style, but with the new parameter name scheme, and make more messages based on sentences rather than on snippets)
    Line 90: Line 90:
    -- enclosed in curly braces). Available parameters:
    -- enclosed in curly braces). Available parameters:
    --
    --
    -- ${PAGETYPE} - the type of the page, e.g. "article" or "template".
    -- ${CURRENTVERSION} - a link to the page history or the move log, with the
    -- Defined in the cfg.pagetypes table.
    -- display message "current-version-edit-display" or
    -- "current-version-move-display".
    --
    -- ${DELETIONDISCUSSION} - a link to the deletion discussion, if a link
    -- to it was specified.
    --
    -- ${DISPUTEBLURB} - a blurb about editing disputes, using the INTROBLURB
    -- parameter and the DISPUTESECTION parameter. E.g. "This page is protected
    -- from editing until disputes have been resolved."
    --
    -- ${DISPUTESECTION} - if a section link is passed to the module, this is
    -- a link to that section with the display message
    -- "dispute-section-link-display". Otherwise it is just the display
    -- message with no link.
    --
    --
    -- ${PROTECTIONLEVEL} - the protection level, e.g. "fully protected" or
    -- ${EDITREQUEST} - a link to create an edit request for the current page.
    -- "semi-protected".
    --
    --
    -- ${EXPIRY} - the protection expiry date in the format DD Month YYYY. If
    -- ${EXPIRY} - the protection expiry date in the format DD Month YYYY. If
    -- protection is indefinite or is not set, this is the blank string.
    -- protection is indefinite or is not set, this is the blank string.
    --
    --
    -- ${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."
    --
    -- ${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"
    --
    -- ${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"
    --
    --
    -- ${TALKPAGELINK} - a link to the talk page. If a section is specified, links
    -- ${PROTECTIONDATEBLURB} - a blurb explaining when the page was protected, e.g.
    -- straight to that talk page section.
    -- "It was protected
    --
    --
    -- ${DELETIONREASONSBLURB} - a blurb about why the page was deleted. For
    -- ${PROTECTIONLEVEL} - the protection level, e.g. "fully protected" or
    -- example, "Please see the deletion discussion or the protection log for
    -- "semi-protected".
    -- details of why this page was deleted." Uses the message
    -- "deletion-discussion-blurb-xfd" if a link to a deletion discussion is
    -- present, or "deletion-discussion-blurb-noxfd" if not.
    --
    --
    -- ${PROTECTIONLOG} - a link to the protection log or the pending changes log,
    -- ${PROTECTIONLOG} - a link to the protection log or the pending changes log,
    -- depending on the protection action.
    -- 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".
    --]]
    --]]


    cfg.bannerDataNamespaceHasPriority = {
    -- If the reason specified to the template is listed in this table,
    -- namespace data will take priority over reason data in the bannerData
    -- table.
    vandalism = true,
    }
    cfg.bannerDataNamespaceKeys = {
    -- The string to use as a namespace key for bannerData for each
    -- namespace number.
    [  2] = 'user',
    [  3] = 'user',
    [  4] = 'project',
    [  6] = 'file',
    [  8] = 'mediawiki',
    [ 10] = 'template',
    [ 12] = 'project',
    [ 14] = 'category',
    [100] = 'portal',
    }
    --------------------------------------------------------------------------------
    -- Intro text
    --------------------------------------------------------------------------------
    -- Shared intro text for the bannerData table.
    local introText = {}
    introText.move = 'This ${PAGETYPE} is currently [[Help:Protection|protected]]'
    .. ' from [[Help:Moving a page|page moves]]'
    introText.create = '[[Help:Starting a new page|Recreation]] of this ${PAGETYPE}'
    .. ' [[Help:Protection|has been disabled]]'
    --------------------------------------------------------------------------------
    -- Banner data table
    --------------------------------------------------------------------------------
    -- Shared explanation text for the bannerData table.
    local explanationText = {}
    explanationText.moreDetails = 'See the [[Wikipedia:Protection policy|'
    .. 'protection policy]] and ${PROTECTIONLOG} for more details.'
    --------------------------------------------------------------------------------
    -- Banner data table
    --------------------------------------------------------------------------------
    cfg.bannerData = {}
    -- Set the defaults for all protection types.
    cfg.bannerData['all-all-all-all-all'] = {
    text = 'This ${PAGETYPE} is currently [[Help:Protection|protected]]'
    .. ' from editing.',
    explanation = 'Please discuss any changes on the ${TALKPAGELINK}; 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.',
    tooltip = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}.',
    alt = 'Page ${PROTECTIONLEVEL}',
    image = 'Transparent.gif',
    category = 'Wikipedia protected pages'
    }
    -- Move-protection defaults.
    cfg.bannerData['all-all-all-all-move'] = {
    explanation = 'The page may still be edited but cannot be moved'
    .. ' until unprotected. Please discuss any suggested moves on the'
    .. ' ${TALKPAGELINK} or at [[Wikipedia:Requested moves]]. You can also'
    .. ' [[Wikipedia:Requests for page protection|request]] that the page be'
    .. ' unprotected.',
    }
    -- Create-protection defaults.
    cfg.bannerData['all-all-all-all-create'] = {
    explanation = '${DELETIONBLURB} If you would like to create a page'
    .. ' at this title, you must first'
    .. ' [[Wikipedia:Requests for page protection|request]] for it to be'
    .. ' unprotected, or contact the administrator who deleted the page for the'
    .. ' deleted material to be restored. If unsuccessful, you can use'
    .. ' [[Wikipedia:Deletion review|deletion review]].',
    }
    -- Don't make an unprotection request link for pages in the MediaWiki namespace.
    cfg.bannerData['all-mediawiki-all-all-all'] = {
    explanation = 'Please discuss any changes on the ${TALKPAGELINK}; 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]].',
    }
    -- Set defaults for temporarily-protected pages.
    cfg.bannerData['temp-all-all-all-all'] = {
    text = 'This ${PAGETYPE} is currently [[Help:Protection|protected]]'
    .. ' from editing until ${EXPIRY}.',
    tooltip = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY}.',
    }
    -- Semi-protected pages.
    cfg.bannerData['all-all-all-autoconfirmed-edit'] = {
    text = '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]].',
    }
    -- Temporarily semi-protected pages.
    cfg.bannerData['temp-all-all-autoconfirmed-edit'] = {
    text = '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]]'
    .. ' until ${EXPIRY}.',
    }
    -- Move-protected pages.
    cfg.bannerData['all-all-all-all-move'] = {
    text = 'This ${PAGETYPE} is currently [[Help:Protection|protected]]'
    .. ' from [[Help:Moving a page|page moves]].',
    }
    -- Temporarily move-protected pages.
    cfg.bannerData['temp-all-all-all-move'] = {
    text = 'This ${PAGETYPE} is currently [[Help:Protection|protected]]'
    .. ' from [[Help:Moving a page|page moves]] until ${EXPIRY}.',
    }
    -- Create-protected pages.
    cfg.bannerData['all-all-all-all-create'] = {
    text = '[[Help:Starting a new page|Recreation]] of this ${PAGETYPE}'
    .. ' [[Help:Protection|has been disabled]].',
    }
    -- Create-protected pages.
    cfg.bannerData['temp-all-all-all-create'] = {
    text = '[[Help:Starting a new page|Recreation]] of this ${PAGETYPE}'
    .. ' [[Help:Protection|has been disabled]] until ${EXPIRY}.',
    }
    --------------------------------------------------------------------------------
    -- Protection categories
    --------------------------------------------------------------------------------
    local bannerDataCategories = {
    ['all-all-office-all-all']              = 'Wikipedia Office-protected pages',
    ['all-all-reset-all-all']                = 'Wikipedia Office-protected pages',
    ['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)',
    }
    for key, cat in pairs(bannerDataCategories) do
    local t = cfg.bannerData[key] or {}
    t.category = cat
    cfg.bannerData[key] = t
    end


    --------------------------------------------------------------------------------
    --------------------------------------------------------------------------------
    Line 343: Line 176:
    -- $18 = The explanation text, based on the protection action and level.
    -- $18 = The explanation text, based on the protection action and level.


    --
    cfg.defaultBanner = {
     
    text = '${INTROBLURB}.',
    cfg.defaultBanners = {
    explanation = '${EXPLANATIONBLURB}',
    edit = {},
    tooltip = '${TOOLTIPBLURB}.',
    move = {},
    alt = 'Page ${PROTECTIONLEVEL}'
    create = {},
    autoreview = {}
    }
     
    cfg.defaultBanners.edit.autoconfirmed = {
    alt = 'Page semi-protected'
    }
     
    cfg.defaultBanners.edit.templateeditor = {
    alt = 'Page template-protected'
    }
     
    cfg.defaultBanners.edit.default = {
    text = '$1.',
    explanation = 'See the [[Wikipedia:Protection policy|'
    .. 'protection policy]] and $10 for more details. $18',
    tooltip = 'This $4 is $7$8.',
    alt = 'Page protected'
    }
     
    cfg.defaultBanners.move.default = {
    text = '$1.',
    explanation = 'See the [[Wikipedia:Protection policy|'
    .. 'protection policy]] and $10 for more details. $18',
    tooltip = 'This $4 is $7$8.',
    alt = 'Page move-protected'
    }
     
    cfg.defaultBanners.create.default = {
    text = '$1.',
    explanation = 'See the [[Wikipedia:Protection policy|'
    .. 'protection policy]] and $10 for more details. $18',
    tooltip = 'This $4 is $7$8.',
    alt = 'Page creation-protected'
    }
     
    cfg.defaultBanners.create.reviewer = {
    alt = 'Page protected with pending changes level 2'
    }
     
    cfg.defaultBanners.create.autoconfirmed = {
    alt = 'Page protected with pending changes level 1'
    }
     
    cfg.defaultBanners.create.default = {
    text = '$1.',
    explanation = 'See the [[Wikipedia:Protection policy|'
    .. 'protection policy]] and $10 for more details. $18',
    tooltip = 'This $4 is $7$8.',
    alt = 'Page protected with pending changes'
    }
    }


    Line 412: Line 195:


    cfg.banners.edit.blp = {
    cfg.banners.edit.blp = {
    text = '$1 to promote compliance with'
    text = '${INTROBLURB} 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"
    .. ' of living people]].',
    .. ' of living people]].',
    tooltip = '$1 to promote compliance with the policy on biographies of'
    tooltip = '${TOOLTIPBLURB} to promote compliance with the policy on biographies of'
    .. ' living people',
    .. ' living people',
    categoryOrder = 'reason',
    categoryOrder = 'reason',
    Line 422: Line 205:


    cfg.banners.edit.dispute = {
    cfg.banners.edit.dispute = {
    text = '$1 $2 editing $3 have been resolved.',
    text = '${DISPUTEBLURB}',
    explanation = "This protection is '''not''' an endorsement of the $9.",
    explanation = "This protection is '''not''' an endorsement of the"
    .. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}',
    tooltip = 'due to editing disputes',
    tooltip = 'due to editing disputes',
    categoryOrder = 'reason',
    categoryOrder = 'reason',
    Line 429: Line 213:


    cfg.banners.edit.template = {
    cfg.banners.edit.template = {
    text = 'This is a permanently [[Help:Protection|protected]] $4, as it is [[Wikipedia:High-risk templates|high-risk]]$8',
    text = 'This is a permanently [[Help:Protection|protected]] ${PAGETYPE},'
    explanation = 'Please discuss any changes on the $11; you may $12 to ask an'
    .. ' 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:Administrators|administrator]] or'
    .. ' [[Wikipedia:Template editor|template editor]] to make an edit if'
    .. ' [[Wikipedia:Template editor|template editor]] to make an edit if'
    .. ' it is [[Help:Minor edit#When to mark an edit as a minor edit'
    .. ' it is [[Help:Minor edit#When to mark an edit as a minor edit'
    .. '|uncontroversial]] or supported by'
    .. '|uncontroversial]] or supported by'
    .. ' [[Wikipedia:Consensus|consensus]].$13',
    .. ' [[Wikipedia:Consensus|consensus]]. You can also'
    tooltip = 'This high-risk $4 is permanently $7 to prevent vandalism',
    .. ' [[Wikipedia:Requests for page protection|request]] that the page be'
    alt = 'Permanently protected $4',
    .. ' unprotected.',
    tooltip = 'This high-risk ${PAGETYPE} is permanently ${PROTECTIONLEVEL}'
    .. ' to prevent vandalism',
    alt = 'Permanently protected ${PAGETYPE}',
    }
    }


    cfg.banners.edit.office = {
    cfg.banners.edit.office = {
    text = 'This $4 is currently under the scrutiny of the'
    text = 'This ${PAGETYPE} is currently under the scrutiny of the'
    .. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]'
    .. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]'
    .. ' and is protected. It has been protected since $5.',
    .. ' and is protected. It has been protected since $5.',
    Line 477: Line 266:


    cfg.banners.edit.sock = {
    cfg.banners.edit.sock = {
    text = '$1 to prevent [[Wikipedia:Sock puppetry|sock puppets]] of'
    text = '${INTROBLURB} 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]]'
    .. ' from editing it',
    .. ' from editing it',
    tooltip = '$1 to prevent sock puppets of blocked or banned users from'
    tooltip = '${TOOLTIPBLURB} to prevent sock puppets of blocked or banned users from'
    .. ' editing it',
    .. ' editing it',
    categoryOrder = 'reason',
    categoryOrder = 'reason',
    Line 487: Line 276:


    cfg.banners.edit.usertalk = {
    cfg.banners.edit.usertalk = {
    text = '$1 to prevent $6 from using it to make disruptive edits,'
    text = '${INTROBLURB} to prevent $6 from using it to make disruptive edits,'
    .. ' such as abusing the'
    .. ' such as abusing the'
    .. ' {{[[Template:unblock|unblock]]}} template',
    .. ' {{[[Template:unblock|unblock]]}} template',
    Line 504: Line 293:


    cfg.banners.edit.vandalism = {
    cfg.banners.edit.vandalism = {
    text = '$1 due to [[Wikipedia:Vandalism|vandalism]]',
    text = '${INTROBLURB} due to [[Wikipedia:Vandalism|vandalism]]',
    tooltip = '$1 due to vandalism',
    tooltip = '${TOOLTIPBLURB} due to vandalism',
    categoryOrder = 'namespace',
    categoryOrder = 'namespace',
    }
    }
    Line 521: Line 310:
    }
    }


    cfg.banners.autoreview.pc1 = {
    cfg.banners.autoreview.autoconfirmed = {
    text = 'All edits made to this $4 by'
    text = 'All edits made to this ${PAGETYPE} by'
    .. ' [[Wikipedia:User access levels#New users|new]] or'
    .. ' [[Wikipedia:User access levels#New users|new]] or'
    .. ' [[Wikipedia:User access levels#Unregistered users|unregistered]]'
    .. ' [[Wikipedia:User access levels#Unregistered users|unregistered]]'
    Line 532: Line 321:
    }
    }


    cfg.banners.autoreview.pc2 = {
    cfg.banners.autoreview.default = {
    text = 'All edits made to this $4 by users who are not'
    text = 'All edits made to this ${PAGETYPE} by users who are not'
    .. ' [[Wikipedia:Reviewing|reviewers]] or'
    .. ' [[Wikipedia:Reviewing|reviewers]] or'
    .. ' [[Wikipedia:Administrators|administrators]] are currently'
    .. ' [[Wikipedia:Administrators|administrators]] are currently'
    Line 542: Line 331:
    image = 'Padlock-orange.svg'
    image = 'Padlock-orange.svg'
    }
    }
    --------------------------------------------------------------------------------
    -- Protection blurbs
    --------------------------------------------------------------------------------
    cfg.protectionBlurbs = {
    edit = {},
    move = {},
    create = {},
    autoreview = {}
    }
    cfg.protectionBlurbs.edit.default = 'This ${PAGETYPE} is currently [[Help:Protection|'
    .. 'protected]] from editing'
    cfg.protectionBlurbs.edit.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]]'
    cfg.protectionBlurbs.move.default = 'This ${PAGETYPE} is currently [[Help:Protection|protected]]'
    .. ' from [[Help:Moving a page|page moves]]'
    cfg.protectionBlurbs.create.default = '[[Help:Starting a new page|Recreation]] of this ${PAGETYPE}'
    .. ' [[Help:Protection|has been disabled]]'
    cfg.protectionBlurbs.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]]'
    cfg.protectionBlurbs.autoreview.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]]'


    --------------------------------------------------------------------------------
    --------------------------------------------------------------------------------
    Line 566: Line 390:
    -- Protection categories
    -- Protection categories
    --------------------------------------------------------------------------------
    --------------------------------------------------------------------------------
    cfg.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,
    }
    cfg.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',
    }


    cfg.protectionCategories = {
    cfg.protectionCategories = {
    -- The key strings follow this format:
    ['all-all-office-all-all']              = 'Wikipedia Office-protected pages',
    -- type, level, ns, reason, expiry
    ['all-all-reset-all-all']                = 'Wikipedia Office-protected pages',
    ['all-all-all-all-all']                  = 'Wikipedia protected pages',
    ['all-template-all-all-edit']            = 'Wikipedia protected templates',
    ['all-all-all-office-all']              = 'Wikipedia Office-protected pages',
    ['all-all-all-autoconfirmed-edit']      = 'Wikipedia semi-protected pages',
    ['all-all-all-reset-all']                = 'Wikipedia Office-protected pages',
    ['indef-all-all-autoconfirmed-edit']    = 'Wikipedia indefinitely semi-protected pages',
    ['edit-all-template-all-all']            = 'Wikipedia protected templates',
    ['all-all-blp-autoconfirmed-edit']      = 'Wikipedia indefinitely semi-protected biographies of living people',
    ['edit-autoconfirmed-all-all-all']      = 'Wikipedia semi-protected pages',
    ['temp-all-blp-autoconfirmed-edit']      = 'Wikipedia temporarily semi-protected biographies of living people',
    ['edit-autoconfirmed-all-all-indef']    = 'Wikipedia indefinitely semi-protected pages',
    ['all-all-dispute-autoconfirmed-edit']  = 'Wikipedia pages semi-protected due to dispute',
    ['edit-autoconfirmed-all-blp-all']      = 'Wikipedia indefinitely semi-protected biographies of living people',
    ['all-all-sock-autoconfirmed-edit']      = 'Wikipedia pages semi-protected from banned users',
    ['edit-autoconfirmed-all-blp-temp']      = 'Wikipedia temporarily semi-protected biographies of living people',
    ['all-all-vandalism-autoconfirmed-edit'] = 'Wikipedia pages semi-protected against vandalism',
    ['edit-autoconfirmed-all-dispute-all']  = 'Wikipedia pages semi-protected due to dispute',
    ['all-category-all-autoconfirmed-edit']  = 'Wikipedia semi-protected categories',
    ['edit-autoconfirmed-all-sock-all']      = 'Wikipedia pages semi-protected from banned users',
    ['all-file-all-autoconfirmed-edit']      = 'Semi-protected images',
    ['edit-autoconfirmed-all-vandalism-all'] = 'Wikipedia pages semi-protected against vandalism',
    ['all-portal-all-autoconfirmed-edit']    = 'Semi-protected portals',
    ['edit-autoconfirmed-category-all-all']  = 'Wikipedia semi-protected categories',
    ['all-project-all-autoconfirmed-edit']  = 'Semi-protected project pages',
    ['edit-autoconfirmed-file-all-all']      = 'Semi-protected images',
    ['all-talk-all-autoconfirmed-edit']      = 'Semi-protected talk pages',
    ['edit-autoconfirmed-portal-all-all']    = 'Semi-protected portals',
    ['all-template-all-autoconfirmed-edit']  = 'Wikipedia semi-protected templates',
    ['edit-autoconfirmed-project-all-all']  = 'Semi-protected project pages',
    ['all-template-all-autoconfirmed-edit']  = 'Wikipedia semi-protected templates',
    ['edit-autoconfirmed-talk-all-all']      = 'Semi-protected talk pages',
    ['all-user-all-autoconfirmed-edit']      = 'Wikipedia semi-protected user and user talk pages',
    ['edit-autoconfirmed-template-all-all']  = 'Wikipedia semi-protected templates',
    ['all-all-blp-sysop-edit']              = 'Wikipedia indefinitely protected biographies of living people',
    ['edit-autoconfirmed-template-all-all']  = 'Wikipedia semi-protected templates',
    ['temp-all-blp-sysop-edit']              = 'Wikipedia temporarily protected biographies of living people',
    ['edit-autoconfirmed-user-all-all']      = 'Wikipedia semi-protected user and user talk pages',
    ['all-all-dispute-sysop-edit']          = 'Wikipedia pages protected due to dispute',
    ['edit-sysop-all-blp-all']              = 'Wikipedia indefinitely protected biographies of living people',
    ['all-all-sock-sysop-edit']              = 'Wikipedia pages protected from banned users',
    ['edit-sysop-all-blp-temp']              = 'Wikipedia temporarily protected biographies of living people',
    ['all-all-vandalism-sysop-edit']        = 'Wikipedia pages protected against vandalism',
    ['edit-sysop-all-dispute-all']          = 'Wikipedia pages protected due to dispute',
    ['all-category-all-sysop-edit']          = 'Wikipedia protected categories',
    ['edit-sysop-all-sock-all']              = 'Wikipedia pages protected from banned users',
    ['all-file-all-sysop-edit']              = 'Protected images',
    ['edit-sysop-all-vandalism-all']        = 'Wikipedia pages protected against vandalism',
    ['all-project-all-sysop-edit']          = 'Protected project pages',
    ['edit-sysop-category-all-all']          = 'Wikipedia protected categories',
    ['all-talk-all-sysop-edit']              = 'Protected talk pages',
    ['edit-sysop-file-all-all']              = 'Protected images',
    ['all-template-all-sysop-edit']          = 'Wikipedia protected templates',
    ['edit-sysop-project-all-all']          = 'Protected project pages',
    ['all-user-all-sysop-edit']              = 'Wikipedia protected user and user talk pages',
    ['edit-sysop-talk-all-all']              = 'Protected talk pages',
    ['all-all-all-sysop-move']              = 'Wikipedia move-protected pages',
    ['edit-sysop-template-all-all']          = 'Wikipedia protected templates',
    ['indef-all-all-sysop-move']            = 'Wikipedia indefinitely move-protected pages',
    ['edit-sysop-user-all-all']              = 'Wikipedia protected user and user talk pages',
    ['all-all-dispute-sysop-move']          = 'Wikipedia pages move-protected due to dispute',
    ['move-sysop-all-all-all']              = 'Wikipedia move-protected pages',
    ['all-all-vandalism-sysop-move']        = 'Wikipedia pages move-protected due to vandalism',
    ['move-sysop-all-all-indef']            = 'Wikipedia indefinitely move-protected pages',
    ['all-portal-all-sysop-move']            = 'Wikipedia move-protected portals',
    ['move-sysop-all-dispute-all']          = 'Wikipedia pages move-protected due to dispute',
    ['all-portal-all-sysop-move']            = 'Wikipedia move-protected portals',
    ['move-sysop-all-vandalism-all']        = 'Wikipedia pages move-protected due to vandalism',
    ['all-project-all-sysop-move']          = 'Wikipedia move-protected project pages',
    ['move-sysop-portal-all-all']            = 'Wikipedia move-protected portals',
    ['all-talk-all-sysop-move']              = 'Wikipedia move-protected talk pages',
    ['move-sysop-portal-all-all']            = 'Wikipedia move-protected portals',
    ['all-template-all-sysop-move']          = 'Wikipedia move-protected templates',
    ['move-sysop-project-all-all']          = 'Wikipedia move-protected project pages',
    ['all-user-all-sysop-move']              = 'Wikipedia move-protected user and user talk pages',
    ['move-sysop-talk-all-all']              = 'Wikipedia move-protected talk pages',
    ['all-all-all-autoconfirmed-autoreview'] = 'Wikipedia pending changes protected pages (level 1)',
    ['move-sysop-template-all-all']          = 'Wikipedia move-protected templates',
    ['all-all-all-reviewer-autoreview']      = 'Wikipedia pending changes protected pages (level 2)',
    ['move-sysop-user-all-all']              = 'Wikipedia move-protected user and user talk pages',
    ['autoreview-autoconfirmed-all-all-all'] = 'Wikipedia pending changes protected pages (level 1)',
    ['autoreview-reviewer-all-all-all']      = 'Wikipedia pending changes protected pages (level 2)',
    }
    }


    Line 647: Line 489:


    --------------------------------------------------------------------------------
    --------------------------------------------------------------------------------
    -- Reason text
    -- Intro blurb
    --------------------------------------------------------------------------------
     
    msg['intro-blurb-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY}'
    msg['intro-blurb-noexpiry'] = '${PROTECTIONBLURB}'
     
    --------------------------------------------------------------------------------
    -- Tooltip blurb
    --------------------------------------------------------------------------------
     
    msg['tooltip-blurb-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY}'
    msg['tooltip-blurb-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}'
     
    --------------------------------------------------------------------------------
    -- Explanation blurb
    --------------------------------------------------------------------------------
    --------------------------------------------------------------------------------


    msg['reason-text-semi'] = 'Editing of this $4 by [[Wikipedia:User access'
    msg['explanation-blurb-full-subject'] = 'See the [[Wikipedia:Protection policy|'
    .. ' levels#New users|new]] or [[Wikipedia:User access levels#Unregistered'
    .. 'protection policy]] and ${PROTECTIONLOG} for more details.'
    .. ' users|unregistered]] users is currently [[Help:Protection|disabled]]$8'
    .. ' Please discuss any changes on the ${TALKPAGE}; you'
    msg['reason-text-move'] = 'This $4 is currently [[Help:Protection|protected]]'
    .. ' may ${EDITREQUEST} to ask an'
    .. ' from [[Help:Moving a page|page moves]]$8'
    .. ' [[Wikipedia:Administrators|administrator]] to make an edit if it'
    msg['reason-text-create'] = '[[Help:Starting a new page|Recreation]] of this $4'
    .. ' is [[Help:Minor edit#When to mark an edit as a minor edit'
    .. ' [[Help:Protection|has been disabled]]$8'
    .. '|uncontroversial]] or supported by [[Wikipedia:Consensus'
    msg['reason-text-default'] = 'This $4 is currently [[Help:Protection|'
    .. '|consensus]]. You may also [[Wikipedia:Requests for'
    .. 'protected]] from editing'
    .. ' page protection#Current requests for reduction in protection level'
    .. '|request]] that this page be unprotected.'
     
    msg['explanation-blurb-full-nounprotect'] = '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]].'
     
    msg['explanation-blurb-move-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.'
     
    msg['explanation-blurb-move-talk'] = '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.'
     
    msg['explanation-blurb-create-xfd'] = 'See the [[Wikipedia:Protection policy|'
    .. 'protection policy]] and ${PROTECTIONLOG} for more details.'
    .. ' Please see the ${DELETIONDISCUSSION}'
    .. ' or the ${PROTECTIONLOG} for'
    .. ' details of why this page was deleted. If you would like to create a page'
    .. ' at this title, you must first'
    .. ' [[Wikipedia:Requests for page protection|request]] for it to be'
    .. ' unprotected, or contact the administrator who deleted the page for the'
    .. ' deleted material to be restored. If unsuccessful, you can use'
    .. ' [[Wikipedia:Deletion review|deletion review]].'
     
    msg['explanation-blurb-create-noxfd'] = 'See the [[Wikipedia:Protection policy|'
    .. 'protection policy]] and ${PROTECTIONLOG} for more details.'
    .. ' Please see the ${PROTECTIONLOG}'
    .. ' for details of why this page was deleted. If you would like to create a page'
    .. ' at this title, you must first'
    .. ' [[Wikipedia:Requests for page protection|request]] for it to be'
    .. ' unprotected, or contact the administrator who deleted the page for the'
    .. ' deleted material to be restored. If unsuccessful, you can use'
    .. ' [[Wikipedia:Deletion review|deletion review]].'
     
    msg['explanation-blurb-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.'


    --------------------------------------------------------------------------------
    --------------------------------------------------------------------------------
    -- Explanation text
    -- Dispute blurb
    --------------------------------------------------------------------------------
    --------------------------------------------------------------------------------


    msg['dispute-blurb-expiry'] = '${INTROBLURB} or until editing ${DISPUTESECTION} have been resolved.'
    msg['dispute-blurb-noexpiry'] = '${INTROBLURB} until editing ${DISPUTESECTION} have been resolved.'
    msg['dispute-section-link-display'] = 'disputes'
    msg['dispute-section-link-display'] = 'disputes'


    msg['dispute-move-link-display'] = 'current title'
    --------------------------------------------------------------------------------
    msg['dispute-edit-link-display'] = 'current version'
    -- Protection log links
    --------------------------------------------------------------------------------
     
    msg['protection-log-display'] = 'protection log'
    msg['pc-log-display'] = 'pending changes log'
     
    --------------------------------------------------------------------------------
    -- Current version messages
    --------------------------------------------------------------------------------


    msg['more-details-pc-log-display'] = 'pending changes log'
    msg['current-version-move-display'] = 'current title'
    msg['more-details-protection-log-display'] = 'protection log'
    msg['current-version-edit-display'] = 'current version'
     
    --------------------------------------------------------------------------------
    -- Explanation text
    --------------------------------------------------------------------------------


    msg['talk-page-link-display'] = 'talk page'
    msg['talk-page-link-display'] = 'talk page'
    Line 677: Line 602:


    msg['semi-subject-page-links'] = ' $12, discuss changes on the $11,'
    msg['semi-subject-page-links'] = ' $12, discuss changes on the $11,'
    --------------------------------------------------------------------------------
    -- Deletion blurb
    --------------------------------------------------------------------------------


    msg['deletion-discussion-link-display'] = 'deletion discussion'
    msg['deletion-discussion-link-display'] = 'deletion discussion'
    msg['deletion-log-link-display'] = 'deletion log'
    msg['deletion-log-link-display'] = 'deletion log'
    msg['deletion-discussion-blurb-xfd'] = 'Please see the $16 or the $17 for'
    .. ' details of why this page was deleted.'
    msg['deletion-discussion-blurb-noxfd'] = 'Please see the $17 for'
    .. ' details of why this page was deleted.'


    --------------------------------------------------------------------------------
    --------------------------------------------------------------------------------

    Revision as of 14:04, 25 June 2014

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

    -- This module provides configuration data for [[Module:Protection banner]].
    
    local cfg = {}
    
    --------------------------------------------------------------------------------
    --                                BANNER DATA
    --------------------------------------------------------------------------------
    
    --[[
    -- The following banner data fields are available:
    -- text, explanation, tooltip, alt, image, category
    --
    -- When the module is asked to retrieve one of these data fields, it looks in
    -- the cfg.bannerData table. It uses five properties in its search:
    -- 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")
    -- 
    -- For each data field, the module will check to see if the field exists in the
    -- table with the key corresponding 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".
    --
    -- This makes it possible to specify fine-grained distinctions in banner text.
    -- For example, data defined for the key "all-user-vandalism-all-edit" can be
    -- used for user pages that are protected either temporarily or permanently,
    -- and either fully protected or semi-protected, but it won't be used for
    -- articles or for pages protected against sockpuppetry.
    --
    -- Note that the fields don't have to be in the same table. A given banner
    -- might use text from "temp-user-vandalism-autoconfirmed-edit" but a
    -- category from "all-all-vandalism-all-edit".
    --
    -- 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.
    --
    --
    --                             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".
    --
    -- ${DELETIONDISCUSSION} - a link to the deletion discussion, if a link
    -- to it was specified.
    --
    -- ${DISPUTEBLURB} - a blurb about editing disputes, using the INTROBLURB
    -- parameter and the DISPUTESECTION parameter. E.g. "This page is protected
    -- from editing until disputes have been resolved."
    --
    -- ${DISPUTESECTION} - if a section link is passed to the module, this is
    -- a link to that section with the display message
    -- "dispute-section-link-display". Otherwise it is just the display
    -- message with no link.
    --
    -- ${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."
    --
    -- ${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"
    --
    -- ${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"
    --
    -- ${PROTECTIONDATEBLURB} - a blurb explaining when the page was protected, e.g.
    -- "It was protected 
    --
    -- ${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".
    --]]
    
    
    --------------------------------------------------------------------------------
    -- 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.
    
    -- All banner config messages can use the following parameters:
    
    -- $1 = Intro blurb, e.g. "This page is currently
    --      [[Help:Protection|protected]] from editing"
    -- $2 = "until" or "or until" depending on the expiry
    -- $3 = "disputes", with or without a section link
    -- $4 = the type of the page, e.g. "article", "template", or "page"
    -- $5 = the protection date
    -- $6 = {{vandal-m|username}} replacement
    -- $7 = protection level/type blurb, e.g. "create-protected" or "fully protected"
    -- $8 = the expiry - " until DD Month YYYY". If protection is indefinite, this is the blank string.
    -- $9 = A link to the page history or the move log, with display
    --       msg['dispute-edit-link-display'] or msg['dispute-move-link-display']
    -- $10 = A link to the protection log or the pending changes log, with display
    --       msg['more-details-protection-log-display'] or msg['more-details-pc-log-display']
    -- $11 = Talk page link
    -- $12 = Edit request link
    -- $13 = Request unprotection blurb
    -- $14 = Adds links to edit requests and the talk page if we are on a subject page
    -- $15 = Deletion links blurb
    -- $16 = Deletion discussion link
    -- $17 = Deletion log link
    -- $18 = The explanation text, based on the protection action and level.
    
    cfg.defaultBanner = {
    	text = '${INTROBLURB}.',
    	explanation = '${EXPLANATIONBLURB}',
    	tooltip = '${TOOLTIPBLURB}.',
    	alt = 'Page ${PROTECTIONLEVEL}'
    }
    
    --------------------------------------------------------------------------------
    -- Banner config
    --------------------------------------------------------------------------------
    
    cfg.banners = {
    	edit = {},
    	move = {},
    	create = {},
    	autoreview = {}
    }
    
    cfg.banners.edit.blp = {
    	text = '${INTROBLURB} 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',
    	categoryOrder = 'reason',
    }
    
    cfg.banners.edit.dispute = {
    	text = '${DISPUTEBLURB}',
    	explanation = "This protection is '''not''' an endorsement of the"
    		.. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}',
    	tooltip = 'due to editing disputes',
    	categoryOrder = 'reason',
    }
    
    cfg.banners.edit.template = {
    	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}',
    }
    
    cfg.banners.edit.office = {
    	text = 'This ${PAGETYPE} is currently under the scrutiny of the'
    		.. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]'
    		.. ' and is protected. It has been protected since $5.',
    	explanation = "If you can edit this page, please discuss all changes and"
    		.. " additions on the $11 first. '''Do not remove protection from this"
    		.. " page unless you are authorized by the Wikimedia Foundation to do"
    		.. " so.'''",
    	image = 'Padlock-black.svg',
    	categoryOrder = 'reason',
    }
    
    cfg.banners.edit.reset = {
    	text = 'On $5 this article was 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 article has been placed under a level of'
    		.. ' semi-protection temporarily during the rebuilding of this'
    		.. ' article.\n\nAny insertion of material directly from'
    		.. ' pre-protection revisions of the article will be removed, as'
    		.. ' will any material added to the article that is not properly'
    		.. ' sourced. The associated talk page(s) were also cleared on the'
    		.. " same date.\n\n'''Administrators may not override this action"
    		.. ' without approval from someone from the [[WP:OFFICE|Office]].'
    		.. " No editor may remove this notice.'''",
    	explanation = "If you can edit this page, please discuss all changes and"
    		.. " additions on the $11 first. '''Do not remove protection from this"
    		.. " page unless you are authorized by the Wikimedia Foundation to do"
    		.. " so.'''",
    	image = 'Padlock-black.svg',
    	categoryOrder = 'reason',
    }
    
    cfg.banners.edit.sock = {
    	text = '${INTROBLURB} 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',
    	categoryOrder = 'reason',
    }
    
    cfg.banners.edit.usertalk = {
    	text = '${INTROBLURB} to prevent $6 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'
    		.. ' [[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]].',
    	categoryReason = 'all',
    }
    
    cfg.banners.edit.vandalism = {
    	text = '${INTROBLURB} due to [[Wikipedia:Vandalism|vandalism]]',
    	tooltip = '${TOOLTIPBLURB} due to vandalism',
    	categoryOrder = 'namespace',
    }
    
    cfg.banners.move.dispute = {
    	explanation = "This protection is '''not''' an endorsement of the $9",
    	image = 'Padlock-olive.svg'
    }
    
    cfg.banners.move.vandalism = {
    }
    
    cfg.banners.create = {
    	image = 'Padlock-skyblue.svg'
    }
    
    cfg.banners.autoreview.autoconfirmed = {
    	text = '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]]$8',
    	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'
    }
    
    cfg.banners.autoreview.default = {
    	text = '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]]$8',
    	alt = 'Page protected with pending changes level 2',
    	tooltip = 'All edits by users who are not reviewers or administrators are'
    		.. ' subject to review',
    	image = 'Padlock-orange.svg'
    }
    
    --------------------------------------------------------------------------------
    -- Protection blurbs
    --------------------------------------------------------------------------------
    
    cfg.protectionBlurbs = {
    	edit = {},
    	move = {},
    	create = {},
    	autoreview = {}
    }
    
    cfg.protectionBlurbs.edit.default = 'This ${PAGETYPE} is currently [[Help:Protection|'
    	.. 'protected]] from editing'
    
    cfg.protectionBlurbs.edit.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]]'
    
    cfg.protectionBlurbs.move.default = 'This ${PAGETYPE} is currently [[Help:Protection|protected]]'
    	.. ' from [[Help:Moving a page|page moves]]'
    
    cfg.protectionBlurbs.create.default = '[[Help:Starting a new page|Recreation]] of this ${PAGETYPE}'
    	.. ' [[Help:Protection|has been disabled]]'
    
    cfg.protectionBlurbs.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]]'
    
    cfg.protectionBlurbs.autoreview.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]]'
    
    --------------------------------------------------------------------------------
    -- Images
    --------------------------------------------------------------------------------
    
    cfg.images = {
    	edit = {},
    	move = {},
    	create = {},
    	autoreview = {}
    }
    
    cfg.images.edit.sysop = 'Padlock.svg'
    cfg.images.edit.templateeditor = 'Padlock-pink.svg'
    cfg.images.edit.autoconfirmed = 'Padlock-silver.svg'
    cfg.images.move.sysop = 'Padlock-olive.svg'
    cfg.images.move.templateeditor = 'Padlock-olive.svg'
    cfg.images.create.default = 'Padlock-skyblue.svg'
    cfg.images.autoreview.autoconfirmed = 'Padlock-silver-light.svg'
    cfg.images.autoreview.reviewer = 'Padlock-orange.svg'
    
    --------------------------------------------------------------------------------
    -- Protection categories
    --------------------------------------------------------------------------------
    
    cfg.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,
    }
    
    cfg.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',
    }
    
    cfg.protectionCategories = {
    	['all-all-office-all-all']               = 'Wikipedia Office-protected pages',
    	['all-all-reset-all-all']                = 'Wikipedia Office-protected pages',
    	['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)',
    }
    
    --------------------------------------------------------------------------------
    -- Pagetypes
    --------------------------------------------------------------------------------
    
    cfg.pagetypes = {
    	[0] = 'article',
    	[6] = 'file',
    	[10] = 'template',
    	[14] = 'category',
    	[828] = 'module',
    	default = 'page'
    }
    
    --------------------------------------------------------------------------------
    -- Strings marking indefinite protection
    --------------------------------------------------------------------------------
    
    cfg.indefStrings = {
    	['indef'] = true,
    	['indefinite'] = true,
    	['indefinitely'] = true,
    	['infinite'] = true,
    }
    
    --------------------------------------------------------------------------------
    -- 
    --                                 Messages
    -- 
    --------------------------------------------------------------------------------
    
    local msg = {}
    
    --------------------------------------------------------------------------------
    -- Intro blurb
    --------------------------------------------------------------------------------
    
    msg['intro-blurb-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY}'
    msg['intro-blurb-noexpiry'] = '${PROTECTIONBLURB}'
    
    --------------------------------------------------------------------------------
    -- Tooltip blurb
    --------------------------------------------------------------------------------
    
    msg['tooltip-blurb-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY}'
    msg['tooltip-blurb-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}'
    
    --------------------------------------------------------------------------------
    -- Explanation blurb
    --------------------------------------------------------------------------------
    
    msg['explanation-blurb-full-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.'
    
    msg['explanation-blurb-full-nounprotect'] = '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]].'
    
    msg['explanation-blurb-move-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.'
    
    msg['explanation-blurb-move-talk'] = '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.'
    
    msg['explanation-blurb-create-xfd'] = 'See the [[Wikipedia:Protection policy|'
    	.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
    	.. ' Please see the ${DELETIONDISCUSSION}'
    	.. ' or the ${PROTECTIONLOG} for'
    	.. ' details of why this page was deleted. If you would like to create a page'
    	.. ' at this title, you must first'
    	.. ' [[Wikipedia:Requests for page protection|request]] for it to be'
    	.. ' unprotected, or contact the administrator who deleted the page for the'
    	.. ' deleted material to be restored. If unsuccessful, you can use'
    	.. ' [[Wikipedia:Deletion review|deletion review]].'
    
    msg['explanation-blurb-create-noxfd'] = 'See the [[Wikipedia:Protection policy|'
    	.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
    	.. ' Please see the ${PROTECTIONLOG}'
    	.. ' for details of why this page was deleted. If you would like to create a page'
    	.. ' at this title, you must first'
    	.. ' [[Wikipedia:Requests for page protection|request]] for it to be'
    	.. ' unprotected, or contact the administrator who deleted the page for the'
    	.. ' deleted material to be restored. If unsuccessful, you can use'
    	.. ' [[Wikipedia:Deletion review|deletion review]].'
    
    msg['explanation-blurb-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.'
    
    --------------------------------------------------------------------------------
    -- Dispute blurb
    --------------------------------------------------------------------------------
    
    msg['dispute-blurb-expiry'] = '${INTROBLURB} or until editing ${DISPUTESECTION} have been resolved.'
    msg['dispute-blurb-noexpiry'] = '${INTROBLURB} until editing ${DISPUTESECTION} have been resolved.'
    msg['dispute-section-link-display'] = 'disputes'
    
    --------------------------------------------------------------------------------
    -- Protection log links
    --------------------------------------------------------------------------------
    
    msg['protection-log-display'] = 'protection log'
    msg['pc-log-display'] = 'pending changes log'
    
    --------------------------------------------------------------------------------
    -- Current version messages
    --------------------------------------------------------------------------------
    
    msg['current-version-move-display'] = 'current title'
    msg['current-version-edit-display'] = 'current version'
    
    --------------------------------------------------------------------------------
    -- Explanation text
    --------------------------------------------------------------------------------
    
    msg['talk-page-link-display'] = 'talk page'
    msg['edit-request-full-display'] = 'submit a request'
    msg['edit-request-semi-display'] = 'request an edit'
    
    msg['semi-subject-page-links'] = ' $12, discuss changes on the $11,'
    
    --------------------------------------------------------------------------------
    -- Deletion blurb
    --------------------------------------------------------------------------------
    
    msg['deletion-discussion-link-display'] = 'deletion discussion'
    msg['deletion-log-link-display'] = 'deletion log'
    
    --------------------------------------------------------------------------------
    -- Tracking categories
    --------------------------------------------------------------------------------
    
    msg['tracking-category-incorrect'] = 'Wikipedia pages with incorrect protection templates'
    msg['tracking-category-expiry'] = 'Wikipedia protected pages without expiry'
    msg['tracking-category-create'] = 'Wikipedia pages tagged as create-protected'
    msg['tracking-category-template'] = 'Wikipedia template-protected pages other than templates and modules'
    
    --------------------------------------------------------------------------------
    -- Protection levels
    --------------------------------------------------------------------------------
    
    msg['protection-level-full'] = 'fully protected'
    msg['protection-level-template'] = 'template-protected'
    msg['protection-level-semi'] = 'semi-protected'
    msg['protection-level-move'] = 'move-protected'
    msg['protection-level-create'] = 'creation-protected'
    msg['protection-level-default'] = 'protected'
    
    --------------------------------------------------------------------------------
    -- Images
    --------------------------------------------------------------------------------
    
    -- These are images that are not defined by their protection action and protection level.
    
    msg['image-filename-indef'] = 'Padlock-red.svg'
    msg['image-filename-default'] = 'Transparent.gif'
    
    --------------------------------------------------------------------------------
    -- End configuration
    --------------------------------------------------------------------------------
    
    return {
    	cfg = cfg,
    	msg = msg
    }