Module:Protection banner: Difference between revisions
Content added Content deleted
Enwikipedia>Mr. Stradivarius (sort parameter methods into alphabetical order, and remove the ones that are no longer needed) |
Enwikipedia>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) |
|||
return ' until ' .. formatted |
|||
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 |
if namespace == 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 |
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 |
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 |
else |
||
key = 'explanation- |
key = 'explanation-blurb-default' |
||
end |
end |
||
return self:_getExpandedMessage(key) |
|||
return self:_substituteParameters(msg) |
|||
end |
end |
||
function Blurb:_makeIntroBlurbParameter() |
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 |
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 |
end |
||
local msg = self._configObj:getMessage(key) |
|||
return self:_substituteParameters(msg) |
|||
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] |
|||
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 |
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 |
-- 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 namespaceFirst = reason and reasonsWithNamespacePriority[reason] or false |
|||
local categoryOrder = bannerConfig.categoryOrder |
|||
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 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 |
||
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 |