Module:Message box: Difference between revisions
Content added Content deleted
m (1 revision imported: lowercase) |
radio>MSGJ (code requested by User:Danski454 to fix demospace feature) |
||
Line 5: | Line 5: | ||
require('Module:No globals') |
require('Module:No globals') |
||
local getArgs |
local getArgs |
||
⚫ | |||
local yesno = require('Module:Yesno') |
local yesno = require('Module:Yesno') |
||
Line 13: | Line 12: | ||
-- Define constants |
-- Define constants |
||
local CONFIG_MODULE = 'Module:Message box/configuration' |
local CONFIG_MODULE = 'Module:Message box/configuration' |
||
local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'} |
|||
-------------------------------------------------------------------------------- |
-------------------------------------------------------------------------------- |
||
Line 75: | Line 75: | ||
local ns = obj.title.namespace |
local ns = obj.title.namespace |
||
-- boxType is "mbox" or invalid input |
-- boxType is "mbox" or invalid input |
||
if |
if args.demospace and args.demospace ~= '' then |
||
-- implement demospace parameter of mbox |
|||
local demospace = string.lower(args.demospace) |
|||
if DEMOSPACES[demospace] then |
|||
-- use template from DEMOSPACES |
|||
obj.cfg = cfg[DEMOSPACES[demospace]] |
|||
elseif string.find( demospace, 'talk' ) then |
|||
-- demo as a talk page |
|||
obj.cfg = cfg.tmbox |
|||
else |
|||
-- default to ombox |
|||
obj.cfg = cfg.ombox |
|||
end |
|||
elseif ns == 0 then |
|||
obj.cfg = cfg.ambox -- main namespace |
obj.cfg = cfg.ambox -- main namespace |
||
elseif ns == 6 then |
elseif ns == 6 then |
||
Line 109: | Line 122: | ||
obj.categories = {} |
obj.categories = {} |
||
obj.classes = {} |
obj.classes = {} |
||
-- For lazy loading of [[Module:Category handler]]. |
|||
obj.hasCategories = false |
|||
return setmetatable(obj, MessageBox) |
return setmetatable(obj, MessageBox) |
||
Line 122: | Line 137: | ||
cat = string.format('[[Category:%s]]', cat) |
cat = string.format('[[Category:%s]]', cat) |
||
end |
end |
||
self.hasCategories = true |
|||
self.categories[ns] = self.categories[ns] or {} |
self.categories[ns] = self.categories[ns] or {} |
||
table.insert(self.categories[ns], cat) |
table.insert(self.categories[ns], cat) |
||
Line 158: | Line 174: | ||
-- Add attributes, classes and styles. |
-- Add attributes, classes and styles. |
||
self.id = args.id |
self.id = args.id |
||
⚫ | |||
if self.name then |
|||
self:addClass('box-' .. string.gsub(self.name,' ','_')) |
|||
end |
|||
if yesno(args.plainlinks) ~= false then |
if yesno(args.plainlinks) ~= false then |
||
self:addClass('plainlinks') |
self:addClass('plainlinks') |
||
Line 183: | Line 203: | ||
and cfg.templateCategoryRequireName |
and cfg.templateCategoryRequireName |
||
then |
then |
||
⚫ | |||
if self.name then |
if self.name then |
||
local templateName = mw.ustring.match( |
local templateName = mw.ustring.match( |
||
Line 195: | Line 214: | ||
and mw.title.equals(self.title, self.templateTitle) |
and mw.title.equals(self.title, self.templateTitle) |
||
end |
end |
||
-- Process data for collapsible text fields. At the moment these are only |
-- Process data for collapsible text fields. At the moment these are only |
||
-- used in {{ambox}}. |
-- used in {{ambox}}. |
||
Line 278: | Line 297: | ||
end |
end |
||
if date then |
if date then |
||
self.date = string.format(" <small>''(%s)''</small>", date) |
self.date = string.format(" <small class='date-container'>''(<span class='date'>%s</span>)''</small>", date) |
||
end |
end |
||
self.info = args.info |
self.info = args.info |
||
Line 429: | Line 448: | ||
function MessageBox:renderCategories() |
function MessageBox:renderCategories() |
||
if not self.hasCategories then |
|||
-- No categories added, no need to pass them to Category handler so, |
|||
-- if it was invoked, it would return the empty string. |
|||
-- So we shortcut and return the empty string. |
|||
return "" |
|||
end |
|||
-- Convert category tables to strings and pass them through |
-- Convert category tables to strings and pass them through |
||
-- [[Module:Category handler]]. |
-- [[Module:Category handler]]. |
||
⚫ | |||
return categoryHandler{ |
|||
main = table.concat(self.categories[0] or {}), |
main = table.concat(self.categories[0] or {}), |
||
template = table.concat(self.categories[10] or {}), |
template = table.concat(self.categories[10] or {}), |