پودمان:Infobox football biography: تفاوت میان نسخهها
ظاهر
جزبدون خلاصۀ ویرایش |
جزبدون خلاصۀ ویرایش |
||
| (۶ نسخهٔ میانیِ ایجادشده توسط همین کاربر نشان داده نشد) | |||
| خط ۳: | خط ۳: | ||
local function isSet(v) | local function isSet(v) | ||
if v == nil then return false end | if v == nil or v == false then return false end | ||
return mw.text.trim(tostring(v)) ~= '' | return mw.text.trim(tostring(v)) ~= '' | ||
end | end | ||
| خط ۴۰: | خط ۴۰: | ||
-- عنوان | -- عنوان | ||
local title = firstArg(args, 'name', 'playername') or mw.title.getCurrentTitle().text | local title = firstArg(args, 'name', 'playername') or mw.title.getCurrentTitle().text | ||
root:tag('caption'):addClass('infobox-title'):wikitext(title) | root:tag('caption') | ||
:addClass('infobox-title') | |||
:css('text-align', 'center') | |||
:css('font-weight', 'bold') | |||
:wikitext(title) | |||
-- تصویر | -- تصویر | ||
if isSet(args.image) then | if isSet(args.image) then | ||
local imgCell = root:tag('tr'):tag('td'):attr('colspan', '4'):addClass('infobox-image'):wikitext( | local img = args.image | ||
if not img:match('^%[%[File:') and not img:match('^<') then | |||
img = '[[File:' .. img .. '|220px]]' | |||
end | |||
local imgCell = root:tag('tr'):tag('td') | |||
:attr('colspan', '4') | |||
:addClass('infobox-image') | |||
:css('text-align', 'center') | |||
:wikitext(img) | |||
if isSet(args.caption) then | if isSet(args.caption) then | ||
imgCell:tag('div'):addClass('infobox-caption'):wikitext(args.caption) | imgCell:tag('div') | ||
:addClass('infobox-caption') | |||
:css('text-align', 'center') | |||
:wikitext(args.caption) | |||
end | end | ||
end | end | ||
-- هدر با رنگ و وسطچین | |||
local headerCss = 'background-color: #b0c4de; text-align: center; font-weight: bold; padding: 4px;' | |||
-- اطلاعات شخصی | -- اطلاعات شخصی | ||
root:tag('tr'):tag('th'):attr('colspan', '4'):addClass('infobox-header'):wikitext('اطلاعات شخصی') | root:tag('tr'):tag('th') | ||
:attr('colspan', '4') | |||
:addClass('infobox-header') | |||
:cssText(headerCss) | |||
:wikitext('اطلاعات شخصی') | |||
addRow(root, 'نام کامل', firstArg(args, 'fullname', 'full_name', 'نام کامل')) | addRow(root, 'نام کامل', firstArg(args, 'fullname', 'full_name', 'نام کامل')) | ||
addRow(root, 'زادروز', firstArg(args, 'birth_date', 'dateofbirth', 'زادروز')) | addRow(root, 'زادروز', firstArg(args, 'birth_date', 'dateofbirth', 'زادروز')) | ||
addRow(root, 'زادگاه', firstArg(args, 'birth_place', 'cityofbirth', 'زادگاه')) | addRow(root, 'زادگاه', firstArg(args, 'birth_place', 'cityofbirth', 'زادگاه')) | ||
addRow(root, 'تاریخ مرگ', firstArg(args, 'death_date', 'dateofdeath', 'تاریخ مرگ')) | |||
addRow(root, 'محل مرگ', firstArg(args, 'death_place', 'محل مرگ')) | |||
addRow(root, 'قد', firstArg(args, 'height', 'قد')) | addRow(root, 'قد', firstArg(args, 'height', 'قد')) | ||
addRow(root, 'پست', firstArg(args, 'position', 'پست')) | addRow(root, 'پست', firstArg(args, 'position', 'پست')) | ||
| خط ۶۱: | خط ۸۶: | ||
local curr = firstArg(args, 'currentclub', 'باشگاه کنونی') | local curr = firstArg(args, 'currentclub', 'باشگاه کنونی') | ||
if isSet(curr) then | if isSet(curr) then | ||
root:tag('tr'):tag('th'):attr('colspan', '4'):addClass('infobox-header'):wikitext('اطلاعات باشگاهی') | root:tag('tr'):tag('th') | ||
:attr('colspan', '4') | |||
:addClass('infobox-header') | |||
:cssText(headerCss) | |||
:wikitext('اطلاعات باشگاهی') | |||
addRow(root, 'باشگاه کنونی', curr) | addRow(root, 'باشگاه کنونی', curr) | ||
addRow(root, 'شمارهٔ پیراهن', firstArg(args, 'clubnumber', 'شمارهٔ پیراهن')) | |||
end | end | ||
-- | -- جوانان | ||
local i = 1 | local i = 1 | ||
local header = false | local header = false | ||
| خط ۷۲: | خط ۱۰۲: | ||
if not isSet(club) then break end | if not isSet(club) then break end | ||
if not header then | if not header then | ||
root:tag('tr'):tag('th'):attr('colspan', '4'):addClass('infobox-header'):wikitext('باشگاههای جوانان') | root:tag('tr'):tag('th') | ||
:attr('colspan', '4') | |||
:addClass('infobox-header') | |||
:cssText(headerCss) | |||
:wikitext('باشگاههای جوانان') | |||
header = true | header = true | ||
end | end | ||
| خط ۷۹: | خط ۱۱۳: | ||
end | end | ||
-- | -- حرفهای | ||
i = 1 | i = 1 | ||
header = false | header = false | ||
| خط ۸۶: | خط ۱۲۰: | ||
if not isSet(club) then break end | if not isSet(club) then break end | ||
if not header then | if not header then | ||
root:tag('tr'):tag('th'):attr('colspan', '4'):addClass('infobox-header'):wikitext('باشگاههای حرفهای') | root:tag('tr'):tag('th') | ||
:attr('colspan', '4') | |||
:addClass('infobox-header') | |||
:cssText(headerCss) | |||
:wikitext('باشگاههای حرفهای') | |||
header = true | header = true | ||
end | end | ||
| خط ۹۵: | خط ۱۳۳: | ||
end | end | ||
if isSet(args.totalcaps) or isSet(args.totalgoals) then | if isSet(args.totalcaps) or isSet(args.totalgoals) then | ||
addMultiDataRow(root, 'مجموع', '', args.totalcaps, isSet(args.totalgoals) and '('..args.totalgoals..')' or nil) | addMultiDataRow(root, 'مجموع', '', args.totalcaps, isSet(args.totalgoals) and '('..args.totalgoals..')' or nil) | ||
end | |||
-- تیم ملی | |||
i = 1 | |||
header = false | |||
while i <= 8 do | |||
local team = args['nationalteam' .. i] or (i == 1 and args.nationalteam) | |||
if not isSet(team) then break end | |||
if not header then | |||
root:tag('tr'):tag('th') | |||
:attr('colspan', '4') | |||
:addClass('infobox-header') | |||
:cssText(headerCss) | |||
:wikitext('تیم ملی') | |||
header = true | |||
end | |||
local years = args['nationalyears' .. i] | |||
local caps = args['nationalcaps' .. i] or args['nationalcaps(goals)' .. i] | |||
local goals = args['nationalgoals' .. i] | |||
addMultiDataRow(root, years or '', team, caps, isSet(goals) and '('..goals..')' or nil) | |||
i = i + 1 | |||
end | |||
-- مربیگری | |||
i = 1 | |||
header = false | |||
while i <= 10 do | |||
local club = args['managerclubs' .. i] | |||
if not isSet(club) then break end | |||
if not header then | |||
root:tag('tr'):tag('th') | |||
:attr('colspan', '4') | |||
:addClass('infobox-header') | |||
:cssText(headerCss) | |||
:wikitext('دوران مربیگری') | |||
header = true | |||
end | |||
local years = args['manageryears' .. i] | |||
addRow(root, years or '', club) | |||
i = i + 1 | |||
end | end | ||
| خط ۱۰۳: | خط ۱۸۰: | ||
local footer = {} | local footer = {} | ||
if isSet(args.pcupdate) then | if isSet(args.pcupdate) then | ||
table.insert(footer, "* آمار بهروزرسانی شده در تاریخ " .. args.pcupdate) | table.insert(footer, "* آمار باشگاهی بهروزرسانی شده در تاریخ " .. args.pcupdate) | ||
end | |||
if isSet(args.ntupdate) then | |||
table.insert(footer, "‡ آمار ملی بهروزرسانی شده در تاریخ " .. args.ntupdate) | |||
end | end | ||
if #footer > 0 then | if #footer > 0 then | ||
root:tag('tr'):tag('td'):attr('colspan', '4'):addClass('infobox-below'):css('font-size', '82%'):wikitext(table.concat(footer, '<br>')) | root:tag('tr'):tag('td') | ||
:attr('colspan', '4') | |||
:addClass('infobox-below') | |||
:css('font-size', '82%') | |||
:wikitext(table.concat(footer, '<br>')) | |||
end | end | ||
نسخهٔ کنونی تا ۷ ژوئیهٔ ۲۰۲۶، ساعت ۲۰:۲۲
توضیحات این پودمان میتواند در پودمان:Infobox football biography/توضیحات قرار گیرد.
local p = {}
local getArgs = require('Module:Arguments').getArgs
local function isSet(v)
if v == nil or v == false then return false end
return mw.text.trim(tostring(v)) ~= ''
end
local function firstArg(args, ...)
for i = 1, select('#', ...) do
local key = select(i, ...)
if isSet(args[key]) then return args[key] end
end
return nil
end
local function addRow(root, label, data)
if not isSet(data) then return end
local row = root:tag('tr')
row:tag('th'):attr('scope', 'row'):addClass('infobox-label'):wikitext(label)
row:tag('td'):attr('colspan', '3'):addClass('infobox-data'):wikitext(data)
end
local function addMultiDataRow(root, label, dataa, datab, datac)
if not isSet(dataa) and not isSet(datab) and not isSet(datac) then return end
local row = root:tag('tr')
row:tag('th'):attr('scope', 'row'):addClass('infobox-label'):wikitext(label)
row:tag('td'):addClass('infobox-data infobox-data-a'):wikitext(isSet(dataa) and dataa or '')
if isSet(datab) then row:tag('td'):addClass('infobox-data infobox-data-b'):wikitext(datab) end
if isSet(datac) then row:tag('td'):addClass('infobox-data infobox-data-c'):wikitext(datac) end
end
function p.main(frame)
local args = getArgs(frame)
local root = mw.html.create('table')
:addClass('infobox')
:addClass(args.child == 'yes' and 'infobox-subbox' or nil)
:cssText(args.bodystyle or 'width: 22em; line-height: 1.2em;')
-- عنوان
local title = firstArg(args, 'name', 'playername') or mw.title.getCurrentTitle().text
root:tag('caption')
:addClass('infobox-title')
:css('text-align', 'center')
:css('font-weight', 'bold')
:wikitext(title)
-- تصویر
if isSet(args.image) then
local img = args.image
if not img:match('^%[%[File:') and not img:match('^<') then
img = '[[File:' .. img .. '|220px]]'
end
local imgCell = root:tag('tr'):tag('td')
:attr('colspan', '4')
:addClass('infobox-image')
:css('text-align', 'center')
:wikitext(img)
if isSet(args.caption) then
imgCell:tag('div')
:addClass('infobox-caption')
:css('text-align', 'center')
:wikitext(args.caption)
end
end
-- هدر با رنگ و وسطچین
local headerCss = 'background-color: #b0c4de; text-align: center; font-weight: bold; padding: 4px;'
-- اطلاعات شخصی
root:tag('tr'):tag('th')
:attr('colspan', '4')
:addClass('infobox-header')
:cssText(headerCss)
:wikitext('اطلاعات شخصی')
addRow(root, 'نام کامل', firstArg(args, 'fullname', 'full_name', 'نام کامل'))
addRow(root, 'زادروز', firstArg(args, 'birth_date', 'dateofbirth', 'زادروز'))
addRow(root, 'زادگاه', firstArg(args, 'birth_place', 'cityofbirth', 'زادگاه'))
addRow(root, 'تاریخ مرگ', firstArg(args, 'death_date', 'dateofdeath', 'تاریخ مرگ'))
addRow(root, 'محل مرگ', firstArg(args, 'death_place', 'محل مرگ'))
addRow(root, 'قد', firstArg(args, 'height', 'قد'))
addRow(root, 'پست', firstArg(args, 'position', 'پست'))
-- باشگاه کنونی
local curr = firstArg(args, 'currentclub', 'باشگاه کنونی')
if isSet(curr) then
root:tag('tr'):tag('th')
:attr('colspan', '4')
:addClass('infobox-header')
:cssText(headerCss)
:wikitext('اطلاعات باشگاهی')
addRow(root, 'باشگاه کنونی', curr)
addRow(root, 'شمارهٔ پیراهن', firstArg(args, 'clubnumber', 'شمارهٔ پیراهن'))
end
-- جوانان
local i = 1
local header = false
while i <= 7 do
local club = args['youthclubs' .. i] or (i == 1 and args.youthclubs)
if not isSet(club) then break end
if not header then
root:tag('tr'):tag('th')
:attr('colspan', '4')
:addClass('infobox-header')
:cssText(headerCss)
:wikitext('باشگاههای جوانان')
header = true
end
addRow(root, args['youthyears' .. i] or '', club)
i = i + 1
end
-- حرفهای
i = 1
header = false
while i <= 10 do
local club = args['clubs' .. i] or (i == 1 and args.clubs)
if not isSet(club) then break end
if not header then
root:tag('tr'):tag('th')
:attr('colspan', '4')
:addClass('infobox-header')
:cssText(headerCss)
:wikitext('باشگاههای حرفهای')
header = true
end
local caps = args['caps' .. i] or args['caps(goals)' .. i]
local goals = args['goals' .. i]
addMultiDataRow(root, args['years' .. i] or '', club, caps, isSet(goals) and '('..goals..')' or nil)
i = i + 1
end
if isSet(args.totalcaps) or isSet(args.totalgoals) then
addMultiDataRow(root, 'مجموع', '', args.totalcaps, isSet(args.totalgoals) and '('..args.totalgoals..')' or nil)
end
-- تیم ملی
i = 1
header = false
while i <= 8 do
local team = args['nationalteam' .. i] or (i == 1 and args.nationalteam)
if not isSet(team) then break end
if not header then
root:tag('tr'):tag('th')
:attr('colspan', '4')
:addClass('infobox-header')
:cssText(headerCss)
:wikitext('تیم ملی')
header = true
end
local years = args['nationalyears' .. i]
local caps = args['nationalcaps' .. i] or args['nationalcaps(goals)' .. i]
local goals = args['nationalgoals' .. i]
addMultiDataRow(root, years or '', team, caps, isSet(goals) and '('..goals..')' or nil)
i = i + 1
end
-- مربیگری
i = 1
header = false
while i <= 10 do
local club = args['managerclubs' .. i]
if not isSet(club) then break end
if not header then
root:tag('tr'):tag('th')
:attr('colspan', '4')
:addClass('infobox-header')
:cssText(headerCss)
:wikitext('دوران مربیگری')
header = true
end
local years = args['manageryears' .. i]
addRow(root, years or '', club)
i = i + 1
end
-- پانویس
local footer = {}
if isSet(args.pcupdate) then
table.insert(footer, "* آمار باشگاهی بهروزرسانی شده در تاریخ " .. args.pcupdate)
end
if isSet(args.ntupdate) then
table.insert(footer, "‡ آمار ملی بهروزرسانی شده در تاریخ " .. args.ntupdate)
end
if #footer > 0 then
root:tag('tr'):tag('td')
:attr('colspan', '4')
:addClass('infobox-below')
:css('font-size', '82%')
:wikitext(table.concat(footer, '<br>'))
end
return tostring(root)
end
return p