Module:Protection banner: Difference between revisions

Jump to navigation Jump to search
Content added Content deleted
(only show banners for actions other than edit if they're more restricted than edit)
(use actual Lua errors, and a small fix to parameter handling)
Line 52: Line 52:
dateType,
dateType,
tostring(dateString)
tostring(dateString)
), 0)
), 4)
end
end


Line 122: Line 122:
'invalid action ("%s")',
'invalid action ("%s")',
tostring(args.action)
tostring(args.action)
), 0)
), 3)
end
end


Line 152: Line 152:
obj.reason = mw.ustring.lower(args[1])
obj.reason = mw.ustring.lower(args[1])
if obj.reason:find('|') then
if obj.reason:find('|') then
error('reasons cannot contain the pipe character ("|")', 0)
error('reasons cannot contain the pipe character ("|")', 3)
end
end
end
end
Line 543: Line 543:
level,
level,
talkKey
talkKey
))
), 8)
end
end
return self:_substituteParameters(msg)
return self:_substituteParameters(msg)
Line 583: Line 583:
return pagetypes[self._protectionObj.title.namespace]
return pagetypes[self._protectionObj.title.namespace]
or pagetypes.default
or pagetypes.default
or error('no default pagetype defined')
or error('no default pagetype defined', 8)
end
end


Line 598: Line 598:
msg = protectionBlurbs.edit.default
msg = protectionBlurbs.edit.default
else
else
error('no protection blurb defined for protectionBlurbs.edit.default')
error('no protection blurb defined for protectionBlurbs.edit.default', 8)
end
end
return self:_substituteParameters(msg)
return self:_substituteParameters(msg)
Line 624: Line 624:
msg = protectionLevels.edit.default
msg = protectionLevels.edit.default
else
else
error('no protection level defined for protectionLevels.edit.default')
error('no protection level defined for protectionLevels.edit.default', 8)
end
end
return self:_substituteParameters(msg)
return self:_substituteParameters(msg)
Line 703: Line 703:
tostring(key),
tostring(key),
type(msg)
type(msg)
))
), 4)
end
end
return self:_substituteParameters(msg)
return self:_substituteParameters(msg)
Line 800: Line 800:
-- Renders the banner.
-- Renders the banner.
makeMessageBox = makeMessageBox or require('Module:Message box').main
makeMessageBox = makeMessageBox or require('Module:Message box').main
local reasonText = self._reasonText or error('no reason text set')
local reasonText = self._reasonText or error('no reason text set', 2)
local explanationText = self._explanationText
local explanationText = self._explanationText
local mbargs = {
local mbargs = {
Line 865: Line 865:
cfg = cfg or require(CONFIG_MODULE)
cfg = cfg or require(CONFIG_MODULE)


local protectionObj = Protection.new(args, cfg, title)
-- Initialise the protection object and check for errors
local protectionObjCreated, protectionObj = pcall(
Protection.new,
args,
cfg,
title
)
if not protectionObjCreated then
local errorBlurb = cfg.msg['error-message-blurb'] or 'Error: $1.'
local errorText = mw.message.newRawMessage(errorBlurb)
:params(protectionObj) -- protectionObj is the error message
:plain()
return string.format(
'<strong class="error">%s</strong>%s',
errorText,
makeCategoryLink(
cfg.msg['tracking-category-incorrect'],
title and title.text or mw.title.getCurrentTitle().text
)
)
end


local ret = {}
local ret = {}
Line 917: Line 897:
-- Find default args, if any.
-- Find default args, if any.
local parent = frame.getParent and frame:getParent()
local parent = frame.getParent and frame:getParent()
local defaultArgs = parent and cfg.wrappers[parent:getTitle():gsub('/sandbox$', '')] or {}
local defaultArgs = parent and cfg.wrappers[parent:getTitle():gsub('/sandbox$', '')]


-- Find user args, and use the parent frame if we are being called from a
-- Find user args, and use the parent frame if we are being called from a
Line 929: Line 909:
-- Build the args table. User-specified args overwrite default args.
-- Build the args table. User-specified args overwrite default args.
local args = {}
local args = {}
for k, v in pairs(defaultArgs) do
for k, v in pairs(defaultArgs or {}) do
args[k] = v
args[k] = v
end
end