کاربر ناشناس
پودمان:Infobox: تفاوت میان نسخهها
update
جز (۱ نسخه واردشده) |
imported>Dalba (update) |
||
خط ۲: | خط ۲: | ||
-- This module implements {{Infobox}} | -- This module implements {{Infobox}} | ||
-- | -- | ||
local p = {} | local p = {} | ||
local navbar = require('Module:Navbar')._navbar | |||
local args = {} | local args = {} | ||
local origArgs | local origArgs | ||
local root | local root | ||
local function notempty( s ) return s and s:match( '%S' ) end | |||
local function fixChildBoxes(sval, tt) | |||
if notempty(sval) then | |||
local marker = '<span class=special_infobox_marker>' | |||
local s = sval | |||
s = mw.ustring.gsub(s, '(<%s*[Tt][Rr])', marker .. '%1') | |||
s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>)', '%1' .. marker) | |||
if s:match(marker) then | |||
s = mw.ustring.gsub(s, marker .. '%s*' .. marker, '') | |||
s = mw.ustring.gsub(s, '([\r\n]|-[^\r\n]*[\r\n])%s*' .. marker, '%1') | |||
s = mw.ustring.gsub(s, marker .. '%s*([\r\n]|-)', '%1') | |||
s = mw.ustring.gsub(s, '(</[Cc][Aa][Pp][Tt][Ii][Oo][Nn]%s*>%s*)' .. marker, '%1') | |||
s = mw.ustring.gsub(s, '(<%s*[Tt][Aa][Bb][Ll][Ee][^<>]*>%s*)' .. marker, '%1') | |||
s = mw.ustring.gsub(s, '^(%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1') | |||
s = mw.ustring.gsub(s, '([\r\n]%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1') | |||
s = mw.ustring.gsub(s, marker .. '(%s*</[Tt][Aa][Bb][Ll][Ee]%s*>)', '%1') | |||
s = mw.ustring.gsub(s, marker .. '(%s*\n|%})', '%1') | |||
end | |||
if s:match(marker) then | |||
local subcells = mw.text.split(s, marker) | |||
s = '' | |||
for k = 1, #subcells do | |||
if k == 1 then | |||
s = s .. subcells[k] .. '</' .. tt .. '></tr>' | |||
elseif k == #subcells then | |||
local rowstyle = ' style="display:none"' | |||
if notempty(subcells[k]) then rowstyle = '' end | |||
s = s .. '<tr' .. rowstyle ..'><' .. tt .. ' colspan=2>\n' .. subcells[k] | |||
elseif notempty(subcells[k]) then | |||
if (k % 2) == 0 then | |||
s = s .. subcells[k] | |||
else | |||
s = s .. '<tr><' .. tt .. ' colspan=2>\n' .. subcells[k] .. '</' .. tt .. '></tr>' | |||
end | |||
end | |||
end | |||
end | |||
-- the next two lines add a newline at the end of lists for the PHP parser | |||
-- https://en.wikipedia.org/w/index.php?title=Template_talk:Infobox_musical_artist&oldid=849054481 | |||
-- remove when [[:phab:T191516]] is fixed or OBE | |||
s = mw.ustring.gsub(s, '([\r\n][%*#;:][^\r\n]*)$', '%1\n') | |||
s = mw.ustring.gsub(s, '^([%*#;:][^\r\n]*)$', '%1\n') | |||
return s | |||
else | |||
return sval | |||
end | |||
end | |||
local function union(t1, t2) | local function union(t1, t2) | ||
خط ۵۴: | خط ۱۰۵: | ||
:css('text-align', 'center') | :css('text-align', 'center') | ||
:cssText(args.headerstyle) | :cssText(args.headerstyle) | ||
:wikitext(rowArgs.header) | :cssText(rowArgs.rowcellstyle) | ||
:wikitext(fixChildBoxes(rowArgs.header, 'th')) | |||
elseif rowArgs.data then | elseif rowArgs.data then | ||
local row = root:tag('tr') | local row = root:tag('tr') | ||
خط ۶۵: | خط ۱۱۷: | ||
:attr('scope', 'row') | :attr('scope', 'row') | ||
:attr('id', rowArgs.labelid) | :attr('id', rowArgs.labelid) | ||
:cssText(args.labelstyle) | :cssText(args.labelstyle) | ||
:cssText(rowArgs.rowcellstyle) | |||
:wikitext(rowArgs.label) | :wikitext(rowArgs.label) | ||
:done() | :done() | ||
خط ۸۱: | خط ۱۳۳: | ||
:addClass(rowArgs.class) | :addClass(rowArgs.class) | ||
:cssText(rowArgs.datastyle) | :cssText(rowArgs.datastyle) | ||
:cssText(rowArgs.rowcellstyle) | |||
:newline() | :newline() | ||
:wikitext(rowArgs.data) | :wikitext(fixChildBoxes(rowArgs.data, 'td')) | ||
end | end | ||
end | end | ||
خط ۱۰۸: | خط ۱۶۱: | ||
:css('font-weight', 'bold') | :css('font-weight', 'bold') | ||
:cssText(args.abovestyle) | :cssText(args.abovestyle) | ||
:wikitext(args.above) | :wikitext(fixChildBoxes(args.above,'th')) | ||
end | end | ||
خط ۱۲۲: | خط ۱۷۵: | ||
:cssText(args.belowstyle) | :cssText(args.belowstyle) | ||
:newline() | :newline() | ||
:wikitext(args.below) | :wikitext(fixChildBoxes(args.below,'td')) | ||
end | end | ||
خط ۱۳۶: | خط ۱۸۹: | ||
addRow({ | addRow({ | ||
data = args['subheader' .. tostring(num)], | data = args['subheader' .. tostring(num)], | ||
datastyle = args.subheaderstyle | datastyle = args.subheaderstyle, | ||
rowcellstyle = args['subheaderstyle' .. tostring(num)], | |||
class = args.subheaderclass, | class = args.subheaderclass, | ||
rowclass = args['subheaderrowclass' .. tostring(num)] | rowclass = args['subheaderrowclass' .. tostring(num)] | ||
خط ۱۸۳: | خط ۲۳۷: | ||
rowclass = args['rowclass' .. tostring(num)], | rowclass = args['rowclass' .. tostring(num)], | ||
rowstyle = args['rowstyle' .. tostring(num)], | rowstyle = args['rowstyle' .. tostring(num)], | ||
rowcellstyle = args['rowcellstyle' .. tostring(num)], | |||
dataid = args['dataid' .. tostring(num)], | dataid = args['dataid' .. tostring(num)], | ||
labelid = args['labelid' .. tostring(num)], | labelid = args['labelid' .. tostring(num)], | ||
خط ۱۹۹: | خط ۲۵۴: | ||
:attr('colspan', '2') | :attr('colspan', '2') | ||
:css('text-align', 'left') | :css('text-align', 'left') | ||
:wikitext( | :wikitext(navbar{ | ||
args.name, | |||
mini = 1, | |||
} | }) | ||
end | end | ||
خط ۲۱۴: | خط ۲۶۹: | ||
local function renderTrackingCategories() | local function renderTrackingCategories() | ||
if args.decat ~= 'yes' then | if args.decat ~= 'yes' then | ||
if args.child == 'yes' then | |||
if args.title then | |||
root:wikitext('[[Category:Pages which use embedded infobox templates with the title parameter]]') | |||
end | |||
elseif #(getArgNums('data')) == 0 and mw.title.getCurrentTitle().namespace == 0 then | |||
root:wikitext('[[Category:Articles which use infobox templates with no data rows]]') | root:wikitext('[[Category:Articles which use infobox templates with no data rows]]') | ||
end | end | ||
end | end | ||
خط ۲۳۰: | خط ۲۸۶: | ||
root | root | ||
:addClass('infobox') | :addClass((args.subbox ~= 'yes') and 'infobox' or nil) | ||
:addClass(args.bodyclass) | :addClass(args.bodyclass) | ||
خط ۳۷۶: | خط ۴۳۲: | ||
{prefix = 'rowclass'}, | {prefix = 'rowclass'}, | ||
{prefix = 'rowstyle'}, | {prefix = 'rowstyle'}, | ||
{prefix = 'rowcellstyle'}, | |||
{prefix = 'class'}, | {prefix = 'class'}, | ||
{prefix = 'dataid'}, | {prefix = 'dataid'}, |