Chronos chronos left.png
Rusmed logo color.png
Chronos chronos right.png

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Module:Personne

De Commission Historique

La documentation pour ce module peut être créée à Module:Personne/doc

local pagetitle = tostring(mw.title.getCurrentTitle())
--bib = mw.ext.cargo.query('Zotero', '_pageName, ZoteroKey, TitleItem, Author, Editor, Date, Date__precision, Place, ItemType, Publisher, PublicationTitle, Volume, PublicationYear, Pages, Url, FilingDate, AccessDate, Type, Number, IssuingAuthority',{groupBy = 'ZoteroKey', orderBy = 'ZoteroKey', limit = 4000})
--bbib={}

local p = {}
function p.main(frame)
	
	f = require("Module:Fonctions")
	t = require("Module:Translate")
	fo = require("Module:Fo")
	
	local P, refer = {}, {}
	local publications, references, sources, pers_pers, pers_inst, pers_act, pers_conc='','','','','','',''
	local strong_links={"directeur_de_these","superieur_hierarchique","inf_hier","disciple","evaluateur","evalue_par","student","teacher"}
	local langue = frame:preprocess("{{int:lang}}")
	local lang = mw.getLanguage( langue )

-- Données personnelles

	for field, value in pairs(frame.args) do
		P[field] = value
	end

	local frise = '<itimeline min="' .. f.dateAdd(P["Naissance"],-5) .. '" max="' .. f.dateAdd(P["Deces"],5) .. '">"\n'
	
	for key,field in ipairs({'Naissance','Deces','Exercice_medecine','Annee_these','Exam','Date_capture'}) do
		frise = frise .. f.dateFrise(P[field]) .. '|' .. 'Personnel' .. '|' .. t.translate(field,langue) .. '\n'
	    P[field] = f.afficheDate(lang, P[field])
	end
	
	for _,rr in ipairs(mw.text.split(P['RefPers'],'#')) do
		fo.tableRef(rr,refer)
		--ref = mw.text.split(rr,'+')
		--if ref[3] then
		--	if not refer[ref[3]] then refer[ref[3]] = '' end
		--	refer[ref[3]] = refer[ref[3]] .. fo.modelRef(ref[1],ref[2],ref[3])
		--end
	end
	for _,rr in ipairs(mw.text.split(P['Publications'],'#')) do
		publications = publications .. fo.modelRefPub(mw.text.split(rr,'+'))
	end
	for _,rr in ipairs(mw.text.split(P['References'],'#')) do
		references = references .. fo.modelRefPub(mw.text.split(rr,'+'))
	end	
	
		
--Nationalités, Localisations, Confessions
	local tables = 'Nationalites'
	local fields = 'Date_debut=Debut,Date_debut__precision=DebutP,Date_fin=Fin,Date_fin__precision=FinP, Nationalite'
	local arguments = {
		where='Objet="' .. string.gsub(pagetitle,' ','_') .. '"',
		groupBy='Nationalite,Debut,Fin',
		orderBy='Debut,Fin,Nationalite',
		intro=''
	}
	local result = mw.ext.cargo.query(tables, fields, arguments)
	if next(result) then
		for _, car in pairs(result) do
			frise = frise .. f.dateFrise(car["Debut"]) .. '/' .. f.dateFrise(car["Fin"]).. '|' .. 'Personnel' .. '|[[' .. car["Nationalite"] .. ']]\n' 
		end	
	end
	
	local tables = 'Confessions'
	local fields = 'Date_debut=Debut,Date_fin=Fin, Confession'
	local arguments = {
		where='Objet="' .. string.gsub(pagetitle,' ','_') .. '"',
		groupBy='Confession,Debut,Fin',
		orderBy='Debut,Fin,Confession',
		intro=''
	}
	local result = mw.ext.cargo.query(tables, fields, arguments)
	if next(result) then
		for _, car  in pairs(result) do
			frise = frise .. f.dateFrise(car["Debut"]) .. '/' .. f.dateFrise(car["Fin"]).. '|' .. 'Personnel' .. '|[[' .. car["Confession"] .. ']]\n' 
		end	
	end
	
	local tables = 'Localisations'
	local fields = 'Date_debut=Debut,Date_fin=Fin, Pays, Ville, Coordonnees'
	local arguments = {
		where='Objet="' .. string.gsub(pagetitle,' ','_') .. '"',
		groupBy='Pays,Ville,Coordonnees,Debut,Fin',
		orderBy='Debut,Fin,Pays,Ville,Coordonnees',
		intro=''
	}
	local result = mw.ext.cargo.query(tables, fields, arguments)
	if next(result) then
		for _, car  in pairs(result) do
			frise = frise .. f.dateFrise(car["Debut"]) .. '/' .. f.dateFrise(car["Fin"]).. '|' .. 'Personnel' .. '|[[' .. car["Ville"] .. ' (' .. car["Pays"] .. ')' .. ']]\n' 
		end	
	end	
