پودمان:Infobox: تفاوت میان نسخهها
پرش به ناوبری
پرش به جستجو
جز
spacing
جز (۱ نسخه واردشده) |
en.wikipedia>Fayenatic london جز (spacing) |
||
خط ۴: | خط ۴: | ||
local root | local root | ||
local empty_row_categories = {} | local empty_row_categories = {} | ||
local category_in_empty_row_pattern = '%[%[%s* | local category_in_empty_row_pattern = '%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]' | ||
local has_rows = false | |||
local function fixChildBoxes(sval, tt) | local function fixChildBoxes(sval, tt) | ||
خط ۱۲: | خط ۱۳: | ||
local marker = '<span class=special_infobox_marker>' | local marker = '<span class=special_infobox_marker>' | ||
local s = sval | local s = sval | ||
-- start moving templatestyles and categories inside of table rows | |||
local slast = '' | |||
while slast ~= s do | |||
slast = s | |||
s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*%]%])', '%2%1') | |||
s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)', '%2%1') | |||
end | |||
-- end moving templatestyles and categories inside of table rows | |||
s = mw.ustring.gsub(s, '(<%s*[Tt][Rr])', marker .. '%1') | s = mw.ustring.gsub(s, '(<%s*[Tt][Rr])', marker .. '%1') | ||
s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>)', '%1' .. marker) | s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>)', '%1' .. marker) | ||
خط ۵۶: | خط ۶۵: | ||
else | else | ||
return sval | return sval | ||
end | |||
end | |||
-- Cleans empty tables | |||
local function cleanInfobox() | |||
root = tostring(root) | |||
if has_rows == false then | |||
root = mw.ustring.gsub(root, '<table[^<>]*>%s*</table>', '') | |||
end | end | ||
end | end | ||
خط ۹۴: | خط ۱۱۱: | ||
if rowArgs.header and rowArgs.header ~= '_BLANK_' then | if rowArgs.header and rowArgs.header ~= '_BLANK_' then | ||
has_rows = true | |||
root | root | ||
:tag('tr') | :tag('tr') | ||
خط ۱۰۳: | خط ۱۲۱: | ||
:addClass(rowArgs.class) | :addClass(rowArgs.class) | ||
:addClass(args.headerclass) | :addClass(args.headerclass) | ||
-- @deprecated next; target .infobox-<name> .infobox-header | -- @deprecated next; target .infobox-<name> .infobox-header | ||
:cssText(args.headerstyle) | :cssText(args.headerstyle) | ||
خط ۱۱۰: | خط ۱۲۷: | ||
if rowArgs.data then | if rowArgs.data then | ||
root:wikitext( | root:wikitext( | ||
'[[ | '[[Category:Pages using infobox templates with ignored data cells]]' | ||
) | ) | ||
end | end | ||
elseif rowArgs.data and rowArgs.data:gsub( | elseif rowArgs.data and rowArgs.data:gsub( | ||
category_in_empty_row_pattern, '' | |||
):match('^%S') then | ):match('^%S') then | ||
has_rows = true | |||
local row = root:tag('tr') | local row = root:tag('tr') | ||
row:addClass(rowArgs.rowclass) | row:addClass(rowArgs.rowclass) | ||
خط ۱۴۸: | خط ۱۶۶: | ||
if not args.title then return end | if not args.title then return end | ||
has_rows = true | |||
root | root | ||
:tag('caption') | :tag('caption') | ||
خط ۱۶۰: | خط ۱۷۹: | ||
if not args.above then return end | if not args.above then return end | ||
has_rows = true | |||
root | root | ||
:tag('tr') | :tag('tr') | ||
خط ۱۶۶: | خط ۱۸۶: | ||
:addClass('infobox-above') | :addClass('infobox-above') | ||
:addClass(args.aboveclass) | :addClass(args.aboveclass) | ||
-- @deprecated next; target .infobox-<name> .infobox-above | -- @deprecated next; target .infobox-<name> .infobox-above | ||
:cssText(args.abovestyle) | :cssText(args.abovestyle) | ||
خط ۱۷۵: | خط ۱۹۴: | ||
if not args.below then return end | if not args.below then return end | ||
has_rows = true | |||
root | root | ||
:tag('tr') | :tag('tr') | ||
خط ۱۸۱: | خط ۲۰۱: | ||
:addClass('infobox-below') | :addClass('infobox-below') | ||
:addClass(args.belowclass) | :addClass(args.belowclass) | ||
-- @deprecated next; target .infobox-<name> .infobox-below | -- @deprecated next; target .infobox-<name> .infobox-below | ||
:cssText(args.belowstyle) | :cssText(args.belowstyle) | ||
خط ۱۹۰: | خط ۲۰۹: | ||
if subheaderArgs.data and | if subheaderArgs.data and | ||
subheaderArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then | subheaderArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then | ||
has_rows = true | |||
local row = root:tag('tr') | local row = root:tag('tr') | ||
row:addClass(subheaderArgs.rowclass) | row:addClass(subheaderArgs.rowclass) | ||
خط ۲۳۰: | خط ۲۵۰: | ||
if imageArgs.data and | if imageArgs.data and | ||
imageArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then | imageArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then | ||
has_rows = true | |||
local row = root:tag('tr') | local row = root:tag('tr') | ||
row | row:addClass(imageArgs.rowclass) | ||
local dataCell = row:tag('td') | local dataCell = row:tag('td') | ||
خط ۲۴۱: | خط ۲۶۰: | ||
:addClass('infobox-image') | :addClass('infobox-image') | ||
:addClass(imageArgs.class) | :addClass(imageArgs.class) | ||
:cssText(imageArgs.datastyle) | :cssText(imageArgs.datastyle) | ||
:wikitext(fixChildBoxes(imageArgs.data, 'td')) | :wikitext(fixChildBoxes(imageArgs.data, 'td')) | ||
خط ۳۳۰: | خط ۳۴۸: | ||
if not args.name then return end | if not args.name then return end | ||
has_rows = true | |||
root | root | ||
:tag('tr') | :tag('tr') | ||
خط ۳۳۵: | خط ۳۵۴: | ||
:attr('colspan', '2') | :attr('colspan', '2') | ||
:addClass('infobox-navbar') | :addClass('infobox-navbar') | ||
:wikitext(require('Module:Navbar')._navbar{ | :wikitext(require('Module:Navbar')._navbar{ | ||
args.name, | args.name, | ||
خط ۳۶۵: | خط ۳۸۳: | ||
if args.title then | if args.title then | ||
root:wikitext( | root:wikitext( | ||
'[[ | '[[Category:Pages using embedded infobox templates with the title parameter]]' | ||
) | ) | ||
end | end | ||
elseif #(getArgNums('data')) == 0 and mw.title.getCurrentTitle().namespace == 0 then | elseif #(getArgNums('data')) == 0 and mw.title.getCurrentTitle().namespace == 0 then | ||
root:wikitext('[[ | root:wikitext('[[Category:Articles using infobox templates with no data rows]]') | ||
end | end | ||
end | end | ||
خط ۳۷۶: | خط ۳۹۴: | ||
Loads the templatestyles for the infobox. | Loads the templatestyles for the infobox. | ||
TODO: | TODO: FINISH loading base templatestyles here rather than in | ||
MediaWiki:Common.css. There are 4-5000 pages with 'raw' infobox tables. | |||
tables. See [[Mediawiki_talk:Common.css/to_do#Infobox]] and/or come help :). | See [[Mediawiki_talk:Common.css/to_do#Infobox]] and/or come help :). | ||
When we do this we should clean up the inline CSS below too. | When we do this we should clean up the inline CSS below too. | ||
Will have to do some bizarre conversion category like with sidebar. | Will have to do some bizarre conversion category like with sidebar. | ||
]=] | ]=] | ||
local function loadTemplateStyles() | local function loadTemplateStyles() | ||
local frame = mw.getCurrentFrame() | local frame = mw.getCurrentFrame() | ||
-- See function description | -- See function description | ||
local base_templatestyles = frame:extensionTag{ | |||
name = 'templatestyles', args = { src = 'Module:Infobox/styles.css' } | |||
} | |||
local templatestyles = '' | local templatestyles = '' | ||
if args['templatestyles'] then templatestyles = frame:extensionTag{ | if args['templatestyles'] then templatestyles = frame:extensionTag{ | ||
خط ۴۱۰: | خط ۴۲۸: | ||
return table.concat({ | return table.concat({ | ||
base_templatestyles, -- see function description | |||
templatestyles, | templatestyles, | ||
child_templatestyles, | child_templatestyles, | ||
grandchild_templatestyles | grandchild_templatestyles | ||
}) | }) | ||
end | |||
-- common functions between the child and non child cases | |||
local function structure_infobox_common() | |||
renderSubheaders() | |||
renderImages() | |||
preprocessRows() | |||
renderRows() | |||
renderBelowRow() | |||
renderNavBar() | |||
renderItalicTitle() | |||
renderEmptyRowCategories() | |||
renderTrackingCategories() | |||
cleanInfobox() | |||
end | end | ||
خط ۴۳۸: | خط ۴۶۹: | ||
:wikitext(args.title) | :wikitext(args.title) | ||
end | end | ||
structure_infobox_common() | |||
return loadTemplateStyles() .. root | |||
return loadTemplateStyles() .. | |||
end | end | ||