پودمان: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*رده%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)
:css('text-align', 'center')
-- @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, ''
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)
: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


has_rows = true
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
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)
: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


has_rows = true
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,
خط ۳۶۵: خط ۳۸۳:
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: load base templatestyles here rather than in MediaWiki:Common.css
TODO: FINISH loading base templatestyles here rather than in
We aren't doing it here yet because there are 4-5000 pages with 'raw' infobox
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{
local base_templatestyles = frame:extensionTag{
-- name = 'templatestyles', args = { src = cfg.i18n.templatestyles }
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
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()
renderSubheaders()
renderImages()
return loadTemplateStyles() .. root
preprocessRows()
renderRows()
renderBelowRow()
renderNavBar()
renderItalicTitle()
renderEmptyRowCategories()
renderTrackingCategories()
 
return loadTemplateStyles() .. tostring(root)
end
end


کاربر ناشناس