Module:Protection banner: Difference between revisions

produce wikitext errors rather than script errors for errors caused by invalid user input
(use mw.ustring.lower to convert the reason to lower case, for the benefit of other-language wikis)
(produce wikitext errors rather than script errors for errors caused by invalid user input)
Line 15: Line 15:
-- Helper functions
-- Helper functions
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
local function makeWikitextError(msg)
-- @TODO: localise this.
local boilerplate = 'Error: $1 ([[Module:Protection banner#Errors|help]])'
local errorText = mw.message.newRawMessage(boilerplate):params(msg):plain()
return string.format(
'<strong class="error">%s</strong>',
errorText
)
end


local function makeCategoryLink(cat)
local function makeCategoryLink(cat)
Line 42: Line 52:
dateType,
dateType,
tostring(dateString)
tostring(dateString)
))
), 0)
end
end


Line 84: Line 94:
self.action = args.action
self.action = args.action
else
else
error('Unsupported action ' .. args.action, 2)
error(string.format(
'invalid action ("%s")',
tostring(args.action)
), 0)
end
end


Line 800: Line 813:
end
end


-- Initialise protection and blurb objects
-- Initialise the protection object and check for errors
local protectionObj = Protection:new(args, cfg, title)
local protectionObjCreated, protectionObj = pcall(
Protection.new, Protection, -- equivalent to Protection:new()
args,
cfg,
title
)
if not protectionObjCreated then
-- protectionObj is the error message.
return makeWikitextError(protectionObj)
end
-- Initialise the blurb object
local blurbObj = Blurb:new(protectionObj, args, cfg)
local blurbObj = Blurb:new(protectionObj, args, cfg)