-- Relations personnes/personnes

	local tables = 'Pers_pers'
	local fields = '_pageName=Prel,RefBib=Ref,Date_debut=Debut,Date_debut__precision=DebutP,Date_fin=Fin,Date_fin__precision=FinP,Resume_fr=Resume_fr,Resume_de=Resume_de,Resume_en=Resume_en,Nature=Nature,Objet_1,Objet_2'
	local arguments = {
		where='Objet_1 IS NOT NULL and Objet_2 IS NOT NULL  and (Objet_1="' .. pagetitle .. '" or Objet_2="' .. pagetitle .. '")',
		groupBy='Nature,Objet_1,Objet_2,Debut,Fin',
		orderBy='Nature,Debut,Fin',
		intro=''
	}
	local result = mw.ext.cargo.query(tables, fields, arguments)
	if next(result) then
		pers_pers = '\r==={{int:Template-Relations}}===\r' 
		local relations = f.trie_relations(result,"Nature",langue,{["directeur_de_these"]="disciple",["superieur_hierarchique"]="inf_hier",["evaluateur"]="evalue_par",["student"]="teacher"})
		for nat, rels in pairs(relations) do
			pers_pers = pers_pers .. '\r====' .. t.translate(nat,langue) .. '====\r'
			for _,rel in ipairs(rels) do
				--pers_pers = pers_pers .. '* [[' .. rel["Objet_2"] .. ']] (' .. f.afficheDate(lang,rel["Debut"],rel["DebutP"]) .. ' - ' .. f.afficheDate(lang,rel["Fin"],rel["FinP"]) .. ')'  .. '[[' .. rel["Prel"] .. '|&rarr;]]\n'
				local pp = '* [[' .. rel["Objet_2"] .. ']] (' .. f.afficheDate(lang,rel["Debut"],rel["DebutP"]) .. ' - ' .. f.afficheDate(lang,rel["Fin"],rel["FinP"]) .. ')'  .. '[[' .. rel["Prel"] .. '|&rarr;]]\n'
				--local resume = rel["Resume_fr"] .. rel["Resume_de"] .. rel["Resume_en"]
				f.afficheTexteLangue({'Resume'},{[1] = langue, [2] = 'en', [3] = 'fr',[4] = 'de'},rel)
				if #rel["Resume_" .. langue] > 5 then
					pers_pers = pers_pers .. "<div class='mw-collapsible mw-collapsed'>\n" .. pp .. "<div class='mw-collapsible-content wrapper'><div class='two'>" .. rel["Resume_" .. langue] .. "</div></div></div>\n"
				else
					pers_pers = pers_pers .. pp
				end
			end
		end
		
	end
	
	function glossaire(v)
		local pf
		if frame:preprocess("{{CURRENTLOGGEDUSER}}") == 'l.strappazon' then
			pf = '[[def:' .. v .. '|' .. v .. ']], '
		else 
			pf = '{{#tip-text:' .. v .. '|{{def:' .. v .. '}} }}, '
		end
		return pf
	end
	
	local fields = {'Profession','Titre','Specialite','Profession_pere','Profession_mere'}
	for _,field in ipairs(fields) do
		if #P[field] > 0 then
			local pf = ''
			for _,v in ipairs(mw.text.split(P[field],';')) do
				--pf = pf .. '{{#tip-text:' .. v .. '|{{def:' .. v .. '}} }}, '
				pf = pf .. glossaire(v)
			end
			P[field] = mw.text.trim(pf,', ')
		end
	end

	
	
	
	local fields = {'Prenom','Nom','Sexe','Naissance','Lieu_de_naissance','Deces','Lieu_de_deces','These','Exam','Dir_these','Annee_these','Lieu_these','Exercice_medecine','Profession','Nationalites','Titre','Identites','Specialite'}
	for _,field in ipairs(fields) do
		if #P[field] > 0 and refer[field] then
			P[field] = P[field] .. refer[field]
		end
	end
	if #P.Lieu_de_naissance > 1 then
		P.Naissance = P.Naissance .. ' (' .. t.translate(P.Lieu_de_naissance,langue) .. ')'
	end
	if #P.Lieu_de_deces > 1 then
		P.Deces = P.Deces .. ' (' .. t.translate(P.Lieu_de_deces,langue) .. ')'
	end
	if #P.These > 1 then
		if #P.Lieu_these > 1 or #P.Annee_these > 1 then
			P.These = P.These .. ' ('
			if #P.Lieu_these > 1 then
				P.These = P.These .. P.Lieu_these
				if #P.Annee_these > 1 then
					P.These = P.These .. ', '
				end
			end
			if #P.Annee_these > 1 then
				P.These = P.These .. t.translate(P.Annee_these,langue)
			end
			P.These = P.These .. ')'
		end
	end

	local cartouche_fields = {'Prenom','Nom','Sexe','Naissance','Deces','Profession_pere','Profession_mere','These','Exam','Dir_these','Exercice_medecine','Profession','Nationalite','Titre','Identites','Specialite'}
	local cartouche= '{| class="cartouche" \n! style=\"text-align: center; background-color:#cccccc;\" colspan=\"2\" |<big>'  .. P.Prenom .. ' ' .. P.Nom .. '</big>\n|-\n'
	if #P.Image > 1 then
		 cartouche= cartouche .. '|colspan=\"2\"|[[Fichier:' .. P.Image .. '|360px|center|border|' .. P.Prenom .. ' ' .. P.Nom ..  ']]<br>\n|-'
	end
	for _,label in ipairs(cartouche_fields) do
		if #P[label]  > 0 then
			cartouche= cartouche.. '\n!'..  t.translate(label,langue) .. '\n|height=\"25\"|' .. P[label] .. '\n|-\n|-\n'
		end
	end
	cartouche= cartouche.. '|}<div align="left">__TOC__</div>' 

	--local text_fields, langs = {'Resume','Contexte','Commentaire'}, {[1] = langue, [2] = 'en', [3] = 'fr',[4] = 'de'}
	--f.afficheTexteLangue(text_fields,langs,P)	


