وحدة:معلومات شخص/ملعب

من أرابيكا، الموسوعة الحرة
اذهب إلى التنقل اذهب إلى البحث

local p = {}

local wikidata = require('وحدة:Wikidata2').formatStatementsFromLua
local wl= require('وحدة:ص.م')
local Options = {}
local Genders = {}

local function getvalue(id,Property , pattern)
	local Params = {entityId =id ,property = Property , rank='all',addTrackingCat ='true',showlang ='true'}
	if pattern and pattern ~= "" then Params.pattern = pattern end
	
	if Property == 'P569' or Property == 'P570' then 
		Params["value-module"] = "wikidata2/P569-P570"
		Params["value-function"] = "getdate"
	end
	
	local value = wikidata(Params)
	--mw.log( "id: " .. id .. "value:" .. tostring(value) )
	return value
end

local function getvaluebothdates(id,Property)
	local value= wikidata({entityId =id , property = Property,bothdates='true',separator='<br>', conjunction='<br>', rank='all',addTrackingCat ='true'} )
	return value
end

local function getline(s)
	return wl.Line({s, s,'right'})
end

local function getsubTitle(s)
	return wl.SubTitle({s, s})
end

local function getmix(s,ss)
	return wl.MixedLine({s,ss,ss})
end

local function getimage(id,Property,size)
	local image = wikidata({entityId =id ,property =Property, firstvalue= 'true',image='image',size=size} )
	if image then
		local z =wl.Line({image})
		return z
	end
end

local function GetValueWithMix(id, property, name , pattern)
	local value = Options[name] or Options['"' .. name .. '"'] or ""
	if value == "" then 
		value = getvalue(id , property , pattern)
	end
	return getmix(name , value)
end

local function bothdates(id, property, name)
	local hus = getvaluebothdates(id, property)
	return getmix(name,hus)
end

local function getoffice(id,Property)
	local val= wikidata({entityId =id ,property =Property, office='office',separator='<br>', conjunction='<br>', rank='all',noref='true',addTrackingCat ='true' , noicon='true'} )
	local titl = getsubTitle('مناصب')
         if val and val ~= '' then value = titl ..''..val end
	return value
end

local function getaward(id,Property)
	local val= wikidata({entityId =id ,property =Property, qual1='P1686',qual1pref='عن عمل: ', withdate ='t'
		,separator='<br>', conjunction='<br>', rank='all'
		,addTrackingCat ='true'
		, mainprefix= '<div style="max-height:180px; padding: 2px 0 2px 5px; background-color:transparent;vertical-align:top;font-size:100%">'
		, mainsuffixAfterIcon = "</div>"
		
	} )
	local titl = getsubTitle('جوائز')
	local other = getline(val)
         if val and val ~= '' then value = titl ..''..other end
	return value
end

function p.pageId(frame)
	entity = mw.wikibase.getEntityObject()
	if not entity 
		then return nil
		else return entity.id
	end
end

local function label_by_gender( male , female , id)
	local label = male
	local P21 = Genders[id] or wikidata( {property ='P21', entityId = id , noref ='true' ,rank='all', firstvalue='true',formatting ='raw'})
	if P21 then 
		Genders[id] = P21
		if P21 =='Q6581072' then label = female end
		--elseif P21 =='Q6581097'  then label = male
	end
	return label
end

function p.infobox(frame)
	local Args = frame.args
	
	for param, value in pairs(Args) do
		if value and mw.text.trim(value) ~= '' then -- empty parameters are ignored
			Options[param] = value
			mw.log( 'param: "' .. param .. '",  value:"' ..  value .. '"' )
		end
	end

	local id = Args.id or Args['id'] or ""
	if id == '' or not id then id = p.pageId() end
	local title2 = mw.getCurrentFrame():callParserFunction{ name = 'اسم_الصفحة', args = ''}-- 
