Documentation[voir] [modifier] [historique] [purger]

Cette page définit un module d'infobox. Pour les conseils sur l'usage de ce module, voyez Modèle:Infobox Animal.


local localdata = require( 'Module:Infobox/Localdata' )
local general = require "Module:Infobox/Fonctions"
local wd = require "Module:Wikidata"
local linguistic = require "Module:Linguistique"
local person = require "Module:Infobox/Fonctions/Personne"
		-- Si vous modifiez ce tableau, n'oubliez pas de mettre à jour la section 'Chartes graphiques' de [[Modèle:Infobox Animal célèbre/Documentation]]
local speciesformats = {
	--{espèce, espèce, couleur titre, couleur sous-titre, couleur texte, icône) doivent être classés du plus spécifique au plus général
	{'Q144', 'chien', '#947151', '#B08660', '#000000', 'defaut'}, -- brun foncé
	{'Q146', 'chat', '#474747', '#787878', '#FFFFFF', 'defaut'}, -- noir/gris
	{'Q726', 'cheval', '#D2B48C', '#D2B48C', '#FFFFFF', 'defaut'}, -- brun clair (comme [[Modèle:Infobox Cheval]])
	{'Q36341', 'ours brun', '#8A5030', '#B37659', '#FFFFFF', 'defaut'}, -- brun soutenu
	{'Q839769', 'ours brun', '#8A5030', '#B37659', '#FFFFFF', 'defaut'}, -- brun soutenu
	{'Q237260', 'ours brun', '#8A5030', '#B37659', '#FFFFFF', 'defaut'}, -- brun soutenu
	
}

local function setformat() --retourne une table contenant la couleur principale de l'infobox et l'icône de titre
	local species = wd.getIds(localdata.item, {property = 'P31'}) -- récupère les Qid des espèces

	if not species or (#species > 1) then -- si plusieurs espèces, on ne sait pas laquelle choisir
		return {'Q', '', '#DFDFDF', '#D9D9D9', '#000000', 'defaut'}
	end
	species = wd.addVals(species, {property = 'P279'}, 2) -- nombre d'étages de sous-classes à remonter
	for i, j in pairs(species) do
		for k, l in pairs(speciesformats) do
			if l[1] == j then
				return l
			end
		end
	end
	return {'Q', '', '#DFDFDF', '#D9D9D9', '#000000', 'defaut'}
end
local function setcharte()
	local charte = localdata['charte']
	if charte then
		for i, j in pairs(speciesformats) do
			if j[2] == charte then
				return j
			end
		end
	end
	return setformat()
end
local personformat = setcharte()

local function documentation()
	local lines = {}

	table.insert(lines , '{| class="wikitable sortable" style="width:100%"')
	table.insert(lines , '|-')
	table.insert(lines , '! style="width:10%" | Charte')
	table.insert(lines , '! style="width:10%" | Élément Wikidata')
	table.insert(lines , '! style="width:10%" | Valeur primaire<br />(fond titre)')
	table.insert(lines , '! style="width:10%" | Valeur secondaire<br />(sous-titre)')
	table.insert(lines , '! style="width:10%" | Valeur tertiaire<br />(texte titre)')
	table.insert(lines , '! style="width:10%" | Icône<br />([[Projet:Infobox/Pictogramme|liste]])')
	table.insert(lines , '! style="width:20%" | rendu titre')
	table.insert(lines , '! style="width:20%" | rendu sous-titre')
	
	table.sort(speciesformats, function (left, right)
		return string.lower(left[2]):gsub('é','e') < string.lower(right[2]):gsub('é','e')
	end)

	table.insert(speciesformats, 1, {nil, nil, nil, nil, nil, nil})

	for i, j in pairs(speciesformats) do
		local wd = j[1] or ''
		local charte = j[2] or 'par défaut'
		local couleur1 = j[3] or '#CCCCAA'
		local couleur2 = j[4] or '#D1CFAD'
		local couleur3 = j[5] or '#000000'
		local icone = j[6] or ''

		local pict = ''
		if icone ~= '' and icone ~= 'defaut' then
			pict = mw.getCurrentFrame():extensionTag('templatestyles', '', {src = 'Infobox/Pictogramme/' .. mw.text.trim(icone) .. '.css'})
		end

		table.insert(lines , '|-')
		table.insert(lines , '! style="text-align:left;" | ' .. charte)
		table.insert(lines , '| style="text-align:center;" | ' .. wd)
		table.insert(lines , '| style="text-align:center;" | ' .. couleur1)
		table.insert(lines , '| style="text-align:center;" | ' .. couleur2)
		table.insert(lines , '| style="text-align:center;" | ' .. couleur3)
		table.insert(lines , '| style="text-align:center;" | ' .. icone)
		table.insert(lines , '| class="entete ' .. icone .. '" style="background-color:' .. couleur1 .. '; height:45px; text-align:center; font-size:150%; font-weight:bolder; color:' .. couleur3 .. ';" | titre ' .. pict)
		table.insert(lines , '| style="background-color:' .. couleur2 .. '; height:45px; text-align:center; font-size:150%; font-weight:bolder; color:#000000;" | sous-titre')
	end

	table.insert(lines , '|}')
	
	return table.concat(lines, "\n" )
end

return {
	maincolor = personformat[3],
	secondcolor = personformat[4],
	thirdcolor = personformat[5],
	documentation = documentation,
	parts = {
		general.title(),
		general.mainimage('Article à illustrer Animal'), --rajouter upright
		-- rajouter image drapeau P41 et blason P94
		{type = 'table', title = 'Informations', rows = {
			{type = 'row', label = 'Nom original', value = 'nom original', property = 'P1448'}, -- propriété à vérifier
			{type = 'row', label = 'Espèce', value = 'espèce',
				wikidata = {property = {'P31','P10241'}, targetclass = {"Q16521","Q55983715"}} -- n'affiche que les "taxons" ou les "groupe d'organismes connu par un nom commun"
			},
			{type = 'row', label = 'Race', value = 'race', property = 'P4743'},
			{type = 'row', label = 'Couleur', value = 'couleur', property = 'P462'},
			{type = 'row', label = 'Sexe', value = 'sexe', property = 'P21'},
			{type = 'row', label = 'Date de naissance', value = 'date de naissance', property = 'P569'},
			{type = 'row', label = 'Lieu de naissance', value = 'lieu de naissance', property = 'P19'},
			{type = 'row', label = 'Pays d\'origine', value = 'pays', property = 'P495'},
			{type = 'row', label = 'Lieu de vie', value = 'lieu de vie', property = 'P551'},
			{type = 'row', label = 'Date de décès', value = 'date de décès', property = 'P570'},
			{type = 'row', label = 'Lieu de décès', value = 'lieu de décès', property = 'P20'},
			{type = 'row', label = 'Cause de décès', value = 'cause de décès', property = 'P509'},
			{type = 'row', label = 'Taille', value = 'taille', property = 'P2048'},
			{type = 'row', label = 'Masse', value = 'masse', property = 'P2067'},
			person.family(),
			{type = 'row', label = 'Occupation', value = 'occupation', property = 'P106'},
			{type = 'row', label = 'Activité', plurallabel = 'Activités', value = 'activité', property = 'P101'},
			{type = 'row', label = 'Propriétaire', plurallabel = 'Propriétaires', value = 'propriétaire', property = 'P127'},
			{type = 'row', label = 'Fait notable', value = 'notabilité'},
			{type = 'row', label = 'Distinction(s)', value = 'distinction', property = 'P166'},
			{type = 'row', label = 'Notes', value = 'notes'},
		}},
	}
}