Module:Protection banner: Difference between revisions
add catonly param which hides both the banner and padlock if set to yes. all testcases pass. tested in sandbox.
m (1 revision imported) Â |
mediawiki>ProcrastinatingReader (add catonly param which hides both the banner and padlock if set to yes. all testcases pass. tested in sandbox.) |
||
Line 169: | Line 169: | ||
end | end | ||
return setmetatable(obj, Protection) | return setmetatable(obj, Protection) | ||
end | |||
function Protection:isUserScript() | |||
-- Whether the page is a user JavaScript or CSS page. | |||
local title = self.title | |||
return title.namespace == 2 and ( | |||
title.contentModel == 'javascript' or title.contentModel == 'css' | |||
) | |||
end | end | ||
Line 174: | Line 182: | ||
return self.level ~= '*' | return self.level ~= '*' | ||
end | end | ||
function Protection:shouldShowLock() | |||
-- Whether we should output a banner/padlock | |||
return self:isProtected() and not self:isUserScript() | |||
end | |||
-- Whether this page needs a protection category. | |||
Protection.shouldHaveProtectionCategory = Protection.shouldShowLock | |||
function Protection:isTemporary() | function Protection:isTemporary() | ||
Line 180: | Line 196: | ||
function Protection:makeProtectionCategory() | function Protection:makeProtectionCategory() | ||
if not self:shouldHaveProtectionCategory() then | |||
return '' | |||
end | |||
local cfg = self._cfg | local cfg = self._cfg | ||
local title = self.title | local title = self.title | ||
-- Get the expiry key fragment. | -- Get the expiry key fragment. | ||
Line 201: | Line 216: | ||
namespaceFragment = 'talk' | namespaceFragment = 'talk' | ||
end | end | ||
 | |||
-- Define the order that key fragments are tested in. This is done with an | -- Define the order that key fragments are tested in. This is done with an | ||
-- array of tables containing the value to be tested, along with its | -- array of tables containing the value to be tested, along with its | ||
Line 309: | Line 324: | ||
function Protection:isIncorrect() | function Protection:isIncorrect() | ||
local expiry = self.expiry | local expiry = self.expiry | ||
return not self: | return not self:shouldHaveProtectionCategory() | ||
or type(expiry) == 'number' and expiry < os.time() | or type(expiry) == 'number' and expiry < os.time() | ||
end | end | ||
Line 324: | Line 339: | ||
function Protection:makeCategoryLinks() | function Protection:makeCategoryLinks() | ||
local msg = self._cfg.msg | local msg = self._cfg.msg | ||
local ret = { self:makeProtectionCategory() } | local ret = {self:makeProtectionCategory()} | ||
if self:isIncorrect() then | if self:isIncorrect() then | ||
ret[#ret + 1] = makeCategoryLink( | ret[#ret + 1] = makeCategoryLink( | ||
Line 637: | Line 652: | ||
function Blurb:_makeVandalTemplateParameter() | function Blurb:_makeVandalTemplateParameter() | ||
return | return mw.getCurrentFrame():expandTemplate{ | ||
self._args.user or self._protectionObj.title.baseText | title="vandal-m", | ||
args={self._args.user or self._protectionObj.title.baseText} | |||
} | } | ||
end | end | ||
Line 827: | Line 843: | ||
-- protection from some other action, then don't bother displaying anything | -- protection from some other action, then don't bother displaying anything | ||
-- for the other action (except categories). | -- for the other action (except categories). | ||
if protectionObj.action == 'edit' or | if not yesno(args.catonly) and (protectionObj.action == 'edit' or | ||
args.demolevel or | args.demolevel or | ||
not getReachableNodes( | not getReachableNodes( | ||
cfg.hierarchy, | cfg.hierarchy, | ||
protectionObj.level | protectionObj.level | ||
)[effectiveProtectionLevel('edit', protectionObj.title)] | )[effectiveProtectionLevel('edit', protectionObj.title)]) | ||
then | then | ||
-- Initialise the blurb object | -- Initialise the blurb object | ||
Line 838: | Line 854: | ||
-- Render the banner | -- Render the banner | ||
if protectionObj: | if protectionObj:shouldShowLock() then | ||
ret[#ret + 1] = tostring( | ret[#ret + 1] = tostring( | ||
(yesno(args.small) and Padlock or Banner) | (yesno(args.small) and Padlock or Banner) |