Difference between revisions of "Infobox"
From GameBrew
Line 36: | Line 36: | ||
-- Description | -- Description | ||
local description = args.description | local description = args.description | ||
+ | if not description or description == '' then description = mw.title.getCurrentTitle().text end | ||
-- Rows | -- Rows |
Latest revision as of 09:44, 26 October 2021
Documentation for this module may be created at Module:Infobox/doc
--- Simple infobox module
local p = {}
--- Main function
function p.infobox( frame )
local args
if frame == mw.getCurrentFrame() then
args = frame:getParent().args
else
args = frame
end
local infobox = mw.html.create('table'):addClass('infobox')
-- Title
local title = args.title
if not title or title == '' then title = mw.title.getCurrentTitle().text end
infobox:tag('tr'):tag('th'):addClass('infobox-title'):attr('scope','col'):attr('colspan',2):wikitext(title)
-- Image
local image = args.image
if image and image ~= '' then
if image:sub(1,2) ~= '[[' then
if not image:find(':') then
image = 'File:' .. image
end
image = '[[' .. image .. '|' .. ('300px') .. ']]'
end
local imgcell = infobox:tag('tr'):tag('td'):addClass('infobox-image')
:attr('colspan',2):wikitext(image)
local caption = args.imagecaption
if caption and caption ~= '' then
imgcell:wikitext("<br />''" .. caption .. "''")
end
end
-- Description
local description = args.description
if not description or description == '' then description = mw.title.getCurrentTitle().text end
-- Rows
for i = 1, 20 do
local header = args['header' .. i]; if header == '' then header = nil end
local label = args['label' .. i]; if label == '' then label = nil end
local data = args['data' .. i]; if data == '' then data = nil end
if header then
infobox:tag('tr')
:tag('th'):addClass('infobox-header'):attr('scope','col'):attr('colspan',2):wikitext(header)
end
if data then
if label then
infobox:tag('tr')
:tag('th'):attr('scope','row'):addClass('infobox-label'):wikitext(label):done()
:tag('td'):addClass('infobox-data'):wikitext(data)
else
infobox:tag('tr')
:tag('td'):addClass('infobox-data'):attr('colspan',2)
:css('text-align','center'):wikitext(data)
end
end
end
-- Below
local below = args.below
if below and below ~= '' then
infobox:tag('tr'):tag('td'):addClass('infobox-below'):attr('colspan',2):wikitext(below)
end
return infobox
end
return p