-- Relations personnes/institutions

	local tables = 'Pers_inst, Personnes=Pa'
	local fields = 'Pa._pageName=nomA,Pers_inst._pageName=Prel,Pers_inst.RefBib=Ref,Pers_inst.Date_debut=Debut,Pers_inst.Date_fin=Fin,Pers_inst.Resume_fr=Resume_fr,Pers_inst.Resume_de=Resume_de,Pers_inst.Resume_en=Resume_en,Pers_inst.Nature=Nature,Pers_inst.Objet_1=Objet_1,Pers_inst.Objet_2=Objet_2'
	local arguments = {
		join='Pa._pageName=Pers_inst.Objet_1',
		where='Pers_inst.Objet_2 IS NOT NULL and Pa._pageName=Pers_inst.Objet_1 and Pers_inst.Objet_1="' .. pagetitle .. '"',
		groupBy='Pers_inst.Nature,nomA,Pers_inst.Objet_2,Debut,Fin',
		orderBy='Debut,Fin,Pers_inst.Nature,nomA,Pers_inst.Objet_2',
		intro=''
	}
	local result = mw.ext.cargo.query(tables, fields, arguments)

	--[=[
	if next(result) then
		pers_inst = '\r=={{int:Template-Liens_institutions}}==\r' 
		local relations = f.trie_relations(result,"Objet_2",langue)
		for inst, rels in pairs(relations) do
			pers_inst = pers_inst .. '\r===' .. inst .. '===\r'
			for _,rel in ipairs(rels) do
				 pers_inst = pers_inst .. '* [[' .. rel["Nature"] .. ']]' .. '[[' .. rel["Prel"] .. '|&rarr;]]\n'
			end
		end	
	end
	--[==[
	--]=]
	if next(result) then
		pers_inst = '\r==={{int:Template-Liens_institutions}}===\r'
		pers_inst = pers_inst .. "<table class='wikitable'>"
		local relations = f.trie_relations(result,"Objet_2",langue)
		local n = 1
		for inst, rels in pairs(relations) do
			pers_inst = pers_inst .. "<tr><td>" .. tostring(n) .. "</td><td>" .. inst .. "</td><td><table width=100%>"
			for _,rel in ipairs(rels) do
				--pers_inst = pers_inst .. '<tr><td>' ..  '[[Def:' .. rel["Nature"] .. '|' .. rel["Nature"] .. ']]' .. '</td><td>' .. f.afficheDate(lang,rel["Debut"]) .. ' - ' .. f.afficheDate(lang,rel["Fin"]) .. '</td><td style="text-align:right;"> [[' .. rel["Prel"] .. '|&rarr;]]</td></tr>'
				pers_inst = pers_inst .. '<tr><td>' .. glossaire(rel["Nature"]) .. '</td><td>' .. f.afficheDate(lang,rel["Debut"]) .. ' - ' .. f.afficheDate(lang,rel["Fin"]) .. '</td><td style="text-align:right;"> [[' .. rel["Prel"] .. '|&rarr;]]</td></tr>'
			end
			pers_inst = pers_inst .. "</table></td></tr>"
			n = n+1
		end
		pers_inst = pers_inst .. "</table>"
	end
	--]==]f.afficheDate(lang,rel["Debut"],rel["DebutP"])

	if next(result) then

		local relations = f.trie_relations(result,"Objet_2",langue)
		for inst, rels in pairs(relations) do
			for _,rel in ipairs(rels) do
				frise = frise .. rel["Debut"] .. '/' .. rel["Fin"] .. '|[[' .. inst .. ']]|[[' .. rel["Nature"] .. ']][[' .. rel["Prel"] .. '|&rarr;]] \n' 
			end
		end	
		
	end
	frise = frise .. '</itimeline>'
	pers_inst = pers_inst .. '\n' .. frise

	
