۲۸٬۸۸۴
ویرایش
جز (۱ نسخه واردشده) |
بدون خلاصۀ ویرایش |
||
خط ۴: | خط ۴: | ||
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*رده%s*:[^]]*]]' | ||
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 | ||
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) | ||
if | if s:match(marker) then | ||
s = mw.ustring.gsub(s, marker .. '%s*' .. marker, '') | 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, '([\r\n]|-[^\r\n]*[\r\n])%s*' .. marker, '%1') | ||
خط ۶۵: | خط ۵۶: | ||
else | else | ||
return sval | return sval | ||
end | end | ||
end | end | ||
خط ۹۹: | خط ۸۲: | ||
local nums = {} | local nums = {} | ||
for k, v in pairs(args) do | for k, v in pairs(args) do | ||
local num = | local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$') | ||
if num then table.insert(nums, tonumber(num)) end | if num then table.insert(nums, tonumber(num)) end | ||
end | end | ||
خط ۱۱۱: | خط ۹۴: | ||
if rowArgs.header and rowArgs.header ~= '_BLANK_' then | if rowArgs.header and rowArgs.header ~= '_BLANK_' then | ||
root | root | ||
:tag('tr') | :tag('tr') | ||
خط ۱۲۱: | خط ۱۰۳: | ||
:addClass(rowArgs.class) | :addClass(rowArgs.class) | ||
:addClass(args.headerclass) | :addClass(args.headerclass) | ||
:css('text-align', 'center') | |||
-- @deprecated next; target .infobox-<name> .infobox-header | -- @deprecated next; target .infobox-<name> .infobox-header | ||
:cssText(args.headerstyle) | :cssText(args.headerstyle) | ||
خط ۱۳۱: | خط ۱۱۴: | ||
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 | ||
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 | ||
root | root | ||
:tag('caption') | :tag('caption') | ||
خط ۱۷۹: | خط ۱۶۰: | ||
if not args.above then return end | if not args.above then return end | ||
root | root | ||
:tag('tr') | :tag('tr') | ||
خط ۱۸۶: | خط ۱۶۶: | ||
:addClass('infobox-above') | :addClass('infobox-above') | ||
:addClass(args.aboveclass) | :addClass(args.aboveclass) | ||
:css('text-align', 'center') | |||
-- @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 | ||
root | root | ||
:tag('tr') | :tag('tr') | ||
خط ۲۰۱: | خط ۱۸۱: | ||
:addClass('infobox-below') | :addClass('infobox-below') | ||
:addClass(args.belowclass) | :addClass(args.belowclass) | ||
:css('text-align', 'center') | |||
-- @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 | ||
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 | ||
local row = root:tag('tr') | local row = root:tag('tr') | ||
row:addClass(imageArgs.rowclass) | row | ||
:addClass(imageArgs.rowclass) | |||
:css('text-align', 'center') | |||
local dataCell = row:tag('td') | local dataCell = row:tag('td') | ||
خط ۲۶۰: | خط ۲۴۱: | ||
:addClass('infobox-image') | :addClass('infobox-image') | ||
:addClass(imageArgs.class) | :addClass(imageArgs.class) | ||
:css('text-align', 'center') | |||
: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 | ||
root | root | ||
:tag('tr') | :tag('tr') | ||
خط ۳۵۴: | خط ۳۳۵: | ||
:attr('colspan', '2') | :attr('colspan', '2') | ||
:addClass('infobox-navbar') | :addClass('infobox-navbar') | ||
:css('align', 'center') | |||
:wikitext(require('Module:Navbar')._navbar{ | :wikitext(require('Module:Navbar')._navbar{ | ||
args.name, | args.name, | ||
خط ۳۹۴: | خط ۳۷۶: | ||
Loads the templatestyles for the infobox. | Loads the templatestyles for the infobox. | ||
TODO: | TODO: load base templatestyles here rather than in MediaWiki:Common.css | ||
MediaWiki:Common.css | We aren't doing it here yet because there are 4-5000 pages with 'raw' infobox | ||
See [[Mediawiki_talk:Common.css/to_do#Infobox]] and/or come help :). | tables. 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 | |||
-- local base_templatestyles = frame:extensionTag{ | |||
-- name = 'templatestyles', args = { src = cfg.i18n.templatestyles } | |||
-- } | |||
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 | end | ||
خط ۴۶۹: | خط ۴۳۸: | ||
:wikitext(args.title) | :wikitext(args.title) | ||
end | end | ||
renderSubheaders() | |||
return loadTemplateStyles() .. root | renderImages() | ||
preprocessRows() | |||
renderRows() | |||
renderBelowRow() | |||
renderNavBar() | |||
renderItalicTitle() | |||
renderEmptyRowCategories() | |||
renderTrackingCategories() | |||
return loadTemplateStyles() .. tostring(root) | |||
end | end | ||
خط ۴۹۱: | خط ۴۶۹: | ||
local function preprocessArgs(prefixTable, step) | local function preprocessArgs(prefixTable, step) | ||
if type(prefixTable) ~= 'table' then | if type(prefixTable) ~= 'table' then | ||
error(" | error("Non-table value detected for the prefix table", 2) | ||
end | end | ||
if type(step) ~= 'number' then | if type(step) ~= 'number' then | ||
error(" | error("Invalid step value detected", 2) | ||
end | end | ||
خط ۵۰۱: | خط ۴۷۹: | ||
if type(v) ~= 'table' or type(v.prefix) ~= "string" or | if type(v) ~= 'table' or type(v.prefix) ~= "string" or | ||
(v.depend and type(v.depend) ~= 'table') then | (v.depend and type(v.depend) ~= 'table') then | ||
error(' | error('Invalid input detected to preprocessArgs prefix table', 2) | ||
end | end | ||
preprocessSingleArg(v.prefix) | preprocessSingleArg(v.prefix) | ||
خط ۵۰۹: | خط ۴۸۷: | ||
for j, dependValue in ipairs(v.depend) do | for j, dependValue in ipairs(v.depend) do | ||
if type(dependValue) ~= 'string' then | if type(dependValue) ~= 'string' then | ||
error(' | error('Invalid "depend" parameter value detected in preprocessArgs') | ||
end | end | ||
preprocessSingleArg(dependValue) | preprocessSingleArg(dependValue) |