Changes
more abstraction for box structure and better small=yes support
local p = {}
local function generateBoxStructure()
local root = htmlBuilder.create() -- Includes error messages and categories added after the box.
local box = root.tag('table')
local row = box.tag('tr')
return root, box, row
end
function p.build(data, args)
-- Process config data using the args passed to the template.
local isSmall = args.small == 'yes' or args.small == true
local typeData = data.types[args.type]
local invalidType = args.type and not typeData and true or false
typeData = typeData or data.types[data.default]
local image, imageRight, text, imageSize
if isSmall then
image = args.smallimage or args.image
imageRight = args.smallimageright or args.imageright
text = args.smalltext or args.text
imageSize = data.imageSizeSmall or data.imageSize
else
image = args.image
imageRight = args.imageright
text = args.text
imageSize = data.imageSizeLarge or data.imageSize
end
-- Get the box structure.
local root, box, row = generateBoxStructure()
-- Build the box.
box
.attr('id', args.id)
-- Add the left-hand image.
row.tag('td')
.addClass('mbox-image')
.wikitext(args.image or mw.ustring.format( '[[File:%s|%s|link=|alt=]]', typeData.image, (args.small == 'yes' or args.small == true) and data.imageSizeSmall or data.imageSizeLarge or data.imageSize ))
elseif data.imageEmptyCell then
row.tag('td')
.addClass('mbox-text')
.cssText(args.textstyle)
.wikitext(args.text)
-- Add the right-hand image.
if args.imageright imageRight then
row.tag('td')
.addClass('mbox-imageright')
.wikitext(args.imagerightimageRight)
end