Editing Module:Infobox
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 2: | Line 2: | ||
-- This module implements {{Infobox}} | -- This module implements {{Infobox}} | ||
-- | -- | ||
local p = {} | local p = {} | ||
local | local HtmlBuilder = require('Module:HtmlBuilder') | ||
local args = {} | local args = {} | ||
local origArgs | local origArgs | ||
local root | local root | ||
function union(t1, t2) | |||
-- Returns the union of the values of two tables, as a sequence. | -- Returns the union of the values of two tables, as a sequence. | ||
local vals = {} | local vals = {} | ||
Line 94: | Line 45: | ||
if rowArgs.header then | if rowArgs.header then | ||
root | root | ||
.tag('tr') | |||
.addClass(rowArgs.rowclass) | |||
.tag('th') | |||
.attr('colspan', 2) | |||
.addClass(rowArgs.class) | |||
.css('text-align', 'center') | |||
.cssText(args.headerstyle) | |||
.wikitext(rowArgs.header) | |||
elseif rowArgs.data then | elseif rowArgs.data then | ||
local row = root | local row = root.tag('tr') | ||
row | row.addClass(rowArgs.rowclass) | ||
if rowArgs.label then | if rowArgs.label then | ||
row | row | ||
.tag('th') | |||
.attr('scope', 'row') | |||
.css('text-align', 'left') | |||
.cssText(args.labelstyle) | |||
.wikitext(rowArgs.label) | |||
.done() | |||
end | end | ||
local dataCell = row | local dataCell = row.tag('td') | ||
if not rowArgs.label then | if not rowArgs.label then | ||
dataCell | dataCell | ||
.attr('colspan', 2) | |||
.css('text-align', 'center') | |||
end | end | ||
dataCell | dataCell | ||
.addClass(rowArgs.class) | |||
.cssText(rowArgs.datastyle) | |||
.newline() | |||
.wikitext(rowArgs.data) | |||
end | end | ||
end | end | ||
Line 143: | Line 84: | ||
root | root | ||
.tag('caption') | |||
.addClass(args.titleclass) | |||
.cssText(args.titlestyle) | |||
.wikitext(args.title) | |||
end | end | ||
Line 153: | Line 94: | ||
root | root | ||
.tag('tr') | |||
.tag('th') | |||
.attr('colspan', 2) | |||
.addClass(args.aboveclass) | |||
.css('text-align', 'center') | |||
.css('font-size', '125%') | |||
.css('font-weight', 'bold') | |||
.cssText(args.abovestyle) | |||
.wikitext(args.above) | |||
end | end | ||
Line 168: | Line 109: | ||
root | root | ||
.tag('tr') | |||
.tag('td') | |||
.attr('colspan', '2') | |||
.addClass(args.belowclass) | |||
.css('text-align', 'center') | |||
.cssText(args.belowstyle) | |||
.newline() | |||
.wikitext(args.below) | |||
end | end | ||
Line 206: | Line 147: | ||
for k, num in ipairs(imagenums) do | for k, num in ipairs(imagenums) do | ||
local caption = args['caption' .. tostring(num)] | local caption = args['caption' .. tostring(num)] | ||
local data = | local data = HtmlBuilder.create().wikitext(args['image' .. tostring(num)]) | ||
if caption then | if caption then | ||
data | data | ||
.tag('br', {selfClosing = true}) | |||
.done() | |||
.tag('div') | |||
.cssText(args.captionstyle) | |||
.wikitext(caption) | |||
end | end | ||
addRow({ | addRow({ | ||
Line 234: | Line 177: | ||
datastyle = args.datastyle, | datastyle = args.datastyle, | ||
class = args['class' .. tostring(num)], | class = args['class' .. tostring(num)], | ||
rowclass = args['rowclass | rowclass = args['rowclass' .. tostring(num)] | ||
}) | }) | ||
end | end | ||
Line 249: | Line 186: | ||
root | root | ||
.tag('tr') | |||
.tag('td') | |||
.attr('colspan', '2') | |||
.css('text-align', 'right') | |||
: | .wikitext(mw.getCurrentFrame():expandTemplate({ | ||
args.name, | title = 'navbar', | ||
args = { args.name, mini = 1 } | |||
}) | })) | ||
end | end | ||
Line 262: | Line 199: | ||
local italicTitle = args['italic title'] and mw.ustring.lower(args['italic title']) | local italicTitle = args['italic title'] and mw.ustring.lower(args['italic title']) | ||
if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then | if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then | ||
root | root.wikitext(mw.getCurrentFrame():expandTemplate({title = 'italic title'})) | ||
end | end | ||
end | end | ||
Line 268: | Line 205: | ||
local function renderTrackingCategories() | local function renderTrackingCategories() | ||
if args.decat ~= 'yes' then | if args.decat ~= 'yes' then | ||
if #(getArgNums('data')) == 0 and mw.title.getCurrentTitle().namespace == 0 then | |||
root.wikitext('[[Category:Articles which use infobox templates with no data rows]]') | |||
end | |||
if args.child == 'yes' and args.title then | |||
root.wikitext('[[Category:Articles which use embedded infobox templates with the title parameter]]') | |||
root | |||
end | end | ||
end | end | ||
Line 282: | Line 218: | ||
-- if the infobox is used as a 'child' inside another infobox. | -- if the infobox is used as a 'child' inside another infobox. | ||
if args.child ~= 'yes' then | if args.child ~= 'yes' then | ||
root = | root = HtmlBuilder.create('table') | ||
root | root | ||
.addClass('infobox') | |||
.addClass(args.bodyclass) | |||
.attr('cellspacing', 3) | |||
.css('border-spacing', '3px') | |||
if args.subbox == 'yes' then | if args.subbox == 'yes' then | ||
root | root | ||
.css('padding', '0') | |||
.css('border', 'none') | |||
.css('margin', '-3px') | |||
.css('width', 'auto') | |||
.css('min-width', '100%') | |||
.css('font-size', '100%') | |||
.css('clear', 'none') | |||
.css('float', 'none') | |||
.css('background-color', 'transparent') | |||
else | else | ||
root | root | ||
.css('width', '22em') | |||
end | end | ||
root | root | ||
.cssText(args.bodystyle) | |||
renderTitle() | renderTitle() | ||
renderAboveRow() | renderAboveRow() | ||
else | else | ||
root = | root = HtmlBuilder.create() | ||
root | root | ||
.wikitext(args.title) | |||
end | end | ||
Line 430: | Line 368: | ||
{prefix = 'data', depend = {'label'}}, | {prefix = 'data', depend = {'label'}}, | ||
{prefix = 'rowclass'}, | {prefix = 'rowclass'}, | ||
{prefix = 'class'} | |||
{prefix = 'class | |||
}, 50) | }, 50) | ||
preprocessSingleArg('headerstyle') | preprocessSingleArg('headerstyle') | ||
preprocessSingleArg('labelstyle') | preprocessSingleArg('labelstyle') |