Module:Protection banner: Difference between revisions
Jump to navigation
Jump to search
add missing parameter methods, add a Blurb:_getExpandedMessage method, and (hopefully) finish updating the various functions to work with the new config structure
>Mr. Stradivarius (sort parameter methods into alphabetical order, and remove the ones that are no longer needed) |
>Mr. Stradivarius (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 |