יחידה:תבנית מידע/אישיות: הבדלים בין גרסאות בדף
מראה
מאין תקציר עריכה |
מאין תקציר עריכה |
||
| שורה 38: | שורה 38: | ||
end | end | ||
function | function addPersonDetails(frame, infoObj) | ||
local templateArgs = frame:getParent().args | local templateArgs = frame:getParent().args | ||
local usingBirthWikidata = false | local usingBirthWikidata = false | ||
local usingDeathWikidata = false | local usingDeathWikidata = false | ||
| שורה 84: | שורה 81: | ||
}) | }) | ||
end | end | ||
if usingBirthWikidata or usingDeathWikidata then | |||
infoObj.args.usingWikidata = true | |||
infoObj | end | ||
infoObj | end | ||
function infobox(frame) | |||
local infoObj = Infobox:new() | |||
infoObj:parseArgs(frame) | |||
addPersonDetails(frame, infoObj) | |||
return infoObj:render() | return infoObj:render() | ||
end | end | ||
| שורה 95: | שורה 96: | ||
return { | return { | ||
['מידע']=infobox | ['מידע']=infobox, | ||
['addPersonDetails'] = addPersonDetails | |||
} | } | ||
גרסה מ־17:08, 4 בנובמבר 2017
יחידה זו מרחיבה את יחידה:תבנית מידע עבור תבניות מידע של אישים. היחידה כוללת תמיכה אוטומטית בפרמטרים האופיינים לאישים כדוגמת תאריכים ומקומות של לידה/פטירה, יחד עם ציון גיל.
local Infobox = require('Module:תבנית מידע').Infobox
local LocationAndCountry = require('Module:LocationAndCountry')
local PropertyLink = require('Module:PropertyLink')
local ageModule = require('Module:גיל לערכי אישים')
function getEventDetails(birthDate, deathDate, eventPlace, propDate, propPlace, isBirth, usingWikidata)
local entityId = mw.wikibase.getEntityIdForCurrentPage()
local eventDate
if isBirth then
eventDate = birthDate
if (deathDate==nil or deathDate=='') and entityId then
eventDate = eventDate .. ageModule.ageCalc(birthDate, deathDate, true, false, true)
end
else
local deathAge = ageModule.ageCalc(birthDate, deathDate, false, false, true) or ''
eventDate = deathDate .. deathAge
end
local formattedEvent = eventDate
if (eventPlace==nil or eventPlace=='') and entityId then
local success, res = pcall(LocationAndCountry.displayFromParams, propPlace, entityId, propDate , 1)
if success and res and #res>0 then
mw.log(res)
usingWikidata = true
eventPlace = res
end
end
if eventPlace~='' and eventPlace~=nil then
formattedEvent = formattedEvent..'<br/>' ..eventPlace
end
if usingWikidata and entityId then
formattedEvent = formattedEvent .. ' [[File:Blue pencil RTL.svg|15px|link=https://www.wikidata.org/wiki/'..entityId.. '?uselang=he#P569|עריכת הנתון בוויקינתונים]]'
end
return formattedEvent
end
function addPersonDetails(frame, infoObj)
local templateArgs = frame:getParent().args
local usingBirthWikidata = false
local usingDeathWikidata = false
if templateArgs['תאריך לידה']==nil or templateArgs['תאריך לידה']=='' then
templateArgs['תאריך לידה'] = PropertyLink.getProperty( 'P569' )
if templateArgs['תאריך לידה'] then
usingBirthWikidata = true
end
end
if templateArgs['תאריך פטירה']==nil or templateArgs['תאריך פטירה']=='' then
templateArgs['תאריך פטירה'] = PropertyLink.getProperty( 'P570' )
if templateArgs['תאריך פטירה'] then
usingDeathWikidata = true
end
end
if templateArgs['תאריך לידה']~=nil and templateArgs['תאריך לידה']~='' then
local birthDetails = getEventDetails(templateArgs['תאריך לידה'], templateArgs['תאריך פטירה'], templateArgs['מקום לידה'], 'P569', 'P19', true, usingBirthWikidata)
table.insert(infoObj.templateStructure, 1, {
label='לידה',
data=birthDetails
})
end
if templateArgs['תאריך פטירה']~=nil and templateArgs['תאריך פטירה']~='' then
local deathDetails = getEventDetails(templateArgs['תאריך לידה'], templateArgs['תאריך פטירה'], templateArgs['מקום פטירה'], 'P570', 'P20', false, usingDeathWikidata)
table.insert(infoObj.templateStructure, 2, {
label='פטירה',
data=deathDetails
})
end
if infoObj.isSelfUse then
table.insert(infoObj.templateStructure, 1, {
label='לידה',
data='{{{תאריך לידה}}}<br/>{{{מקום לידה}}}'
})
table.insert(infoObj.templateStructure, 2, {
label='פטירה',
data='{{{תאריך פטירה}}} <br/>{{{מקום פטירה}}}'
})
end
if usingBirthWikidata or usingDeathWikidata then
infoObj.args.usingWikidata = true
end
end
function infobox(frame)
local infoObj = Infobox:new()
infoObj:parseArgs(frame)
addPersonDetails(frame, infoObj)
return infoObj:render()
end
return {
['מידע']=infobox,
['addPersonDetails'] = addPersonDetails
}