Changes

Jump to navigation Jump to search
969 bytes added ,  11:11, 26 March 2020
m
1 revision imported
Line 5: Line 5:  
require('Module:No globals')
 
require('Module:No globals')
 
local getArgs
 
local getArgs
local categoryHandler = require('Module:Category handler')._main
   
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 ns == 0 then
+
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
 +
self.name = args.name
 +
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
self.name = args.name
   
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{
+
return require('Module:Category handler')._main{
 
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 {}),

Navigation menu