پودمان:PersonInfobox
ظاهر
توضیحات این پودمان میتواند در پودمان:PersonInfobox/توضیحات قرار گیرد.
local p = {}
-------------------------------------------------------
-- ARGUMENTS
-------------------------------------------------------
local function normalize(value)
if not value then
return nil
end
value = mw.text.trim(tostring(value))
if value == "" then
return nil
end
value = mw.ustring.gsub(value, "[\u200C\u200D]", "")
return value
end
local function getArgs(frame)
local args = {}
local parent = frame:getParent()
if parent then
for k, v in pairs(parent.args) do
args[k] = normalize(v)
end
end
for k, v in pairs(frame.args) do
args[k] = normalize(v)
end
return args
end
local function getArg(args, ...)
for _, key in ipairs({...}) do
if args[key] then
return args[key]
end
end
return nil
end
-------------------------------------------------------
-- HTML HELPERS
-------------------------------------------------------
local function addRow(box, label, value)
if not value then
return
end
local row = box:tag("tr")
row
:tag("th")
:wikitext(label)
row
:tag("td")
:wikitext(value)
end
local function addHeader(box, title)
local row = box:tag("tr")
row
:tag("th")
:attr("colspan", "2")
:css({
["text-align"] = "center",
["background"] = "#2C5F9E",
["color"] = "#FFFFFF"
})
:wikitext(title)
end
-------------------------------------------------------
-- IMAGE
-------------------------------------------------------
local function addImage(box, args)
local image = getArg(
args,
"image",
"تصویر",
"پرونده"
)
if not image then
return
end
local row = box:tag("tr")
row
:tag("td")
:attr("colspan", "2")
:css({
["text-align"] = "center"
})
:wikitext(
"[[File:" .. image .. "|250px]]"
)
local caption = getArg(
args,
"caption",
"توضیح تصویر",
"زیرنویس"
)
if caption then
local c = box:tag("tr")
c
:tag("td")
:attr("colspan","2")
:css({
["text-align"]="center",
["font-size"]="90%"
})
:wikitext(caption)
end
end
-------------------------------------------------------
-- MAIN
-------------------------------------------------------
local function render(args)
local box =
mw.html.create("table")
:addClass("infobox")
:addClass("person-infobox")
---------------------------------------------------
-- TITLE
---------------------------------------------------
local title = getArg(
args,
"name",
"نام"
)
or mw.title.getCurrentTitle().text
box:tag("tr")
:tag("th")
:attr("colspan","2")
:css({
["background"]="#2C5F9E",
["color"]="#FFFFFF",
["text-align"]="center",
["font-size"]="120%",
padding="8px"
})
:wikitext(title)
---------------------------------------------------
-- IMAGE
---------------------------------------------------
addImage(box,args)
---------------------------------------------------
-- PERSONAL INFO
---------------------------------------------------
addHeader(box,"اطلاعات شخصی")
addRow(
box,
"نام کامل",
getArg(args,
"full_name",
"fullname",
"نام کامل"
)
)
addRow(
box,
"زاده",
getArg(args,
"birth_date",
"زادروز",
"تاریخ تولد"
)
)
addRow(
box,
"زادگاه",
getArg(args,
"birth_place",
"زادگاه",
"محل تولد"
)
)
addRow(
box,
"درگذشته",
getArg(args,
"death_date",
"تاریخ درگذشت"
)
)
addRow(
box,
"ملیت",
getArg(args,
"nationality",
"ملیت"
)
)
---------------------------------------------------
-- SPORT INFO (temporary)
---------------------------------------------------
addHeader(box,"اطلاعات ورزشی")
addRow(
box,
"ورزش",
getArg(args,
"sport",
"ورزش"
)
)
addRow(
box,
"باشگاه",
getArg(args,
"club",
"باشگاه"
)
)
addRow(
box,
"تیم",
getArg(args,
"team",
"تیم"
)
)
return tostring(box)
end
-------------------------------------------------------
-- EXPORT
-------------------------------------------------------
function p.main(frame)
return render(
getArgs(frame)
)
end
return p