Module:Protection banner: Difference between revisions
add missing parameter methods, add a Blurb:_getExpandedMessage method, and (hopefully) finish updating the various functions to work with the new config structure
(sort parameter methods into alphabetical order, and remove the ones that are no longer needed) |
(add missing parameter methods, add a Blurb:_getExpandedMessage method, and (hopefully) finish updating the various functions to work with the new config structure) |
||
Line 214: | Line 214: | ||
-- Private methods -- | -- Private methods -- | ||
function Blurb:_getExpandedMessage(msg) | |||
local msg = self._configObj:getMessage(msg) | |||
return self:_substituteParameters(msg) | |||
end | |||
function Blurb:_substituteParameters(msg) | function Blurb:_substituteParameters(msg) | ||
Line 232: | Line 237: | ||
parameterFuncs.CURRENTVERSION = self._makeCurrentVersionParameter | parameterFuncs.CURRENTVERSION = self._makeCurrentVersionParameter | ||
parameterFuncs.DELETIONDISCUSSION = self._makeDeletionDiscussionParameter | parameterFuncs.DELETIONDISCUSSION = self._makeDeletionDiscussionParameter | ||
parameterFuncs.DISPUTEBLURB = self._makeDisputeBlurbParameter | |||
parameterFuncs.DISPUTESECTION = self._makeDisputeSectionParameter | parameterFuncs.DISPUTESECTION = self._makeDisputeSectionParameter | ||
parameterFuncs.EDITREQUEST = self._makeEditRequestParameter | parameterFuncs.EDITREQUEST = self._makeEditRequestParameter | ||
Line 237: | Line 243: | ||
parameterFuncs.EXPLANATIONBLURB = self._makeExplanationBlurbParameter | parameterFuncs.EXPLANATIONBLURB = self._makeExplanationBlurbParameter | ||
parameterFuncs.INTROBLURB = self._makeIntroBlurbParameter | parameterFuncs.INTROBLURB = self._makeIntroBlurbParameter | ||
parameterFuncs.OFFICEBLURB = self._makeOfficeBlurbParameter | |||
parameterFuncs.PAGETYPE = self._makePagetypeParameter | parameterFuncs.PAGETYPE = self._makePagetypeParameter | ||
parameterFuncs.PROTECTIONBLURB = self._makeProtectionBlurbParameter | |||
parameterFuncs.PROTECTIONDATE = self._makeProtectionDateParameter | parameterFuncs.PROTECTIONDATE = self._makeProtectionDateParameter | ||
parameterFuncs.PROTECTIONLEVEL = self._makeProtectionLevelParameter | parameterFuncs.PROTECTIONLEVEL = self._makeProtectionLevelParameter | ||
parameterFuncs.PROTECTIONLOG = self._makeProtectionLogParameter | parameterFuncs.PROTECTIONLOG = self._makeProtectionLogParameter | ||
parameterFuncs.RESETBLURB = self._makeResetBlurbParameter | |||
parameterFuncs.TALKPAGE = self._makeTalkPageParameter | parameterFuncs.TALKPAGE = self._makeTalkPageParameter | ||
parameterFuncs.TOOLTIPBLURB = self._makeTooltipBlurbParameter | |||
parameterFuncs.VANDAL = self._makeVandalTemplateParameter | parameterFuncs.VANDAL = self._makeVandalTemplateParameter | ||
Line 261: | Line 271: | ||
'Special:Log', | 'Special:Log', | ||
{type = 'move', page = pagename}, | {type = 'move', page = pagename}, | ||
self | self:_getExpandedMessage('current-version-move-display') | ||
) | ) | ||
else | else | ||
Line 268: | Line 278: | ||
pagename, | pagename, | ||
{action = 'history'}, | {action = 'history'}, | ||
self | self:_getExpandedMessage('current-version-edit-display') | ||
) | ) | ||
end | end | ||
Line 276: | Line 286: | ||
local deletionDiscussionPage = self._deletionDiscussionPage | local deletionDiscussionPage = self._deletionDiscussionPage | ||
if deletionDiscussionPage then | if deletionDiscussionPage then | ||
local display = self | local display = self:_getExpandedMessage('deletion-discussion-link-display') | ||
return string.format('[[%s|%s]]', deletionDiscussionPage, display) | return string.format('[[%s|%s]]', deletionDiscussionPage, display) | ||
end | |||
end | |||
function Blurb:_makeDisputeBlurbParameter() | |||
local expiry = self._protectionStatusObj:getExpiry() | |||
if type(expiry) == 'number' then | |||
return self:_getExpandedMessage('dispute-blurb-expiry') | |||
else | |||
return self:_getExpandedMessage('dispute-blurb-noexpiry') | |||
end | end | ||
end | end | ||
Line 284: | Line 303: | ||
-- "disputes", with or without a section link | -- "disputes", with or without a section link | ||
local section = self._section | local section = self._section | ||
local disputes = self | local disputes = self:_getExpandedMessage('dispute-section-link-display') | ||
if section then | if section then | ||
return string.format( | return string.format( | ||
Line 310: | Line 329: | ||
key = 'edit-request-full-display' | key = 'edit-request-full-display' | ||
end | end | ||
local display = self | local display = self:_getExpandedMessage(key) | ||
-- Get the edit request type. | -- Get the edit request type. | ||
Line 331: | Line 350: | ||
return nil | return nil | ||
elseif type(expiry) == 'number' then | elseif type(expiry) == 'number' then | ||
return Blurb.formatDate(expiry) | |||
elseif expiry then | elseif expiry then | ||
-- Expiry is an error string. | -- Expiry is an error string. | ||
Line 342: | Line 360: | ||
local action = self._protectionStatusObj:getAction() | local action = self._protectionStatusObj:getAction() | ||
local level = self._protectionStatusObj:getLevel() | local level = self._protectionStatusObj:getLevel() | ||
local namespace = self._titleObj.namespace | |||
local isTalk = self._titleObj.isTalkPage | |||
-- @TODO: add semi-protection and pending changes blurbs | |||
local key | local key | ||
if action == 'edit' and level == ' | if namespace == 8 then | ||
key = 'explanation- | -- MediaWiki namespace | ||
key = 'explanation-blurb-full-nounprotect' | |||
elseif action == 'edit' and level == 'sysop' and not isTalk then | |||
key = 'explanation-blurb-full-subject' | |||
elseif action == 'move' then | elseif action == 'move' then | ||
key = 'explanation- | if isTalk then | ||
key = 'explanation-blurb-move-talk' | |||
else | |||
key = 'explanation-blurb-move-subject' | |||
end | |||
elseif action == 'create' then | elseif action == 'create' then | ||
key = 'explanation- | local xfd = self._deletionDiscussion | ||
if xfd then | |||
key = 'explanation-blurb-create-xfd' | |||
else | |||
key = 'explanation-blurb-create-noxfd' | |||
end | |||
else | else | ||
key = 'explanation- | key = 'explanation-blurb-default' | ||
end | end | ||
return self:_getExpandedMessage(key) | |||
end | end | ||
function Blurb:_makeIntroBlurbParameter() | function Blurb:_makeIntroBlurbParameter() | ||
local | local expiry = self._protectionStatusObj:getExpiry() | ||
if type(expiry) == 'number' then | |||
return self:_getExpandedMessage('intro-blurb-expiry') | |||
else | |||
return self:_getExpandedMessage('intro-blurb-noexpiry') | |||
end | |||
end | |||
function Blurb:_makeOfficeBlurbParameter() | |||
local protectionDate = self._protectionStatusObj:getProtectionDate() | |||
if protectionDate then | |||
return self:_getExpandedMessage('office-blurb-protectiondate') | |||
else | else | ||
return self:_getExpandedMessage('office-blurb-noprotectiondate') | |||
end | end | ||
end | end | ||
function Blurb:_makePagetypeParameter() | function Blurb:_makePagetypeParameter() | ||
local pagetypes = self._configObj:getConfigTable(' | local pagetypes = self._configObj:getConfigTable('pagetypes') | ||
local namespace = self._titleObj.namespace | local namespace = self._titleObj.namespace | ||
return pagetypes[namespace] or pagetypes.default or ' | return pagetypes[namespace] or pagetypes.default or error('no default pagetype defined') | ||
end | |||
function Blurb:_makeProtectionBlurbParameter() | |||
local protectionBlurbs = self._configObj:getConfigTable('protectionBlurbs') | |||
local action = self._protectionStatusObj:getAction() | |||
local level = self._protectionStatusObj:getLevel() | |||
local msg | |||
if protectionBlurbs[action][level] then | |||
msg = protectionBlurbs[action][level] | |||
elseif protectionBlurbs[action].default then | |||
msg = protectionBlurbs[action].default | |||
elseif protectionBlurbs.edit.default then | |||
msg = protectionBlurbs.edit.default | |||
else | |||
error('no protection blurb defined for cfg.protectionBlurbs.edit.default') | |||
end | |||
return self:_substituteParameters(msg) | |||
end | end | ||
Line 389: | Line 440: | ||
function Blurb:_makeProtectionLevelParameter() | function Blurb:_makeProtectionLevelParameter() | ||
local protectionLevels = self._configObj:getConfigTable('protectionLevels') | |||
local action = self._protectionStatusObj:getAction() | local action = self._protectionStatusObj:getAction() | ||
local level = self._protectionStatusObj:getLevel() | local level = self._protectionStatusObj:getLevel() | ||
local | local msg | ||
if action | if protectionLevels[action][level] then | ||
msg = protectionLevels[action][level] | |||
elseif protectionLevels[action].default then | |||
msg = protectionLevels[action].default | |||
elseif protectionLevels.edit.default then | |||
msg = protectionLevels.edit.default | |||
elseif action | |||
elseif | |||
else | else | ||
error('no protection level defined for cfg.protectionLevels.edit.default') | |||
end | end | ||
return self | return self:_substituteParameters(msg) | ||
end | end | ||
Line 418: | Line 464: | ||
'Special:Log', | 'Special:Log', | ||
{type = 'stable', page = pagename}, | {type = 'stable', page = pagename}, | ||
self | self:_getExpandedMessage('pc-log-display') | ||
) | ) | ||
else | else | ||
Line 425: | Line 471: | ||
'Special:Log', | 'Special:Log', | ||
{type = 'protect', page = pagename}, | {type = 'protect', page = pagename}, | ||
self | self:_getExpandedMessage('protection-log-display') | ||
) | ) | ||
end | |||
end | |||
function Blurb:_makeResetBlurbParameter() | |||
local protectionDate = self._protectionStatusObj:getProtectionDate() | |||
if protectionDate then | |||
return self:_getExpandedMessage('reset-blurb-protectiondate') | |||
else | |||
return self:_getExpandedMessage('reset-blurb-noprotectiondate') | |||
end | end | ||
end | end | ||
Line 432: | Line 487: | ||
function Blurb:_makeTalkPageParameter() | function Blurb:_makeTalkPageParameter() | ||
local section = self._section | local section = self._section | ||
local display = self | local display = self:_getExpandedMessage('talk-page-link-display') | ||
return string.format( | |||
'[[%s:%s#%s|%s]]', | '[[%s:%s#%s|%s]]', | ||
mw.site.namespaces[self._titleObj.namespace].talk.name, | mw.site.namespaces[self._titleObj.namespace].talk.name, | ||
Line 440: | Line 495: | ||
display | display | ||
) | ) | ||
end | |||
function Blurb:_makeTooltipBlurbParameter() | |||
local expiry = self._protectionStatusObj:getExpiry() | |||
if type(expiry) == 'number' then | |||
return self:_getExpandedMessage('tooltip-blurb-expiry') | |||
else | |||
return self:_getExpandedMessage('tooltip-blurb-noexpiry') | |||
end | |||
end | end | ||
Line 446: | Line 510: | ||
local username = self._username | local username = self._username | ||
username = username or self._titleObj.baseText | username = username or self._titleObj.baseText | ||
return mVandalM. | return mVandalM._main{username} | ||
end | end | ||
Line 677: | Line 741: | ||
local titleObj = self._titleObj | local titleObj = self._titleObj | ||
-- Get the namespace category key | -- Get the expiry. | ||
local expiry = protectionStatusObj:getExpiry() | |||
if type(expiry) == 'number' then | |||
expiry = 'temp' | |||
elseif expiry ~= 'indef' then | |||
expiry = nil | |||
end | |||
-- Get the namespace category key. | |||
local nskey | local nskey | ||
do | do | ||
local namespace = titleObj.namespace | local namespace = titleObj.namespace | ||
local categoryNamespaces = configObj:getConfigTable(' | local categoryNamespaces = configObj:getConfigTable('categoryNamespaceKeys') | ||
nskey = categoryNamespaces[namespace] | nskey = categoryNamespaces[namespace] | ||
if not nskey and namespace % 2 == 1 then | if not nskey and namespace % 2 == 1 then | ||
Line 687: | Line 759: | ||
end | end | ||
end | end | ||
-- Get the other inputs. | |||
local reason = protectionStatusObj:getReason() | |||
local action = protectionStatusObj:getAction() | |||
local level = protectionStatusObj:getLevel() | |||
--[[ | --[[ | ||
Line 694: | Line 771: | ||
--]] | --]] | ||
local properties = { | local properties = { | ||
expiry = {order = 1, val = | expiry = {order = 1, val = expiry}, | ||
namespace = {order = 2, val = nskey}, | namespace = {order = 2, val = nskey}, | ||
reason = {order = 3, val = | reason = {order = 3, val = reason}, | ||
level = {order = 4, val = | level = {order = 4, val = level}, | ||
action = {order = 5, val = | action = {order = 5, val = action} | ||
} | } | ||
Line 711: | Line 788: | ||
local configOrder = {} | local configOrder = {} | ||
do | do | ||
local | local reasonsWithNamespacePriority = configObj:getConfigTable('reasonsWithNamespacePriority') | ||
local | local namespaceFirst = reason and reasonsWithNamespacePriority[reason] or false | ||
for propertiesKey, t in pairs(properties) do | for propertiesKey, t in pairs(properties) do | ||
configOrder[t.order] = t | configOrder[t.order] = t | ||
end | end | ||
if | if namespaceFirst then | ||
-- Swap namespace and reason around. | |||
local namespaceTable = table.remove(configOrder, 2) | |||
table.insert(configOrder, 3, namespaceTable) | |||
table.insert(configOrder, | |||
end | end | ||
end | end | ||
Line 787: | Line 857: | ||
-- pos field in the property table. | -- pos field in the property table. | ||
--]] | --]] | ||
local cats = configObj:getConfigTable(' | local cats = configObj:getConfigTable('protectionCategories') | ||
local cat | local cat | ||
for i = 1, 2^noActive do | for i = 1, 2^noActive do |