Module:Protection banner: Difference between revisions

Content deleted Content added
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:
 
-- Private methods --
 
function Blurb:_getExpandedMessage(msg)
local msg = self._configObj:getMessage(msg)
return self:_substituteParameters(msg)
end
 
function Blurb:_substituteParameters(msg)
Line 232 ⟶ 237:
parameterFuncs.CURRENTVERSION = self._makeCurrentVersionParameter
parameterFuncs.DELETIONDISCUSSION = self._makeDeletionDiscussionParameter
parameterFuncs.DISPUTEBLURB = self._makeDisputeBlurbParameter
parameterFuncs.DISPUTESECTION = self._makeDisputeSectionParameter
parameterFuncs.EDITREQUEST = self._makeEditRequestParameter
Line 237 ⟶ 243:
parameterFuncs.EXPLANATIONBLURB = self._makeExplanationBlurbParameter
parameterFuncs.INTROBLURB = self._makeIntroBlurbParameter
parameterFuncs.OFFICEBLURB = self._makeOfficeBlurbParameter
parameterFuncs.PAGETYPE = self._makePagetypeParameter
parameterFuncs.PROTECTIONBLURB = self._makeProtectionBlurbParameter
parameterFuncs.PROTECTIONDATE = self._makeProtectionDateParameter
parameterFuncs.PROTECTIONLEVEL = self._makeProtectionLevelParameter
parameterFuncs.PROTECTIONLOG = self._makeProtectionLogParameter
parameterFuncs.RESETBLURB = self._makeResetBlurbParameter
parameterFuncs.TALKPAGE = self._makeTalkPageParameter
parameterFuncs.TOOLTIPBLURB = self._makeTooltipBlurbParameter
parameterFuncs.VANDAL = self._makeVandalTemplateParameter
Line 261 ⟶ 271:
'Special:Log',
{type = 'move', page = pagename},
self._configObj:getMessage_getExpandedMessage('disputecurrent-moveversion-linkmove-display')
)
else
Line 268 ⟶ 278:
pagename,
{action = 'history'},
self._configObj:getMessage_getExpandedMessage('disputecurrent-editversion-linkedit-display')
)
end
Line 276 ⟶ 286:
local deletionDiscussionPage = self._deletionDiscussionPage
if deletionDiscussionPage then
local display = self._configObj:getMessage_getExpandedMessage('deletion-discussion-link-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
Line 284 ⟶ 303:
-- "disputes", with or without a section link
local section = self._section
local disputes = self.configObj:getMessage_getExpandedMessage('dispute-section-link-display')
if section then
return string.format(
Line 310 ⟶ 329:
key = 'edit-request-full-display'
end
local display = self._configObj:getMessage_getExpandedMessage(key)
-- Get the edit request type.
Line 331 ⟶ 350:
return nil
elseif type(expiry) == 'number' then
local formatted =return Blurb.formatDate(expiry)
return ' until ' .. formatted
elseif expiry then
-- Expiry is an error string.
Line 342 ⟶ 360:
local action = self._protectionStatusObj:getAction()
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
if actionnamespace == 'edit' and level == 'autoconfirmed'8 then
-- MediaWiki namespace
key = 'explanation-text-semi'
key = 'explanation-blurb-full-nounprotect'
elseif action == 'edit' and level == 'sysop' and not isTalk then
key = 'explanation-blurb-full-subject'
elseif action == 'move' then
if isTalk then
key = 'explanation-text-move'
key = 'explanation-blurb-move-talk'
else
key = 'explanation-blurb-move-subject'
end
elseif action == 'create' then
local xfd = self._deletionDiscussion
key = 'explanation-text-create'
if xfd then
key = 'explanation-blurb-create-xfd'
else
key = 'explanation-blurb-create-noxfd'
end
else
key = 'explanation-textblurb-default'
end
local msg =return self._configObj:getMessage_getExpandedMessage(key)
return self:_substituteParameters(msg)
end
 
function Blurb:_makeIntroBlurbParameter()
local expiry = self._protectionStatusObj:getExpiry()
local key
if type(expiry) == 'number' then
local action = self._protectionStatusObj:getAction()
return self:_getExpandedMessage('intro-blurb-expiry')
local level = self._protectionStatusObj:getLevel()
if action == 'edit' and level == 'autoconfirmed' then
key = 'reason-text-semi'
elseif action == 'move' then
key = 'reason-text-move'
elseif action == 'create' then
key = 'reason-text-create'
else
return self:_getExpandedMessage('intro-blurb-noexpiry')
key = 'reason-text-default'
end
end
 
function Blurb:_makeOfficeBlurbParameter()
local protectionDate = self._protectionStatusObj:getProtectionDate()
if protectionDate then
return self:_getExpandedMessage('office-blurb-protectiondate')
else
return self:_getExpandedMessage('office-blurb-noprotectiondate')
end
local msg = self._configObj:getMessage(key)
return self:_substituteParameters(msg)
end
 
function Blurb:_makePagetypeParameter()
local pagetypes = self._configObj:getConfigTable('bannerPagetypespagetypes')
local namespace = self._titleObj.namespace
return pagetypes[namespace] or pagetypes.default or error('pageno 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
 
Line 389 ⟶ 440:
 
function Blurb:_makeProtectionLevelParameter()
local protectionLevels = self._configObj:getConfigTable('protectionLevels')
local action = self._protectionStatusObj:getAction()
local level = self._protectionStatusObj:getLevel()
local keymsg
if protectionLevels[action == 'edit'][level] then
msg = protectionLevels[action][level]
if level == 'sysop' then
elseif protectionLevels[action].default then
key = 'protection-level-full'
msg = protectionLevels[action].default
elseif level == 'templateeditor' then
elseif protectionLevels.edit.default then
key = 'protection-level-template'
msg = protectionLevels.edit.default
elseif level == 'autoconfirmed' then
key = 'protection-level-semi'
end
elseif action == 'move' then
key = 'protection-level-move'
elseif action == 'create' then
key = 'protection-level-create'
else
key = error('no protection- level- defined for cfg.protectionLevels.edit.default')
end
return self._configObj:getMessage_substituteParameters(keymsg)
end
 
Line 418 ⟶ 464:
'Special:Log',
{type = 'stable', page = pagename},
self._configObj:getMessage_getExpandedMessage('more-details-pc-log-display')
)
else
Line 425 ⟶ 471:
'Special:Log',
{type = 'protect', page = pagename},
self._configObj:getMessage_getExpandedMessage('more-details-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
Line 432 ⟶ 487:
function Blurb:_makeTalkPageParameter()
local section = self._section
local display = self._configObj:getMessage_getExpandedMessage('talk-page-link-display')
return string.format(
'[[%s:%s#%s|%s]]',
mw.site.namespaces[self._titleObj.namespace].talk.name,
Line 440 ⟶ 495:
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
 
Line 446 ⟶ 510:
local username = self._username
username = username or self._titleObj.baseText
return mVandalM.luaMain_main{username}
end
 
Line 677 ⟶ 741:
local titleObj = self._titleObj
-- Get the namespace category key from the namespace numberexpiry.
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
do
local namespace = titleObj.namespace
local categoryNamespaces = configObj:getConfigTable('categoryNamespacescategoryNamespaceKeys')
nskey = categoryNamespaces[namespace]
if not nskey and namespace % 2 == 1 then
Line 687 ⟶ 759:
end
end
 
-- Get the other inputs.
local reason = protectionStatusObj:getReason()
local action = protectionStatusObj:getAction()
local level = protectionStatusObj:getLevel()
--[[
Line 694 ⟶ 771:
--]]
local properties = {
expiry = {order = 1, val = protectionStatusObj:getExpiry()expiry},
namespace = {order = 2, val = nskey},
reason = {order = 3, val = protectionStatusObj:getReason()reason},
level = {order = 4, val = protectionStatusObj:getLevel()level},
action = {order = 5, val = protectionStatusObj:getAction()action}
}
Line 711 ⟶ 788:
local configOrder = {}
do
local bannerConfigreasonsWithNamespacePriority = configObj:getBannerConfiggetConfigTable(protectionStatusObj'reasonsWithNamespacePriority')
local namespaceFirst = reason and reasonsWithNamespacePriority[reason] or false
local categoryOrder = bannerConfig.categoryOrder
for propertiesKey, t in pairs(properties) do
configOrder[t.order] = t
end
if categoryOrdernamespaceFirst then
-- Swap namespace and reason around.
local property = properties[categoryOrder]
local namespaceTable = table.remove(configOrder, 2)
if not property then
table.insert(configOrder, 3, namespaceTable)
local msg = '"'
.. categoryOrder
.. '" is not a valid value of cfg.reasons.'
.. reason
.. '.categoryOrder'
error(msg)
end
table.insert(configOrder, table.remove(configOrder, property.order))
end
end
Line 787 ⟶ 857:
-- pos field in the property table.
--]]
local cats = configObj:getConfigTable('categoriesprotectionCategories')
local cat
for i = 1, 2^noActive do