--mw.getCurrentFrame():expandTemplate{ title = "اسم_الصفحة"}
	local open = wl.Open({id = ''})
	local title = wl.Title({'title2',''})
	local P1559 = getsubTitle((getvalue(id,'P1559') or ''),'')
	local image = getimage(id,'P18','220' )
	local P39 = getoffice(id,'P39')					
	local sub1 = getsubTitle('معلومات شخصية','')
	local P106 = GetValueWithMix(id, 'P106','المهنة' )
	local P1477 = GetValueWithMix(id, 'P1477','الاسم عند الولادة' )
	
	local P569 = GetValueWithMix(id, 'P569','الميلاد' )
	local P19 = GetValueWithMix(id, 'P19','مكان الولادة' )
	
	local P570 = GetValueWithMix(id, 'P570','تاريخ الوفاة' )
	local P20 = GetValueWithMix(id, 'P20','مكان الوفاة' )
	
	local P509 = GetValueWithMix(id, 'P509','سبب الوفاة' )
	local P551 = bothdates(id, 'P551','الإقامة' )
	local P27 = GetValueWithMix(id, 'P27','الجنسية' )
	local P172 = GetValueWithMix(id, 'P172','العرق' )
	local P66 = GetValueWithMix(id, 'P66','نشأ في' )
	local P2043 = GetValueWithMix(id, 'P2043','الطول' )
	local P2067 = GetValueWithMix(id, 'P2067','الوزن' )
	local P552 = GetValueWithMix(id, 'P552','استعمال اليد' )
	local P741 = GetValueWithMix(id, 'P741','يد اللعب' )
	local P140 = GetValueWithMix(id, 'P140','الديانة' )
	local P102 = GetValueWithMix(id, 'P102','الحزب' )
	local P463 = GetValueWithMix(id, 'P463',label_by_gender("عضو في" , "عضوة في" , id ) )
	local P1050 = GetValueWithMix(id, 'P1050','مشكلة صحية' )
	local P26 = bothdates(id, 'P26', label_by_gender("الزوج" , "الزوجة" , id ) )
	local P40 = GetValueWithMix(id, 'P40','أبناء' )
	local P1971 = GetValueWithMix(id, 'P1971','عدد الأطفال' )
	local P22 = GetValueWithMix(id, 'P22','الأب' )
	local P25 = GetValueWithMix(id, 'P25','الأم' )
	local P7 = GetValueWithMix(id, 'P7','أخ' )
	local P9 = GetValueWithMix(id, 'P9','أخت' )
	local P53 = GetValueWithMix(id, 'P53','عائلة' )
	local sub2 = getsubTitle('الحياة المهنية','')
	local P69 = bothdates(id, 'P69','المدرسة الأم' )
	local P166 = getaward(id,'P166')
	local sub3 = getsubTitle('توقيع','')
	local P109 = getimage(id,'P109','110' )
	local P856 = GetValueWithMix(id, 'P856', "الموقع" )
	local labe = label_by_gender("صفحته" , "صفحتها" , id ) 
	local P345_pat = "[http://www.imdb.com/name/$1/ " ..  labe  .. " على IMDB]"
	local P345 = GetValueWithMix(id, 'P345', "[[قاعدة بيانات الأفلام على الإنترنت|IMDB]]"  ,  P345_pat)
	local sub4 = getsubTitle( "المواقع", '')

			
	local sing2 = '[//ar.wikipedia.org/w/index.php?title='.. title2 ..'&action=edit عدل]'

	--local sing2 = mw.getCurrentFrame():expandTemplate{ title = "عدل", args = {title2}}
	local sing = '</tr>\n<td class="navigation-only" colspan="2" style="border-top: 2px #E1E1E1 dotted; font-size: 80%; background:inherit; text-align: left;"><span class="plainlinks" style="float:right;">' .. sing2..'</span>&nbsp;[[ملف:Gtk-dialog-info.svg|12px|link=وحدة:معلومات شخص|طالع توثيق الوحدة]]</td>\n</tr>'
	local closse = '\n</table>'

	field = {}
	table.insert(field, open)
	table.insert(field, title)
	if P1559 and P1559 ~= '' then table.insert(field, P1559) end
	if image and image ~= '' then table.insert(field, image) end
	if P39 and P39 ~= '' then table.insert(field, P39) end
	if P26 and P106 then table.insert(field, sub1) end
	if P106 and P106 ~= '' then table.insert(field, P106) end
	if P1477 and P1477 ~= '' then table.insert(field, P1477) end
	if P569 and P569 ~= '' then table.insert(field, P569) end
	if P19 and P19 ~= '' then table.insert(field, P19) end
	if P570 and P570 ~= '' then table.insert(field, P570) end
	if P20 and P20 ~= '' then table.insert(field, P20) end
	if P509 and P509 ~= '' then table.insert(field, P509) end
	if P551 and P551 ~= '' then table.insert(field, P551) end
	if P27 and P27 ~= '' then table.insert(field, P27) end
	if P172 and P172 ~= '' then table.insert(field, P172) end
	if P66 and P66 ~= '' then table.insert(field, P66) end
	if P2043 and P2043 ~= '' then table.insert(field, P2043) end
	if P2067 and P2067 ~= '' then table.insert(field, P2067) end
	if P552 and P552 ~= '' then table.insert(field, P552) end
	if P741 and P741 ~= '' then table.insert(field, P741) end
	if P140 and P140 ~= '' then table.insert(field, P140) end
	if P102 and P102 ~= '' then table.insert(field, P102) end
	if P463 and P463 ~= '' then table.insert(field, P463) end
	if P1050 and P1050 ~= '' then table.insert(field, P1050) end
	if P26 and P26 ~= '' then table.insert(field, P26) end
	if P40 and P40 ~= '' then table.insert(field, P40) end
	if P1971 and P1971 ~= '' then table.insert(field, P1971) end
	if P22 and P22 ~= '' then table.insert(field, P22) end
	if P25 and P25 ~= '' then table.insert(field, P25) end
	if P7 and P7 ~= '' then table.insert(field, P7) end
	if P9 and P9 ~= '' then table.insert(field, P9) end
	if P53 and P53 ~= '' then table.insert(field, P53) end
	if P69 then table.insert(field, sub2) end
	if P69 and P69 ~= '' then table.insert(field, P69) end
	if P166 and P166 ~= '' then table.insert(field, P166 ) end
	if P109 and P109 ~= '' then table.insert(field, sub3) end
	if P109 and P109 ~= '' then table.insert(field, P109 ) end
	
	if P856 or P345 then table.insert(field, sub4) end
	if P856 and P856 ~= '' then table.insert(field, P856 ) end
	if P345 and P345 ~= '' then table.insert(field, P345 ) end

	table.insert(field, sing)
	table.insert(field, closse)

	return table.concat(field) -- ' — '
end

return p