Module:Infobox: Difference between revisions
Content added Content deleted
(allow setting ids for rows, headers, labels and data fields, per protected edit request by User:Czarkoff) |
(update to use mw.html instead of Module:HtmlBuilder - conversion courtesy of User:WOSlinker) |
||
Line 4: | Line 4: | ||
local p = {} |
local p = {} |
||
local HtmlBuilder = require('Module:HtmlBuilder') |
|||
local args = {} |
local args = {} |
||
local origArgs |
local origArgs |
||
local root |
local root |
||
local function union(t1, t2) |
local 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. |
||
Line 45: | Line 43: | ||
if rowArgs.header then |
if rowArgs.header then |
||
root |
root |
||
:tag('tr') |
|||
:addClass(rowArgs.rowclass) |
|||
:attr('id', rowArgs.rowid) |
|||
:tag('th') |
|||
:attr('colspan', 2) |
|||
:attr('id', rowArgs.headerid) |
|||
:addClass(rowArgs.class) |
|||
:addClass(args.headerclass) |
|||
: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) |
||
row |
row:attr('id', rowArgs.rowid) |
||
if rowArgs.label then |
if rowArgs.label then |
||
row |
row |
||
:tag('th') |
|||
:attr('scope', 'row') |
|||
:attr('id', rowArgs.labelid) |
|||
: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 |
||
:attr('id', rowArgs.dataid) |
|||
:addClass(rowArgs.class) |
|||
:cssText(rowArgs.datastyle) |
|||
:newline() |
|||
:wikitext(rowArgs.data) |
|||
end |
end |
||
end |
end |
||
Line 90: | Line 88: | ||
root |
root |
||
:tag('caption') |
|||
:addClass(args.titleclass) |
|||
:cssText(args.titlestyle) |
|||
:wikitext(args.title) |
|||
end |
end |
||
Line 100: | Line 98: | ||
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 115: | Line 113: | ||
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 153: | Line 151: | ||
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 = mw.html.create():wikitext(args['image' .. tostring(num)]) |
||
if caption then |
if caption then |
||
data |
data |
||
:tag('div') |
|||
:cssText(args.captionstyle) |
|||
:wikitext(caption) |
|||
end |
end |
||
addRow({ |
addRow({ |
||
Line 194: | Line 192: | ||
root |
root |
||
:tag('tr') |
|||
:tag('td') |
|||
:attr('colspan', '2') |
|||
:css('text-align', 'right') |
|||
:wikitext(mw.getCurrentFrame():expandTemplate({ |
|||
title = 'navbar', |
title = 'navbar', |
||
args = { args.name, mini = 1 } |
args = { args.name, mini = 1 } |
||
Line 207: | Line 205: | ||
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 214: | Line 212: | ||
if args.decat ~= 'yes' then |
if args.decat ~= 'yes' then |
||
if #(getArgNums('data')) == 0 and mw.title.getCurrentTitle().namespace == 0 then |
if #(getArgNums('data')) == 0 and mw.title.getCurrentTitle().namespace == 0 then |
||
root |
root:wikitext('[[Category:Articles which use infobox templates with no data rows]]') |
||
end |
end |
||
if args.child == 'yes' and args.title then |
if args.child == 'yes' and args.title then |
||
root |
root:wikitext('[[Category:Articles which use embedded infobox templates with the title parameter]]') |
||
end |
end |
||
end |
end |
||
Line 226: | Line 224: | ||
-- 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 = mw.html.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 = mw.html.create() |
||
root |
root |
||
:wikitext(args.title) |
|||
end |
end |
||