Module:BlockMessages
Jump to navigation
Jump to search
Documentation for this module may be created at Module:BlockMessages/doc
--| Module:BlockMessages (v2.2.0) --by "The JoTS" -- v3.0 (Planned) - Drop requirement for sub'd ":" for ":" -- v2.2 - Support for message headers and footers -- v2.1 - Preparation function for MediaWiki:Ipbreason-dropdown -- v2.0 - Now only accepts named parameters. (To avoid errors with "=") --- This module is meant to be used in conjunction to [[MessageBlock]] and --- allows for customized block messages for every offense listed in the --- Ipbreason-dropdown system message. -- <nowiki> -- [==[ Module Start ]==] ------ local bm = {} function bm.main(frame) local reasons = setmetatable({}, { __index = function(t,i) return rawget(t, "__DEFAULT__") or {"You have been banned for $2 because ", i, ":$1" } end }) do local _reasons, currReason -- Get messages _reasons = mw.message.new("Custom-Ipbreason-messages") assert(_reasons:exists(), "MediaWiki:Custom-Ipbreason-messages does not exist.") -- Parse messages for type, msg in (tostring(_reasons)..'\n'):gmatch("([;:])(.-)\n") do if type == ";" then currReason = {} reasons[msg] = currReason elseif type == ":" and currReason then table.insert(currReason, msg) end end end -- Get selected message local args = frame.args local offense, notes = args["reason"]:match("^(.-):%s*(.+)") offense = offense or args["reason"] return frame:preprocess(mw.text.trim( string.gsub( table.concat(rawget(reasons, "__HEADER__") or {}, '\n') .. table.concat(reasons[offense], '\n') .. table.concat(rawget(reasons, "__FOOTER__") or {}, '\n'), "$%d", { ["$1"] = notes or '', ["$2"] = args["expiry"] } ) )) end function bm.prep(frame) local page = mw.title.getCurrentTitle() local content = page:getContent() if page.fullText ~= "MediaWiki:Ipbreason-dropdown" then return content end return ( content:gsub(':', ":") ) end return bm