לדלג לתוכן

יחידה:תבנית מידע/אישיות: הבדלים בין גרסאות בדף

מתוך צפונות ויקי
מאין תקציר עריכה
מאין תקציר עריכה
שורה 4: שורה 4:
local ageModule = require('Module:גיל לערכי אישים')
local ageModule = require('Module:גיל לערכי אישים')


function getEventDetails(birthDate, deathDate, eventPlace, propDate, propPlace, isBirth, usingWikidata)
function getEventDetails(date, hebDate, eventPlace, propDate, propPlace, age, usingWikidata)
local entityId = mw.wikibase.getEntityIdForCurrentPage()
local entityId = mw.wikibase.getEntityIdForCurrentPage()
local eventDate
age = age or ''
if isBirth then
local formattedEvent = date .. age
eventDate = birthDate
 
if (deathDate==nil or deathDate=='') then
if hebDate~=nil and hebDate~='' then  
eventDate = eventDate .. ageModule.ageCalc(birthDate, deathDate, true, false, true)
formattedEvent = formattedEvent ..'<br/>' ..hebDate
end
else
local deathAge =  ageModule.ageCalc(birthDate, deathDate, false, false, true) or ''
eventDate = deathDate .. deathAge
end
end
if (eventPlace == nil or eventPlace == '') and entityId then
local formattedEvent = eventDate
if (eventPlace==nil or eventPlace=='') and entityId then
local success, res  = pcall(LocationAndCountry.displayFromParams, propPlace, entityId, propDate , 1)
local success, res  = pcall(LocationAndCountry.displayFromParams, propPlace, entityId, propDate , 1)
if success and res and #res>0 then
if success and res and #res>0 then
mw.log(res)
usingWikidata = true
usingWikidata = true
eventPlace = res
eventPlace = res
שורה 42: שורה 35:
local usingBirthWikidata = false
local usingBirthWikidata = false
local usingDeathWikidata = false
local usingDeathWikidata = false
-- fill birth/death dates from wikidata is missing
if templateArgs['תאריך לידה']==nil or templateArgs['תאריך לידה']=='' then
if templateArgs['תאריך לידה']==nil or templateArgs['תאריך לידה']=='' then
templateArgs['תאריך לידה'] = PropertyLink.getProperty( 'P569' )
templateArgs['תאריך לידה'] = PropertyLink.getProperty( 'P569' )
שורה 54: שורה 49:
end
end
end
end
 
if templateArgs['תאריך לידה']~=nil and templateArgs['תאריך לידה']~='' and templateArgs['תאריך לידה']~='-' then
if templateArgs['תאריך לידה']~=nil and templateArgs['תאריך לידה']~='' and templateArgs['תאריך לידה']~='-' then
local birthDetails = getEventDetails(templateArgs['תאריך לידה'], templateArgs['תאריך פטירה'], templateArgs['מקום לידה'], 'P569', 'P19', true, usingBirthWikidata)
local age = nil
birthDate = templateArgs['תאריך לידה']
if (deathDate==nil or deathDate=='') then
age = ageModule.ageCalc(birthDate, nil, true, false, true) or ''
end
local birthDetails = getEventDetails(templateArgs['תאריך לידה'], templateArgs['תאריך לידה עברי'], templateArgs['מקום לידה'], 'P569', 'P19', age, usingBirthWikidata)
table.insert(infoObj.templateStructure, 1, {
table.insert(infoObj.templateStructure, 1, {
label='לידה',
label='לידה',
שורה 64: שורה 64:
if templateArgs['תאריך פטירה']~=nil and templateArgs['תאריך פטירה']~='' and templateArgs['תאריך פטירה']~='-' then
if templateArgs['תאריך פטירה']~=nil and templateArgs['תאריך פטירה']~='' and templateArgs['תאריך פטירה']~='-' then
local deathDetails = getEventDetails(templateArgs['תאריך לידה'], templateArgs['תאריך פטירה'], templateArgs['מקום פטירה'], 'P570', 'P20', false, usingDeathWikidata)
deathDate = templateArgs['תאריך פטירה']
local age =  ageModule.ageCalc(birthDate, deathDate, false, false, true) or ''
local deathDetails = getEventDetails(templateArgs['תאריך פטירה'], templateArgs['תאריך פטירה עברי'], templateArgs['מקום פטירה'], 'P570', 'P20', age, usingDeathWikidata)
table.insert(infoObj.templateStructure, 2, {
table.insert(infoObj.templateStructure, 2, {
label='פטירה',
label='פטירה',

גרסה מ־16:51, 14 באפריל 2018

יחידה זו מרחיבה את יחידה:תבנית מידע עבור תבניות מידע של אישים. היחידה כוללת תמיכה אוטומטית בפרמטרים האופיינים לאישים כדוגמת תאריכים ומקומות של לידה/פטירה, יחד עם ציון גיל.


local Infobox = require('Module:תבנית מידע').Infobox
local LocationAndCountry = require('Module:LocationAndCountry')
local PropertyLink = require('Module:PropertyLink')
local ageModule = require('Module:גיל לערכי אישים')

function getEventDetails(date, hebDate, eventPlace, propDate, propPlace, age, usingWikidata)
	local entityId = mw.wikibase.getEntityIdForCurrentPage()
	age = age or ''
	local formattedEvent = date .. age

	if hebDate~=nil and hebDate~='' then 
		formattedEvent = formattedEvent ..'<br/>' ..hebDate
	end
	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
			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

	-- fill birth/death dates from wikidata is missing
	if templateArgs['תאריך לידה']==nil or templateArgs['תאריך לידה']=='' then
		templateArgs['תאריך לידה'] = PropertyLink.getProperty( 'P569' )
		if templateArgs['תאריך לידה'] and #templateArgs['תאריך לידה']>0 then
			usingBirthWikidata = true
		end
	end
	if templateArgs['תאריך פטירה']==nil or templateArgs['תאריך פטירה']=='' then
		templateArgs['תאריך פטירה'] = PropertyLink.getProperty( 'P570' )
		if templateArgs['תאריך פטירה'] and #templateArgs['תאריך פטירה'] >0 then
			usingDeathWikidata = true
		end
	end

	if templateArgs['תאריך לידה']~=nil and templateArgs['תאריך לידה']~='' and templateArgs['תאריך לידה']~='-' then
		local age = nil
		birthDate = templateArgs['תאריך לידה']
		if (deathDate==nil or deathDate=='') then
			age = ageModule.ageCalc(birthDate, nil, true, false, true) or ''
		end
		local birthDetails = getEventDetails(templateArgs['תאריך לידה'], templateArgs['תאריך לידה עברי'], templateArgs['מקום לידה'], 'P569', 'P19', age, usingBirthWikidata)
			table.insert(infoObj.templateStructure, 1, {
			label='לידה',
			data=birthDetails
		})
	end
	
	if templateArgs['תאריך פטירה']~=nil and templateArgs['תאריך פטירה']~='' and templateArgs['תאריך פטירה']~='-' then
		deathDate = templateArgs['תאריך פטירה']
		local age =  ageModule.ageCalc(birthDate, deathDate, false, false, true) or ''
		local deathDetails = getEventDetails(templateArgs['תאריך פטירה'], templateArgs['תאריך פטירה עברי'], templateArgs['מקום פטירה'], 'P570', 'P20', age, 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)
	
	if infoObj.args.title~='-' then
		addPersonDetails(frame, infoObj)
	end
	return infoObj:render()
end


return 	{
	['מידע']=infobox,
	['addPersonDetails'] = addPersonDetails
}