-- Relations personnes/concepts

	local tables = 'Pers_conc, Personnes=Pa'
	local fields = 'Pa._pageName=nomA,Pers_conc._pageName=Prel,Pers_conc.RefBib=Ref,Pers_conc.Date_debut=Debut,Pers_conc.Date_fin=Fin,Pers_conc.Resume_fr=Resume_fr,Pers_conc.Resume_de=Resume_de,Pers_conc.Resume_en=Resume_en,Pers_conc.Nature=Nature,Pers_conc.Objet_1=Objet_1,Pers_conc.Objet_2=Objet_2'
	local arguments = {
		join='Pa._pageName=Pers_conc.Objet_1',
		where='Pers_conc.Objet_2 IS NOT NULL and Pa._pageName=Pers_conc.Objet_1 and Pers_conc.Objet_1="' .. pagetitle .. '"',
		groupBy='Pers_conc.Nature,nomA,Pers_conc.Objet_2',
		orderBy='Pers_conc.Nature,Debut,Fin,nomA,Pers_conc.Objet_2',
		intro=''
	}
	local result = mw.ext.cargo.query(tables, fields, arguments)
	if next(result) then
		pers_conc = '\r==={{int:Template-Liens_concepts}}===\r' 
		local relations = f.trie_relations(result,"Objet_2",langue)
		for conc, rels in pairs(relations) do
			pers_conc = pers_conc .. '\r====' .. conc .. '====\r'
			for _,rel in ipairs(rels) do
				pers_conc = pers_conc .. '* [[' .. rel["Nature"] .. ']]' .. '[[' .. rel["Prel"] .. '|&rarr;]]\n'
			end
		end	
	end	
	
-- Relations personnes/actions

	local tables = 'Pers_act, Personnes=Pa'
	local fields = 'Pa._pageName=nomA,Pers_act._pageName=Prel,Pers_act.RefBib=Ref,Pers_act.Date_debut=Debut,Pers_act.Date_fin=Fin,Pers_act.Resume_fr=Resume_fr,Pers_act.Resume_de=Resume_de,Pers_act.Resume_en=Resume_en,Pers_act.Nature=Nature,Pers_act.Objet_1=Objet_1,Pers_act.Objet_2=Objet_2'
	local arguments = {
		join='Pa._pageName=Pers_act.Objet_1',
		where='Pers_act.Objet_2 IS NOT NULL and Pa._pageName=Pers_act.Objet_1 and Pers_act.Objet_1="' .. pagetitle .. '"',
		groupBy='Pers_act.Nature,nomA,Pers_act.Objet_2',
		orderBy='Pers_act.Nature,Debut,Fin,nomA,Pers_act.Objet_2',
		intro=''
	}
	local result = mw.ext.cargo.query(tables, fields, arguments)
	if next(result) then
		pers_act = '\r==={{int:Template-Liens_actions}}===\r' 
		local relations = f.trie_relations(result,"Objet_2",langue)
		for act, rels in pairs(relations) do
			pers_act = pers_act .. '\r====' .. act .. '====\r'
			for _,rel in ipairs(rels) do
				pers_act = pers_act .. '* [[' .. rel["Nature"] .. ']]' .. '[[' .. rel["Prel"] .. '|&rarr;]]\n'
			end
		end	
	end		
	
	--cartouche = frame:expandTemplate({ title = "Cartouche", args = P})
	biographie = frame:expandTemplate({ title = "Biographie", args = P })
	
	localisations, confessions = '', '', '', ''
	if P['Localisations'] then
		localisations = '\r===' .. t.translate('Localisations',langue) .. '===\r' .. P['Localisations']
	end
	if P['Nationalites'] then
		nationalites = '\r===' .. t.translate('Nationalites',langue) .. '===\r' .. P['Nationalites']
	end
	if P['Confessions'] then
		confessions = '\r===' .. t.translate('Confessions',langue) .. '===\r' .. P['Confessions']
	end
	if P['Publications'] then
		publications = '\r===' .. t.translate('Publications',langue) .. '===\r' .. publications 
	end	
	if P['References'] then
		references =  '\r==' .. t.translate('References',langue) .. '==\r' .. references
	end
	
	page = frame:preprocess(cartouche .. biographie .. '\r==Repères==\r' ..  localisations .. nationalites .. confessions  .. publications .. pers_pers .. pers_inst .. pers_conc .. pers_act .. references)
	return page
end
return p