Module:Oteur

Èn årtike di Wikisource.

local p = {}
local lang = "wa"
local imgM = "Gray - replace this image male.svg"
local imgF = "Gray - replace this image female.svg"
local NS = mw.title.getCurrentTitle().namespace
local CatNS = mw.site.namespaces.Category.name

function p.main(frame)
	local id = nil
	local html = mw.html.create()
	if frame.args.wd ~= nil and frame.args.wd ~= "" then 
		id = frame.args.wd
	end
	
	if NS ~= 100 then
		local msg = frame:preprocess(
			   'Cisse pådje ci n’ est nén dvins l’ espåce di lomaedje « Oteur ». '
			.. "A rlomer  '''[[Oteur:{{PAGENAME}}]]'''." )
		html:wikitext(frame:expandTemplate{ 
			title = 'Bindea', 
			args = { sore = 'asteme', msg }
		})
		return html
	end
	
	-- data from Wikidata
	local item = mw.wikibase.getEntity(id)
	
	-- si l' pådje n' est nén raloyeye a Wikidata
	if item == nil then
		local msg = frame:preprocess(
			   'Cisse pådje ci n’ est nén co raloyeye a Wikidata. '
			.. 'Cwand çoula serè fwait, rivnoz vaici et ' 
			.. '[{{SERVER}}{{localurl:{{FULLPAGENAME}}|action=purge}} purdjîz l’ pådje].' )
		html:wikitext(frame:expandTemplate{ 
			title = 'Bindea', 
			args = { sore = 'asteme', msg }
		})
		html:wikitext('[[Category:Oteurs nén raloyîs a Wikidata]]')
		return html
	end

	html:wikitext('[['..CatNS..':Oteurs]]')
	local I = mw.text.split( mw.title.getCurrentTitle().text, ' ', true )
    I = I[#I]
	I = mw.ustring.sub(I , 1, 1)
	I = mw.ustring.upper(I)
	I = mw.ustring.gsub( I, "[ÉÈ]", "E")
	if frame.args.index ~= nil and frame.args.index ~= "" then 
		Iauto = I
		I = mw.ustring.upper(frame.args.index)
		if Iauto == I then
			html:wikitext("[[Category:Oteurs k' on pout rsaetchî l' paramete indek]]")
		end
	end
	div_index = mw.html.create( 'div' )
	div_index:wikitext('[[:Category:Oteurs-'..I..'|Oteurs-'..I..']]')
	html:wikitext('[['..CatNS..':Oteurs-'..I..']]')
	if id ~= nil then
		div_index:wikitext('[[Category:Oteurs avou on paramete Wikidata]]')
	end
	
	div_author = mw.html.create( 'div' )
	div_author:css({
		["margin-bottom"] = "1em",
		["border-top"] = "5px solid #355391",
		["background"] = "#DFE5E9",
		["overflow"] = "auto",
		["padding"] = "10px 20px",
		["box-shadow"] = "0 0 10px #ddd",
		["min-height"] = "150px"
	})

	div_author_text = mw.html.create( 'div' )
	div_author_text:css({
		["margin-left"] = "200px"
	})
	
	div_iw = mw.html.create( 'div' )
	div_iw:css({
		["float"] = "right"
	})

	-- index
	if div_index ~= nil then div_iw:node( div_index ) end
	
	-- Wikidata
	if item.id~= nil then
		div_iw:wikitext( '<div>[[:d:'..item.id..'|Wikidata]]</div>' )
	end
	-- Wikipedia
	local iwd = item:getSitelink( lang..'wiki' )
	if iwd ~= nil then
		div_iw:wikitext( '<div>[[:w:'..lang..':'..iwd..'|Wikipedia]]</div>' )
	end
	-- Wiccionaire
	local iwkt = item:getSitelink( 'wawiktionary' )
	if iwkt ~= nil then
		div_iw:wikitext( '<div>[[:wikt:wa:'..iwkt..'|Wiccionaire]]</div>' )
	end
	-- Commons
	local iwc = item:formatPropertyValues('P373').value
	if iwc ~= nil and iwc ~= '' then
		div_iw:wikitext( '<div>[[:c:Category:'..iwc..'|Commons]]</div>' )
	end
	div_author:node( div_iw )
	
	-- Image (ome/feme)
	local genderWD = item:getBestStatements('P21')
	local img = imgM
	if  genderWD[1] ~= nil 
	and genderWD[1].mainsnak.datavalue ~= nil 
	and genderWD[1].mainsnak.datavalue.value.id == 'Q6581072' then
		img = imgF
		html:wikitext('[['..CatNS..':Otoresses]]')
	end
	
	local imgWD = item:getBestStatements('P18')
	if imgWD[1] ~= nil and imgWD[1].mainsnak.datavalue ~= nil then
		img = imgWD[1].mainsnak.datavalue.value
	else
		html:wikitext("[[Category:Oteurs sins imådje]]")
	end
	div_author:wikitext( '[[File:'..img..'|left|128px]]' )
 
	local fullnameWD = item:getLabel(lang)
	local fullnameWD_fr = item:getLabel('fr')
	if fullnameWD == nil then fullnameWD = "?" end
	div_author_name = mw.html.create( 'div' )
	div_author_fname = mw.html.create( 'span' )
	div_author_fname:css({
		["font-weight"] = "bold",
		["font-family"] = "sherif",
		["font-size"] = "200%"
	})
	div_author_fname:wikitext(fullnameWD)
	div_author_name:node( div_author_fname )
	
	local natWD = item:getBestStatements('P31')
	local i = 1 ; local noteur = 1
	while( natWD[i] ~= nil and natWD[i].mainsnak.datavalue ~= nil ) do
		if natWD[i].mainsnak.datavalue.value.id == 'Q10648343' then
			noteur = 2
		end
		i = i + 1 
	end
	
	if noteur == 1 then
		local akaWD = item:getBestStatements('P742')
		local i = 1
		local akas = {}
		local altname = ""
		while( akaWD[i] ~= nil and akaWD[i].mainsnak.datavalue ~= nil ) do
			local aka = akaWD[i].mainsnak.datavalue.value
			local title = mw.title.makeTitle('Oteur', aka)
			if not title.exists then
			   	html:wikitext('[['..CatNS..':Oteurs avou on no d’ pene a redjibler]]')
			end
			table.insert(akas, aka)
			if i == 10 then break end
			i = i + 1 
		end
		if fullnameWD_fr ~= nil or #akas > 0 then
			if fullnameWD_fr ~= nil and fullnameWD_fr ~= "" and fullnameWD_fr ~= fullnameWD  then
				altname = '<abbr title="no e francès">n.f.</abbr> ' .. fullnameWD_fr
			end
			if #akas > 0 then
				if altname ~= "" then altname = altname..' ; ' end
				altname = altname .. '<abbr title="no d’ pene">n.p.</abbr> ' .. table.concat(akas, ', ')
			end
			if altname ~= "" then
				div_author_name:wikitext(' ('..altname..')')
			end
		end
		div_author_text:node( div_author_name )
		
		local birthdate = '';
		local deathdate = '';
		local birthWD = item:getBestStatements('P569')
		local deathWD = item:getBestStatements('P570')
		if birthWD == nil or birthWD[1] == nil or birthWD[1].mainsnak.datavalue == nil then birthdate = "?" else 
			if birthWD[1].mainsnak.datavalue.value.precision == 7 then
				birthdate = (tonumber(string.sub(birthWD[1].mainsnak.datavalue.value.time, 2, 3))+1).."<sup>inme</sup> sièke"
			elseif birthWD[1].mainsnak.datavalue.value.precision == 8 then
				birthdate = string.sub(birthWD[1].mainsnak.datavalue.value.time, 2, 4).."x"
			else
				birthdate = tonumber(string.sub(birthWD[1].mainsnak.datavalue.value.time, 2, 5))
			end
			if string.sub(birthWD[1].mainsnak.datavalue.value.time, 1, 1) =="-" then
				birthdate = birthdate .. ' dvant Dj.C.'
			end
		end
		if deathWD == nil or deathWD[1] == nil or deathWD[1].mainsnak.datavalue == nil then 
			deathdate = "?" 
			html:wikitext('[['..CatNS..':Oteurs sins date di moirt]]')
		else 
			if deathWD[1].mainsnak.datavalue.value.precision == 7 then
				deathdate = (tonumber(string.sub(deathWD[1].mainsnak.datavalue.value.time, 2, 3))+1).."<sup>inme</sup> sièke"
			elseif deathWD[1].mainsnak.datavalue.value.precision == 8 then
				deathdate = string.sub(deathWD[1].mainsnak.datavalue.value.time, 2, 4).."x"
			else
				deathdate = tonumber(string.sub(deathWD[1].mainsnak.datavalue.value.time, 2, 5))
			end
			if string.sub(deathWD[1].mainsnak.datavalue.value.time, 1, 1) =="-" then
				deathdate = deathdate .. ' dvant Dj.C.'
			end
		end
		div_author_dates = mw.html.create( 'div' )
		div_author_dates:wikitext(birthdate.." — "..deathdate)
		div_author_text:node( div_author_dates )
	else
		div_author_text:node( div_author_name )
	end
	
	if noteur > 1 then
		local oteursWD = item:getBestStatements('P527')
		local i =1
		local oteurs = {}
		while( oteursWD[i] ~= nil and oteursWD[i].mainsnak.datavalue ~= nil ) do
			local oteur = mw.wikibase.getLabel(oteursWD[i].mainsnak.datavalue.value.id)
			table.insert(oteurs, "[[:Author:"..oteur.."|"..oteur.."]]")
			i = i + 1 
		end
		div_author_oteurs = mw.html.create( 'div' )
		div_author_oteurs:wikitext(table.concat(oteurs, ", "))
		div_author_text:node( div_author_oteurs )
	end
	
	local descWD = item:getDescription( lang )
	if descWD == nil then descWD = "''i gn a co nou discrijhaedje so Wikidata''" end
	div_author_des = mw.html.create( 'div' )
	div_author_des:wikitext(descWD)
	div_author_text:node( div_author_des )
	
	div_author:node( div_author_text )
	html:node( div_author )
	return  html
end

function p.tt(id)
	local item = mw.wikibase.getEntity(id)
	local deathWD = item:getBestStatements('P570')
	return deathWD
end

return p