« Module:Infobox/Fonctions/Personne » : différence entre les versions
simplification du code, remet singtitle pour les oeuvres (merci Oliv0, Zebulon), change le nom du paramètre et du titre pour honorifictitle, sinon c'est le même que nobilitytitle ! à vérifier en doc et autres.. |
m Révocation des modifications de Hercule (retour à la dernière version de Simon Villeneuve) |
||
(150 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
-- Functions utilisées par les infobox personnes | -- Functions utilisées par les infobox personnes | ||
local p = {} | local p = {} | ||
local wikidata = require "Module:Interface Wikidata".fromLua | local localdata = require( 'Module:Infobox/Localdata' ) | ||
local item = localdata.item | |||
local wikidata = require( "Module:Interface Wikidata" ).fromLua | |||
local general = require "Module:Infobox/Fonctions" | local general = require "Module:Infobox/Fonctions" | ||
local datemodule = require "Module:Date" | local datemodule = require "Module:Date" | ||
local complexdate = require "Module:Date complexe" | local complexdate = require "Module:Date complexe" | ||
local linguistic = require "Module:Linguistique" | local linguistic = require "Module:Linguistique" | ||
local militaryranks = require "Module:Dictionnaire Wikidata/Grades militaires" | |||
--=== Accord en genre | --=== Accord en genre | ||
-- établit la variable gender pour l'élément | -- établit la variable gender pour l'élément | ||
local function | local function getgender(id) | ||
local vals = { | local vals = { | ||
['Q6581072'] = 'f', | ['Q6581072'] = 'f', | ||
Ligne 16 : | Ligne 19 : | ||
default = '?' | default = '?' | ||
} | } | ||
local gender = wikidata.formatStatements{entity = | local gender = wikidata.formatStatements{entity = id, property = 'P21', displayformat = 'raw'} | ||
return vals[gender] or vals.default | return vals[gender] or vals.default | ||
end | end | ||
local gender = | local gender = getgender(item) | ||
-- récupération des libellés spéciaux codés en dur sur Wikipédia (attention : contient à la fois le libellé et le lien) | -- récupération des libellés spéciaux codés en dur sur Wikipédia (attention : contient à la fois le libellé et le lien) | ||
Ligne 26 : | Ligne 29 : | ||
-- récupération des libellés genrés de Wikidata | -- récupération des libellés genrés de Wikidata | ||
local function genderedlabel(id) | local function genderedlabel(id, labelgender) | ||
local label | local label | ||
if gender == 'f' then -- femme : chercher le libellé dans P2521 (libellé féminin) | if not labelgender then | ||
label = wikidata.formatStatements{entity = id, property = 'P2521', isinlang = 'fr', numval = 1} | labelgender = gender -- si le genre n'est pas indiqué, c'est celui de la personne dont c'est l'infobox | ||
end | |||
if labelgender == 'f' then -- femme : chercher le libellé dans P2521 (libellé féminin) | |||
label = wikidata.formatStatements{entity = id, property = 'P2521', isinlang = 'fr', numval = 1, ucfirst = '-'} | |||
elseif labelgender == 'm' then -- homme : chercher le libellé dans P3321 (libellé masculin) | |||
label = wikidata.formatStatements{entity = id, property = 'P3321', isinlang = 'fr', numval = 1, ucfirst = '-'} | |||
end | end | ||
if not label then | if not label then | ||
Ligne 46 : | Ligne 54 : | ||
Q2309784 = 'en cyclisme', -- cycliste | Q2309784 = 'en cyclisme', -- cycliste | ||
Q16947657 = 'en arts plastiques', -- lithographe | Q16947657 = 'en arts plastiques', -- lithographe | ||
Q11569986 = 'en arts plastiques', -- graveur | |||
Q13365770 = 'en arts plastiques', -- graveur sur cuivre | |||
Q21925567 = 'en arts plastiques', -- sérigraphe | |||
Q10862983 = 'en arts plastiques', -- aquafortiste | |||
} | } | ||
local function getdatetopic() -- obtient le lien le plus approprié pour une date en fonction de la profession | local function getdatetopic() -- obtient le lien le plus approprié pour une date en fonction de la profession | ||
local claims = wikidata. | local claims = wikidata.stringTable{entity = item, property = 'P106', excludespecial = true, displayformat = "raw"} | ||
if not claims then | if not claims then | ||
return nil | return nil | ||
end | end | ||
for i, j in pairs(claims) do | for i, j in pairs(claims) do | ||
if datelinks[j] then | |||
if datelinks[ | return datelinks[j] | ||
return datelinks[ | |||
end | end | ||
end | end | ||
Ligne 64 : | Ligne 75 : | ||
--===== | --===== | ||
local function wikidatadate(prop) -- fonction à vocation généraliste, à externaliser | local function wikidatadate(prop, args) -- fonction à vocation généraliste, à externaliser | ||
return wikidata.wikidataDate(prop, item, | if not args then | ||
args = {} | |||
end | |||
args.linktopic = args.linktopic or linktopic | |||
return wikidata.wikidataDate(prop, item, args) | |||
end | end | ||
local birthdate = localdata['naissance'] or localdata['date de naissance'] or wikidatadate('P569') | local unknowndatelabel = "date inconnue" | ||
local deathdate = localdata['décès'] or localdata['date de décès'] or wikidatadate('P570') | local birthdate = localdata['naissance'] or localdata['date de naissance'] or wikidatadate('P569', {unknownlabel = unknowndatelabel}) | ||
local deathdate = localdata['décès'] or localdata['date de décès'] or wikidatadate('P570', {unknownlabel =unknowndatelabel }) | |||
Ligne 103 : | Ligne 119 : | ||
if period then | if period then | ||
period = '<span style="font-weight:normal">' .. period .. '</span>' | |||
local periodrow = {type = 'row1col', color = '#F9F9F9', value = period } | local periodrow = {type = 'row1col', color = '#F9F9F9', value = period } | ||
table.insert(rows, periodrow) | table.insert(rows, periodrow) | ||
Ligne 120 : | Ligne 137 : | ||
local function format3(event, period, predecessor, successor, displayformat) | local function format3(event, period, predecessor, successor, displayformat, details) | ||
if details then | |||
details = '<span style="font-weight:normal">' .. details .. '</span>' | |||
event = linguistic.conj({event, details}, "new line") | |||
end | |||
local mainrow = {type = 'row1col', color = 'secondcolor', value = event } | local mainrow = {type = 'row1col', color = 'secondcolor', value = event } | ||
if period then | |||
period = '<span style="font-weight:normal">' .. period .. '</span>' | |||
end | |||
local periodrow = {type = 'row1col', color = '#F9F9F9', value = period } | local periodrow = {type = 'row1col', color = '#F9F9F9', value = period } | ||
local successionrow = { | local successionrow = { | ||
style = {['background-color'] = | style = {['background-color'] = '#E1E1E1', ['padding-bottom'] = '2%'}, | ||
type = 'navbox', | type = 'navbox', | ||
inner = true, | inner = true, | ||
Ligne 135 : | Ligne 159 : | ||
local function timeline(localparam, wdconf, timelineformat, title, singtitle) -- affiche date : événement (suppose les événements déjà triés) | local function timeline(localparam, wdconf, timelineformat, title, singtitle, details) -- affiche date : événement (suppose les événements déjà triés) | ||
local rows = {} | local rows = {} | ||
local function returnTable() | local function returnTable() | ||
return { | return { | ||
type = "table", | type = "table", | ||
title = title, | title = title, | ||
rows = rows | rows = rows | ||
} | } | ||
Ligne 149 : | Ligne 171 : | ||
-- avec données locales | -- avec données locales | ||
local val = localdata[localparam] | local val = localdata[localparam] | ||
if val then | if val == '-' then | ||
return nil | |||
elseif val then | |||
table.insert(rows, {type = 'row1col', color = 'secondcolor', value = val}) | |||
return returnTable() | return returnTable() | ||
end | end | ||
-- avec données wikidata | -- avec données wikidata | ||
if not wdconf then | if not wdconf then | ||
Ligne 163 : | Ligne 186 : | ||
wdconf.labelformat = wdconf.labelformat or function(id) return genderedlabel(id) end | wdconf.labelformat = wdconf.labelformat or function(id) return genderedlabel(id) end | ||
wdconf.linktopic = wdconf.linktopic or "-" | wdconf.linktopic = wdconf.linktopic or "-" | ||
wdconf.stilltrue = not(deathdate) -- si la personne est vivante, on emploie "depuis" plutôt que "à partir de" (mais lorsque c'est fini mais que la date de fin manque, ça devient faux) | wdconf.stilltrue = not(deathdate) -- si la personne est vivante, on emploie "depuis" plutôt que "à partir de" (mais lorsque c'est fini mais que la date de fin manque, ça devient faux) | ||
Ligne 170 : | Ligne 192 : | ||
return nil | return nil | ||
end | end | ||
if #statements == 1 then | |||
title = singtitle | |||
end | |||
local displayformats = { | local displayformats = { | ||
A = format1, | A = format1, | ||
Ligne 180 : | Ligne 204 : | ||
rows = {} | rows = {} | ||
for i, statement in pairs(statements) do | for i, statement in pairs(statements) do | ||
local event = wikidata.formatStatement(statement, wdconf) | local event = linguistic.ucfirst(wikidata.formatStatement(statement, wdconf)) | ||
local predecessor = wikidata.getFormattedQualifiers(statement, {'P155', 'P1365'}) | local predecessor = wikidata.getFormattedQualifiers(statement, {'P155', 'P1365'}) | ||
local successor = wikidata.getFormattedQualifiers(statement, {'P156', 'P1366'}) | local successor = wikidata.getFormattedQualifiers(statement, {'P156', 'P1366'}) | ||
local period = wikidata.statementDate(statement, wdconf ) | local period = wikidata.statementDate(statement, wdconf ) | ||
local row = applyformat(event, period, predecessor, successor, wdconf) | local detailstr | ||
if type(details) == "function" then | |||
detailstr = details(statement) | |||
end | |||
local row = applyformat(event, period, predecessor, successor, wdconf, detailstr) | |||
if row then | if row then | ||
table.insert(rows, row) | table.insert(rows, row) | ||
end | end | ||
end | end | ||
table.insert(rows, {type = "external text", value = function() return wikidata.addtrackingcat(wdconf.property) end}) | |||
return returnTable() | return returnTable() | ||
end | end | ||
Ligne 194 : | Ligne 223 : | ||
local function dateandplace(thedate, theplace) | local function dateandplace(thedate, theplace) | ||
if thedate | if thedate and theplace and mw.ustring.find(thedate, "inconnu") and mw.ustring.find(theplace, "inconnu") then | ||
theplace = nil | |||
thedate = mw.ustring.gsub(thedate, unknowndatelabel, "Date et lieu inconnus") | |||
end | end | ||
return linguistic.conj({thedate, theplace}, "new line") | |||
end | end | ||
Ligne 222 : | Ligne 239 : | ||
function p.mainimage() | function p.mainimage() | ||
-- demande d'illustration que si la personne est née après 1900, sinon c'est souvent impossible à trouver | -- demande d'illustration que si la personne est née ou morte après 1900, sinon c'est souvent impossible à trouver | ||
local defaultimage = 'Defaut 2.svg' | local defaultimage = 'Defaut 2.svg' | ||
local age = wikidata.stringTable{property = 'P569', entity = item, displayformat = 'raw', excludespecial = true} | local age = wikidata.stringTable{property = 'P569,P570', entity = item, displayformat = 'raw', excludespecial = true} | ||
if age then | if age then | ||
Ligne 242 : | Ligne 259 : | ||
{'P1477', 'Nom de naissance', 'Noms de naissance', 'nom de naissance'}, | {'P1477', 'Nom de naissance', 'Noms de naissance', 'nom de naissance'}, | ||
{'P1449', 'Surnom', 'Surnoms', 'surnom'}, | {'P1449', 'Surnom', 'Surnoms', 'surnom'}, | ||
{' | {'P2001', 'Romanisation révisée', 'Romanisation révisée', 'nom de pinceau'}, | ||
{'P1942', 'McCune-Reischauer', 'McCune-Reischauer', 'nom de pinceau'}, | |||
{'P742', 'Pseudonyme', 'Pseudonymes', 'pseudonyme'}, | {'P742', 'Pseudonyme', 'Pseudonymes', 'pseudonyme'}, | ||
{'P1782', 'Prénom social', 'Prénoms sociaux', 'prénom social'}, | {'P1782', 'Prénom social', 'Prénoms sociaux', 'prénom social'}, | ||
Ligne 248 : | Ligne 266 : | ||
{'P1785', 'Nom de temple', 'Noms de temple', 'nom de temple'}, | {'P1785', 'Nom de temple', 'Noms de temple', 'nom de temple'}, | ||
{'P1787', 'Nom de pinceau', 'Noms de pinceau', 'nom de pinceau'}, | {'P1787', 'Nom de pinceau', 'Noms de pinceau', 'nom de pinceau'}, | ||
{nil, 'Autres noms', 'autres noms'} | {'P428', 'Abréviation en botanique', 'Abréviations en botanique', 'abréviation en botanique'}, | ||
{'P835', 'Abréviation', 'Abréviations', 'abréviation'}, | |||
{nil, 'Autres noms', 'Autres noms', 'autres noms'}, | |||
} | } | ||
local rows = {type = | local birthnamerow = { -- un peu particulier, donc à part | ||
type = "row", | |||
wikidata = function() | |||
local s = wikidata.formatAndCat{entity = item, property = "P1559"} | |||
if (not s) then | |||
return nil | |||
end | |||
-- regarde si le nom de la valeur ressemble au libellé (en tenant compte de la pollution des marqueures de langue | |||
local label = mw.ustring.lower(wikidata.getLabel(item) or "") | |||
local useless | |||
if mw.ustring.find(mw.ustring.lower(s), mw.ustring.lower(label), 0, true) then | |||
useless = true | |||
end | |||
if useless then | |||
return nil | |||
end | |||
return s | |||
end, | |||
label = 'Nom dans la langue maternelle', | |||
plurallabel = 'Noms dans la langue maternelle', | |||
value = 'nom dans la langue maternelle', | |||
} | |||
local rows = {type = "multi", rows = {birthnamerow}} | |||
for i, j in pairs(names) do | for i, j in pairs(names) do | ||
local query | local query | ||
if j[1] and not localdata['autres noms'] then -- lorsqu'il y a un paramètre "autres noms", Wikidata est désactivée pour éviter risques de doublon | if j[1] and not localdata['autres noms'] then -- lorsqu'il y a un paramètre "autres noms", Wikidata est désactivée pour éviter risques de doublon | ||
query = {property = j[1], showqualifiers = {'P1721'}, conjtype = ' | query = {property = j[1], showqualifiers = {'P1721'}, conjtype = 'new line'} | ||
end | end | ||
table.insert(rows.rows, {type = 'row', value = j[4], wikidata = query, label = j[2], plurallabel = j[3]}) | table.insert(rows.rows, {type = 'row', value = j[4], wikidata = query, label = j[2], plurallabel = j[3]}) | ||
Ligne 270 : | Ligne 313 : | ||
function() | function() | ||
local thedate = datemodule.dateInfobox{args = {[1] = 'naissance', [2] = birthdate or '', [3] = deathdate or '', qualificatif = linktopic}} | local thedate = datemodule.dateInfobox{args = {[1] = 'naissance', [2] = birthdate or '', [3] = deathdate or '', qualificatif = linktopic}} | ||
local theplace = localdata['lieu de naissance'] or wikidata.formatAndCat({entity =item, property= 'P19', rank = 'best', conjtype= ' ou '}) | local theplace = localdata['lieu de naissance'] or wikidata.formatAndCat({entity =item, property= 'P19', rank = 'best', conjtype= ' ou ', unknownlabel = "lieu inconnu"}) | ||
return dateandplace(thedate, theplace) | return dateandplace(thedate, theplace) | ||
end | end | ||
Ligne 277 : | Ligne 320 : | ||
function p.death() -- même fonctionnement que la fonction p.birth | function p.death() -- même fonctionnement que la fonction p.birth | ||
local label = "Décès" | |||
local val | |||
local thedate, theplace | |||
local disparitiondate, deathdate | |||
-- date | |||
--- récup données locales | |||
disparitiondate = localdata["disparition"] | |||
deathdate = localdata['décès'] or localdata['date de décès'] | |||
--- récup Wikidata | |||
if not (disparitiondate or deathdate) then | |||
disparitiondate = wikidata.formatAndCat{entity = item, property = "P746", rank = 'best', conjtype= ' ou '} | |||
if not disparitiondate then | |||
deathdate = wikidatadate('P570', {unknownlabel = unknowndatelabel }) | |||
end | |||
end | |||
--- mise en forme | |||
thedate = datemodule.dateInfobox{args = {[1] = 'mort', [2] = birthdate or '', [3] = deathdate or disparitiondate or '', qualificatif = linktopic, unknownlabel = "date inconnue"}} | |||
-- lieu | |||
theplace = localdata["lieu de décès"] or wikidata.formatAndCat{entity = item, property= 'P20', rank = 'best', conjtype= ' ou ', unknownlabel = "lieu inconnu"} | |||
-- Adaptations si on a la date de disparition à la place de la date de décès | |||
if disparitiondate then | |||
if theplace then -- cas un peu bizarre et pas très logique, ne vaut pas trop la peine d'un affichage plus élaboré | |||
disparitiondate = "Date de disparition : " .. thedate | |||
theplace = "Lieu de décès : " .. theplace | |||
else | |||
label = "Disparition" | |||
end | |||
end | |||
val = dateandplace(thedate, theplace) | |||
return { | return { | ||
type = 'row', | type = 'row', | ||
label = | label = label, | ||
value = | value = function() return val end, | ||
} | } | ||
end | end | ||
Ligne 294 : | Ligne 372 : | ||
label = 'Période d’activité', | label = 'Période d’activité', | ||
value = "Période d'activité", | value = "Période d'activité", | ||
wikidata = function() return wikidatadate('P1317') end | wikidata = function() | ||
local startDate = wikidata.formatStatements{entity = item, property = "P2031", conjtype = "or", sorttype = "chronological"} | |||
local endDate = wikidata.formatStatements{entity = item, property = "P2032", conjtype = "or", sorttype = "chronological"} | |||
if not (startDate or endDate) then | |||
return wikidatadate('P1317') | |||
end | |||
return complexdate.daterange(startDate, endDate, {precision = 11}) | |||
end | |||
} | } | ||
end | end | ||
Ligne 300 : | Ligne 385 : | ||
function p.placeofburial() | function p.placeofburial() | ||
return | return | ||
{type = 'row', label = " | {type = 'row', label = "Sépulture", value = "sépulture", property = 'P119'} | ||
end | end | ||
function p.nationality() | function p.nationality() | ||
-- à améliorer | -- à améliorer étant donnée les moeurs Wikidata comme nationalité : Empire allemand (1901-1918) République de Weimar (1918-1933) | ||
local function wdDate() | local function wdDate() | ||
local nation = require "Module:Country data".nationality | local nation = require "Module:Country data".nationality | ||
Ligne 317 : | Ligne 402 : | ||
end | end | ||
return | return { | ||
property = 'P27', | property = 'P27', | ||
vals = statements, | -- vals = statements, -- statments est une variable non déclarée dans ce module | ||
showdate = true, | showdate = true, | ||
entity = item, | entity = item, | ||
Ligne 327 : | Ligne 412 : | ||
displayformat = | displayformat = | ||
function(snak) | function(snak) | ||
local g = gender -- genre de la personne, pour affichage du gentilé | |||
if g == '?' then -- si inconnu, au masculin | |||
g = 'm' | |||
end | |||
local val, success = nation(wikidata.getid(snak), | local val, success = nation(wikidata.getid(snak), g) | ||
if not success then | if not success then | ||
val = wikidata.formatSnak(snak) | val = wikidata.formatSnak(snak) | ||
Ligne 345 : | Ligne 430 : | ||
plurallabel = 'Nationalités', | plurallabel = 'Nationalités', | ||
value = 'nationalité', | value = 'nationalité', | ||
wikidata = | wikidata = wdDate() -- wdDate() retourne une table | ||
} | } | ||
end | end | ||
function p.nativelanguage() | function p.nativelanguage() | ||
return | return | ||
Ligne 384 : | Ligne 468 : | ||
-- parcours professionel | -- parcours professionel | ||
function p.education() -- à améliorer | function p.education() -- à améliorer | ||
local query = {sorttype= 'chronological', property = 'P69', showdate = true, showqualifiers = 'P512', conjtype = ' | local query = {sorttype= 'chronological', property = 'P69', showdate = true, showqualifiers = 'P512', conjtype = 'new line', linktopic = '-'} | ||
return { | return { | ||
type = 'row', | type = 'row', | ||
Ligne 403 : | Ligne 487 : | ||
labelformat = function(id) return genderedlabel(id) end, | labelformat = function(id) return genderedlabel(id) end, | ||
speciallabels = occupationlabels, | speciallabels = occupationlabels, | ||
excludevalues = { -- les occupations qui ne méritent pas d'être affichées | excludevalues = { -- les occupations qui ne méritent pas d'être affichées | ||
'Q482980', -- auteur | 'Q482980', -- auteur | ||
'Q15980158' | --'Q15980158', "auteur de non-fiction" a depuis été traduit par "essayiste" | ||
'Q18814623', -- autobiographe | |||
'Q948329', -- acteur de genre | |||
'Q1209498', -- juriste-poète | |||
} | } | ||
}, | }, | ||
Ligne 438 : | Ligne 525 : | ||
property = 'P39', | property = 'P39', | ||
rank = 'valid', | rank = 'valid', | ||
sorttype = 'inverted', | |||
speciallabels = occupationlabels, | speciallabels = occupationlabels, | ||
defaultlinkquery = {property = 'P2354' | defaultlinkquery = {property = {'P2354', 'P2389', 'P453', 'P361', 'P108'}}, -- liens par défaut : liste, puise organisme dirigé, "membre de", "partie de", employeur | ||
} | } | ||
-- sur une ligne séparée : juridiction, "de", circonsription, diocèse, affiliation, assemblée, parti, emmloyeur | |||
local details = function(statement) return wikidata.getFormattedQualifiers(statement, {'P1001', 'P642', 'P768', 'P708', 'P1416', 'P194', 'P102', 'P108', 'P937'}) end | |||
local displayformat = "C" | local displayformat = "C" | ||
return timeline(localparam, wdconf, displayformat, title, singtitle) | return timeline(localparam, wdconf, displayformat, title, singtitle, details) | ||
end | end | ||
function p.nobilitytitle() | function p.nobilitytitle() | ||
local title, singtitle = "Titres | local title, singtitle = "Titres de noblesse", "Titre de noblesse" | ||
local localparam = "titre | local localparam = "titre de noblesse" | ||
local wdconf = {property = 'P97', entity = item, rank = 'valid'} | local wdconf = { | ||
property = 'P97', | |||
entity = item, rank = 'valid', | |||
showqualifiers = {'P642'}, | |||
defaultlinkquery = {property = {'P2354', 'P361'}}, -- liens par défaut : liste, puise organisme dirigé, "membre de" et "partie de" | |||
} | |||
local displayformat = "B" | local displayformat = "B" | ||
Ligne 458 : | Ligne 552 : | ||
function p.honorifictitle() | function p.honorifictitle() | ||
local title, singtitle = "Titres | local title, singtitle = "Titres honorifiques", "Titre honorifique" | ||
local localparam = "titre honorifique" | local localparam = "titre honorifique" | ||
local wdconf = {property = 'P511', entity = item, rank = 'valid'} | local wdconf = {property = 'P511', entity = item, rank = 'valid'} | ||
Ligne 464 : | Ligne 558 : | ||
return timeline(localparam, wdconf, displayformat, title, singtitle) | return timeline(localparam, wdconf, displayformat, title, singtitle) | ||
end | |||
function p.tombe() | |||
return { | |||
type = 'images', | |||
imageparameters = {'tombe'}, | |||
defaultimages = nil, | |||
defaultupright = 0.7, | |||
uprightparameter = 'upright tombe', | |||
sizeparameter = 'taille tombe', -- obsolète | |||
captionparameter = 'légende tombe', | |||
defaultcaption = 'sépulture', | |||
property = 'P1442', | |||
numval = 1, | |||
} | |||
end | |||
function p.plaque() | |||
return { | |||
type = 'images', | |||
imageparameters = {'plaque'}, | |||
defaultimages = nil, | |||
defaultupright = 0.7, | |||
uprightparameter = 'upright plaque', | |||
sizeparameter = 'taille plaque', -- obsolète | |||
captionparameter = 'légende plaque', | |||
defaultcaption = 'plaque commémorative', | |||
property = 'P1801', | |||
numval = 1, | |||
} | |||
end | end | ||
Ligne 474 : | Ligne 598 : | ||
uprightparameter = 'upright blason', | uprightparameter = 'upright blason', | ||
sizeparameter = 'taille blason', -- obsolète | sizeparameter = 'taille blason', -- obsolète | ||
captionparameter = ' | captionparameter = 'légende blason', | ||
defaultcaption = '', | defaultcaption = 'blason', | ||
property = 'P94', | property = 'P94', | ||
numval = 1, | |||
} | |||
end | |||
function p.sceau() | |||
return { | |||
type = 'images', | |||
imageparameters = {'sceau'}, | |||
defaultimages = nil, | |||
defaultupright = 0.7, | |||
uprightparameter = 'upright sceau', | |||
sizeparameter = 'taille sceau', -- obsolète | |||
captionparameter = 'légende sceau', | |||
defaultcaption = 'sceau', | |||
property = 'P158', | |||
numval = 1, | |||
} | |||
end | |||
function p.monogram() | |||
return { | |||
type = 'images', | |||
imageparameters = {'monogramme'}, | |||
defaultimages = nil, | |||
defaultsize = '100px', | |||
sizeparameter = 'taille monogramme', | |||
captionparameter = 'légende monogramme', | |||
defaultcaption = 'Monogramme', | |||
property = 'P1543', | |||
numval = 1, | numval = 1, | ||
} | } | ||
Ligne 488 : | Ligne 641 : | ||
defaultsize = '150px', | defaultsize = '150px', | ||
sizeparameter = 'taille drapeau', | sizeparameter = 'taille drapeau', | ||
captionparameter = ' | captionparameter = 'légende drapeau', | ||
defaultcaption = 'Drapeau', | defaultcaption = 'Drapeau', | ||
property = 'P41', | property = 'P41', | ||
numval = 1, | |||
} | |||
end | |||
function p.logo() | |||
return { | |||
type = 'images', | |||
imageparameters = {'logo'}, | |||
defaultimages = nil, | |||
defaultsize = '150px', | |||
sizeparameter = 'taille logo', | |||
captionparameter = 'légende logo', | |||
defaultcaption = 'Marque ou logotype', | |||
property = 'P154', | |||
numval = 1, | numval = 1, | ||
} | } | ||
Ligne 501 : | Ligne 668 : | ||
label = 'Parti politique', | label = 'Parti politique', | ||
plurallabel = 'Partis politiques', | plurallabel = 'Partis politiques', | ||
wikidata = { property = 'P102', sorttype= 'chronological', showdate = true, conjtype = ' | wikidata = { property = 'P102', sorttype= 'chronological', showdate = true, conjtype = 'new line', excludespecial = true}, | ||
} | } | ||
end | end | ||
function p.memberof() | function p.memberof() | ||
return { | return {type = 'multi', rows = { | ||
{ | |||
type = 'row', | |||
value = 'ordre de chevalerie', | |||
label = 'Ordre de chevalerie', | |||
} | plurallabel = 'Ordres de chevalerie', | ||
wikidata = {property = 'P550', sorttype= 'chronological', showdate = true}, | |||
}, | |||
{ | |||
type = 'row', | |||
label = 'Membre de', | |||
value = 'membre de', | |||
wikidata = {property = 'P463', sorttype= 'chronological', showdate = true, precision = 'year'}, | |||
}, | |||
}} | |||
end | end | ||
function p.awards() | function p.awards() | ||
local function awardsList( | local function awardsList() | ||
local majorawards = require "Module:Dictionnaire Wikidata/Distinctions" | |||
local query = { | |||
entity = item, | |||
property= 'P166', | |||
sorttype= 'chronological', | |||
grouped = true, | |||
showqualifiers = 'P642', | |||
showdate= true, | |||
precision = 'year', | |||
conjtype = 'new line', | |||
textformat = 'minimum', | |||
linktopic = '-', | |||
defaultlinkquery = {property = {'P2354', 'P361'}}, | |||
excludevalues = 'Q15631401', -- membre de la Royal Society, redondance avec le champ « membre de » (P463) | |||
speciallabels = majorawards, | |||
labelformat = function(id) return genderedlabel(id) end, | |||
} | |||
local claims = wikidata.getClaims(query) | |||
if (not claims) then | |||
return nil | |||
end | |||
local str = wikidata.formatAndCat(query) | |||
if #claims < 4 then | |||
return str, #claims | |||
end | |||
--si trop de valeurs, n'afficher que les importantes de [[Module:Dictionnaire Wikidata/Distinctions]], et mettre les autrs dans un menu pliant | |||
--- récupération des importantes | |||
local majorStr | |||
local targetvalues = {} | |||
for i, j in pairs(majorawards) do | |||
table.insert(targetvalues, i) | |||
end | |||
query.targetvalue = targetvalues | |||
query.value, query.claims, query.valuetable = nil, nil, nil -- apparemment sinon ce n'est pas le cas, pourquoi ? BUG IMPORTANT | |||
majorStr = wikidata.formatAndCat(query) | |||
--- repliage des autres | |||
local message = "'''Liste détaillée'''" | |||
local allAwardsTable = mw.html.create('div') | |||
:addClass("toccolours mw-collapsible mw-collapsed") | |||
:wikitext(message) | |||
:css{border = "none"} | |||
:tag('div') | |||
:addClass("mw-collapsible-content") | |||
:css{['line-height'] = '150%'} -- sinon c'est vraiment serré | |||
:wikitext( str) | |||
:done() | |||
:allDone() | |||
return linguistic.conj({majorStr, tostring(allAwardsTable)}, "<br />"), #claims | |||
end | end | ||
return { | return { | ||
type = 'row', | type = 'row', | ||
value = {'prix', 'récompenses', 'distinction', 'distinctions'}, | value = {'prix', 'récompenses', 'distinction', 'distinctions'}, | ||
label = ' | label = 'Distinctions', | ||
singularlabel = 'Distinction', | |||
wikidata = function() return awardsList( | wikidata = function() return awardsList() end | ||
} | } | ||
end | end | ||
Ligne 595 : | Ligne 761 : | ||
type = 'row', | type = 'row', | ||
label = | label = | ||
function(localdata, item) | function(localdata, item) | ||
if gender == 'f' then | if gender == 'f' then | ||
return 'Influencée par' | return 'Influencée par' | ||
Ligne 615 : | Ligne 780 : | ||
label = 'A influencé', | label = 'A influencé', | ||
value = {'a influencé', 'influence de'}, | value = {'a influencé', 'influence de'}, | ||
} | } | ||
end | end | ||
Ligne 638 : | Ligne 802 : | ||
plurallabel = 'Religions', | plurallabel = 'Religions', | ||
value = 'religion', | value = 'religion', | ||
property = 'P140', | wikidata = {property = 'P140', sorttype= 'chronological', showdate = true, precision = 'year', excludevalues = 'Q7066'}, | ||
}, | }, | ||
{ | { | ||
Ligne 645 : | Ligne 809 : | ||
value = 'date de baptême', | value = 'date de baptême', | ||
property = 'P1636', | property = 'P1636', | ||
}, | |||
{ | |||
type = 'row', | |||
label = 'Parrain', | |||
plurallabel = 'Parrains', | |||
value = 'parrain', | |||
property = 'P1290', | |||
}, | }, | ||
{ | { | ||
Ligne 666 : | Ligne 837 : | ||
value = 'consécrateur', | value = 'consécrateur', | ||
property = 'P1598', | property = 'P1598', | ||
}, | |||
{ | |||
type = 'row', | |||
label = | |||
function(localdata, item) | |||
if gender == 'f' then | |||
return 'Vénérée par' | |||
elseif gender == 'm' then | |||
return 'Vénéré par' | |||
else | |||
return 'Vénéré(e) par' | |||
end | |||
end, | |||
value = 'vénéré par', | |||
property = 'P1049', | |||
}, | }, | ||
{ | { | ||
Ligne 671 : | Ligne 857 : | ||
label = 'Étape de canonisation', | label = 'Étape de canonisation', | ||
value = 'étape de canonisation', | value = 'étape de canonisation', | ||
property = 'P411', | wikidata = { | ||
property = 'P411', | |||
labelformat = function(id) return genderedlabel(id) end, | |||
}, | |||
}, | }, | ||
}} | }} | ||
Ligne 691 : | Ligne 880 : | ||
plurallabel = 'Grades militaires', | plurallabel = 'Grades militaires', | ||
value = 'grade militaire', | value = 'grade militaire', | ||
wikidata = {property = 'P410', showdate = true, sorttype= 'chronological', precision = 'year'}, | wikidata = {property = 'P410', showdate = true, sorttype= 'chronological', precision = 'year', speciallabels = militaryranks, conjtype ='new line'}, | ||
}, | }, | ||
{ | { | ||
Ligne 699 : | Ligne 888 : | ||
value = 'conflit', | value = 'conflit', | ||
wikidata = {property = 'P607', showdate = true, sorttype= 'chronological', precision = 'year'}, | wikidata = {property = 'P607', showdate = true, sorttype= 'chronological', precision = 'year'}, | ||
}, | |||
}} | |||
end | |||
-- Carrière de torero | |||
function p.torero() | |||
return {type = 'multi', rows = { | |||
{ | |||
type = "row", | |||
label = "Alternative", | |||
value = "alternative", | |||
wikidata = function() return wikidata.keyDate("Q2840411", item) end | |||
}, | |||
{ | |||
type = "row", | |||
label = "Confirmation d'alternative", | |||
value = "confirmation alt", | |||
wikidata = function() return wikidata.keyDate("Q23308805", item) end | |||
}, | }, | ||
}} | }} | ||
Ligne 708 : | Ligne 915 : | ||
{ | { | ||
type = 'row', | type = 'row', | ||
label = ' | label = 'Spécialité', | ||
plurallabel = ' | plurallabel = 'Spécialités', | ||
value = ' | value = 'spécialité', | ||
wikidata = {property = ' | wikidata = {property = 'P413', | ||
labelformat = function(id) return genderedlabel(id) end, | |||
}, | |||
}, | |||
{ | |||
type = 'row', | |||
label = 'Discipline sportive', | |||
plurallabel = 'Disciplines sportives', | |||
value = 'discipline sportive', | |||
wikidata = {property = 'P2416'}, | |||
}, | }, | ||
{ | { | ||
type = 'row', | type = 'row', | ||
label = ' | label = 'Prise de raquette', | ||
value = 'prise de raquette', | |||
value = ' | wikidata = {property = 'P741'}, | ||
wikidata = {property = ' | }, | ||
{ | |||
type = 'row', | |||
label = 'Tire de la', | |||
value = 'tire', | |||
wikidata = {property = 'P423'}, | |||
}, | }, | ||
{ | { | ||
Ligne 725 : | Ligne 946 : | ||
plurallabel = 'Équipes', | plurallabel = 'Équipes', | ||
value = 'équipe', | value = 'équipe', | ||
wikidata = {property = 'P54', sorttype= 'chronological', showdate = true, | wikidata = { | ||
property = 'P54', | |||
sorttype= 'chronological', | |||
conjtype = "new line", | |||
statementformat = function(statement) | |||
local str = wikidata.formatStatement(statement, {showdate = true}) | |||
local compets = wikidata.getFormattedQualifiers(statement, {"P1350"}) | |||
if compets and (tonumber(compets) > 1) then | |||
compets = compets .. " matchs joués" | |||
elseif compets then | |||
compets = compets .. " match joué" | |||
end | |||
local points = wikidata.getFormattedQualifiers(statement, {"P1351"}) | |||
if points and (tonumber(points) > 1) then | |||
points = points .. " points marqués" | |||
elseif points then | |||
points = points .. "point marqué" | |||
end | |||
local qualifiers = linguistic.conj{compets, points} | |||
if qualifiers then | |||
str= str .. " <small> – " .. qualifiers .. " </small>" | |||
end | |||
return str | |||
end | |||
} | |||
}, | }, | ||
{ | { | ||
Ligne 731 : | Ligne 976 : | ||
label = 'Capes internationales', | label = 'Capes internationales', | ||
value = 'capes', | value = 'capes', | ||
wikidata = {property = 'P1129', numval = ' | wikidata = {property = 'P1129', numval = 1}, | ||
}, | |||
{ | |||
type = 'row', | |||
label = 'Titre aux échecs', | |||
plurallabel = 'Titres aux échecs', | |||
value = 'titre aux échecs', | |||
wikidata = {property = 'P2962', sorttype= 'chronological', showdate = true, precision = 'year'}, | |||
}, | |||
{ | |||
type = 'row', | |||
label = 'Classement Elo', | |||
value = 'classement elo', | |||
wikidata = {property = 'P1087', numval = '3', sorttype = 'inverted', conjtype = 'new line', showdate = true, precision = 'month', removedupes = true}, | |||
}, | |||
{ | |||
type = 'row', | |||
label = 'Record détenu', | |||
plurallabel = 'Records détenus', | |||
value = 'record détenu', | |||
wikidata = {property = 'P1000', sorttype= 'chronological', showdate = true}, | |||
}, | }, | ||
{ | { | ||
Ligne 762 : | Ligne 1 027 : | ||
{ | { | ||
type = 'row', | type = 'row', | ||
label = 'Maître', | label = localdata['intitulé maître'] or 'Maître', | ||
plurallabel = 'Maîtres', | plurallabel = 'Maîtres', | ||
value = {'maître', 'maîtres'}, | value = {'maître', 'maîtres'}, | ||
Ligne 779 : | Ligne 1 044 : | ||
label = | label = | ||
function(localdata, item) | function(localdata, item) | ||
if gender == 'f' then | if gender == 'f' then | ||
return 'Représentée par' | return 'Représentée par' | ||
Ligne 797 : | Ligne 1 061 : | ||
value = 'partenaire', | value = 'partenaire', | ||
wikidata = {property = 'P1327'}, | wikidata = {property = 'P1327'}, | ||
}, | }, | ||
{ | { | ||
Ligne 809 : | Ligne 1 067 : | ||
plurallabel = 'Élèves', | plurallabel = 'Élèves', | ||
value = {'élève', 'élèves'}, | value = {'élève', 'élèves'}, | ||
wikidata = {property = 'P802', sorttype= 'chronological', showdate = true, precision = 'year', numval = | wikidata = {property = 'P802', sorttype= 'chronological', showdate = true, precision = 'year', numval = 5}, | ||
}, | }, | ||
{ | { | ||
Ligne 816 : | Ligne 1 074 : | ||
plurallabel = 'Étudiants de thèse', | plurallabel = 'Étudiants de thèse', | ||
value = 'étudiant de thèse', | value = 'étudiant de thèse', | ||
wikidata = {property = 'P185', sorttype= 'chronological', showdate = true, precision = 'year', numval = '5'}, | wikidata = {property = 'P185', sorttype= 'chronological', showdate = true, precision = 'year', numval = 5}, | ||
}, | |||
{ | |||
type = 'row', | |||
label = 'Personne liée', | |||
plurallabel = 'Personnes liées', | |||
value = 'personne liée', | |||
wikidata = {property = 'P3342', numval = 5, showqualifiers = 'P794'}, | |||
}, | }, | ||
}} | }} | ||
Ligne 861 : | Ligne 1 126 : | ||
value = 'label', | value = 'label', | ||
wikidata = {property = 'P264', sorttype= 'chronological', showdate = true, precision = 'year'}, | wikidata = {property = 'P264', sorttype= 'chronological', showdate = true, precision = 'year'}, | ||
}, | |||
}} | |||
end | |||
-- Victimes | |||
function p.victims() | |||
return {type = 'multi', rows = { | |||
{ | |||
type = 'row', | |||
label = 'Victimes', | |||
value = 'victimes', | |||
wikidata = {property = 'P1345'}, | |||
}, | |||
}} | |||
end | |||
-- Condamnations | |||
function p.penalties() | |||
return {type = 'multi', rows = { | |||
{ | |||
type = 'row', | |||
label = | |||
function(localdata, item) | |||
if gender == 'f' then | |||
return 'Condamnée pour' | |||
elseif gender == 'm' then | |||
return 'Condamné pour' | |||
else | |||
return 'Condamné(e) pour' | |||
end | |||
end, | |||
value = 'condamné pour', | |||
wikidata = {property = 'P1399', showdate = true, sorttype = 'chronological', precision = 'year', conjtype = 'comma'}, | |||
}, | |||
{ | |||
type = 'row', | |||
label = 'Condamnation', | |||
plurallabel = 'Condamnations', | |||
value = 'condamnation', | |||
wikidata = {property = 'P1596', showdate = true, sorttype = 'chronological', precision = 'year', conjtype = 'comma'}, | |||
}, | |||
{ | |||
type = 'row', | |||
label = 'Lieu de détention', | |||
plurallabel = 'Lieux de détention', | |||
value = 'lieu de détention', | |||
wikidata = {property = 'P2632', showdate = true, sorttype = 'chronological', precision = 'year', conjtype = 'comma'}, | |||
}, | }, | ||
}} | }} | ||
Ligne 872 : | Ligne 1 184 : | ||
label = 'Taille', | label = 'Taille', | ||
value = 'taille', | value = 'taille', | ||
wikidata = {property = 'P2048'}, | wikidata = {property = 'P2048', targetunit = 'metre', rounding = '2'}, | ||
}, | }, | ||
{ | { | ||
Ligne 878 : | Ligne 1 190 : | ||
label = 'Poids', | label = 'Poids', | ||
value = 'poids', | value = 'poids', | ||
wikidata = {property = 'P2067'}, | wikidata = {property = 'P2067', targetunit = 'kilogram', rounding = '1'}, | ||
}, | }, | ||
{ | { | ||
Ligne 909 : | Ligne 1 221 : | ||
label = 'Père', | label = 'Père', | ||
value = 'père', | value = 'père', | ||
property = 'P22', | wikidata = {property = 'P22', conjtype = ' ou '}, | ||
}, | }, | ||
{ | { | ||
Ligne 915 : | Ligne 1 227 : | ||
label = 'Mère', | label = 'Mère', | ||
value = 'mère', | value = 'mère', | ||
property = 'P25', | wikidata = {property = 'P25', conjtype = ' ou '}, | ||
}, | }, | ||
{ | { | ||
type = 'row', | type = 'row', | ||
label = ' | label = 'Beau-parent', | ||
plurallabel = ' | plurallabel = 'Beaux-parents', | ||
value | value = {'beau-parent', 'beau-père', 'belle-mère'}, | ||
property = 'P3448', | |||
}, | }, | ||
{ | { | ||
type = 'row', | type = 'row', | ||
label = ' | label = 'Fratrie', | ||
value = 'fratrie', | |||
value = ' | |||
wikidata = { | wikidata = { | ||
property = ' | property = 'P3373', | ||
sorttype = 'chronological', | sorttype = 'chronological', | ||
conjtype = 'new line', | conjtype = 'new line', | ||
Ligne 944 : | Ligne 1 247 : | ||
precision = 'year', | precision = 'year', | ||
stilltrue = (not deathdate), | stilltrue = (not deathdate), | ||
} | } | ||
}, | }, | ||
Ligne 954 : | Ligne 1 256 : | ||
wikidata = { | wikidata = { | ||
property = 'P26', | property = 'P26', | ||
showdate = true, | |||
sorttype = 'chronological', | sorttype = 'chronological', | ||
conjtype = 'new line', | conjtype = 'new line', | ||
Ligne 964 : | Ligne 1 267 : | ||
{ | { | ||
type = 'row', | type = 'row', | ||
label = 'Enfant', -- todo : adapter le libellé en genre ? | label = localdata['intitulé enfant'] or 'Enfant',-- todo : adapter le libellé en genre ? | ||
plurallabel = 'Enfants', | plurallabel = 'Enfants', | ||
value = 'enfant', | value = 'enfant', | ||
Ligne 977 : | Ligne 1 280 : | ||
} | } | ||
}, | }, | ||
{ | |||
type = 'row', | |||
label = 'Parentèle', | |||
value = 'parentèle', | |||
wikidata = { | |||
property = 'P1038', | |||
excludespecial = true, | |||
conjtype = 'new line', | |||
statementformat = function(statement) | |||
local personid = wikidata.getmainid(statement) | |||
local personlabel = wikidata.formatEntity(personid) | |||
local persongender = getgender(personid) | |||
local kintype = wikidata.getFormattedQualifiers( | |||
statement, | |||
"P1039", | |||
{ | |||
labelformat = function(id) return genderedlabel(id, persongender) end, | |||
link = "-" | |||
} | |||
) | |||
if kintype then | |||
return personlabel .. " " .. linguistic.inparentheses(kintype) | |||
end | |||
return personlabel | |||
end, | |||
} | |||
}, | |||
}} | |||
end | |||
-- Esclavage | |||
function p.slavery() | |||
return {type = 'multi', rows = { | |||
{ | { | ||
type = 'row', | type = 'row', | ||
label = ' | label = 'Propriétaire', | ||
plurallabels = 'Propriétaires', | |||
value = 'propriétaire', | |||
property = 'P127', | |||
}, | }, | ||
}} | }} | ||
Ligne 993 : | Ligne 1 327 : | ||
params = params or {} | params = params or {} | ||
local title = params.title or 'Œuvres réputées' | local title = params.title or 'Œuvres réputées' | ||
local wikidata = { | local wikidata = { | ||
Ligne 1 000 : | Ligne 1 333 : | ||
property = 'P800', | property = 'P800', | ||
defaultlink = 'image', | defaultlink = 'image', | ||
showdate= true, | |||
labelformat = function(id) local label = wikidata.getLabel(id) if label then return '<i>' .. label .. '</i>' end end, | labelformat = function(id) local label = wikidata.getLabel(id) if label then return '<i>' .. label .. '</i>' end end, | ||
} | } | ||
Ligne 1 008 : | Ligne 1 342 : | ||
return | return | ||
{type = 'table', title = title, singulartitle = | {type = 'table', title = title, singulartitle = singulartitle, rows = | ||
{ | { | ||
{ | { | ||
Ligne 1 033 : | Ligne 1 367 : | ||
-- Signature | -- Signature | ||
function p.signature(default) | function p.signature(default) | ||
local nom = localdata.nom or mw.title.getCurrentTitle().text | |||
local alt = 'signature de ' .. nom | |||
if mw.ustring.match( nom, '^[AEÈÉIOUY]' ) then | |||
alt = "signature d'" .. nom | |||
end | |||
return { | return { | ||
type = 'images', | type = 'images', | ||
Ligne 1 041 : | Ligne 1 380 : | ||
uprightparameter = 'upright signature', | uprightparameter = 'upright signature', | ||
defaultupright = 0.5, | defaultupright = 0.5, | ||
defaultalt = alt, | |||
property = 'P109', | property = 'P109', | ||
numval = 1 | numval = 1 | ||
} | |||
end | |||
-- Enregistrement vocal | |||
function p.voice() | |||
return { | |||
type = 'images', | |||
style = {['padding-top'] = '25px'},--{['border-width'] = '10px', ['border-style'] = 'solid'}, | |||
label = 'Enregistrement vocal', | |||
captionparameter = 'légende voix', | |||
value = 'voix', | |||
property = 'P990', | |||
numval = 1, | |||
} | } | ||
end | end |
Dernière version du 31 mai 2017 à 13:54
-- Functions utilisées par les infobox personnes local p = {} local localdata = require( 'Module:Infobox/Localdata' ) local item = localdata.item local wikidata = require( "Module:Interface Wikidata" ).fromLua local general = require "Module:Infobox/Fonctions" local datemodule = require "Module:Date" local complexdate = require "Module:Date complexe" local linguistic = require "Module:Linguistique" local militaryranks = require "Module:Dictionnaire Wikidata/Grades militaires"
--=== Accord en genre
-- établit la variable gender pour l'élément local function getgender(id) local vals = { ['Q6581072'] = 'f', ['Q6581097'] = 'm', default = '?' } local gender = wikidata.formatStatements{entity = id, property = 'P21', displayformat = 'raw'} return vals[gender] or vals.default end
local gender = getgender(item)
-- récupération des libellés spéciaux codés en dur sur Wikipédia (attention : contient à la fois le libellé et le lien) local occupationlabels = require "Module:Dictionnaire Wikidata/Métiers"[gender]
-- récupération des libellés genrés de Wikidata local function genderedlabel(id, labelgender) local label if not labelgender then labelgender = gender -- si le genre n'est pas indiqué, c'est celui de la personne dont c'est l'infobox end if labelgender == 'f' then -- femme : chercher le libellé dans P2521 (libellé féminin) label = wikidata.formatStatements{entity = id, property = 'P2521', isinlang = 'fr', numval = 1, ucfirst = '-'} elseif labelgender == 'm' then -- homme : chercher le libellé dans P3321 (libellé masculin) label = wikidata.formatStatements{entity = id, property = 'P3321', isinlang = 'fr', numval = 1, ucfirst = '-'} end if not label then label = wikidata.getLabel(id) end return label end
-- === Gestion des dates
-- Liens thématiques vers les dates local datelinks = { -- lien vers le domaine d'activité approprié Q483501 = 'en arts plastiques', -- artiste Q1028181 = 'en arts plastiques', -- peintre Q1281618 = 'en arts plastiques', -- sculpteur Q2309784 = 'en cyclisme', -- cycliste Q16947657 = 'en arts plastiques', -- lithographe Q11569986 = 'en arts plastiques', -- graveur Q13365770 = 'en arts plastiques', -- graveur sur cuivre Q21925567 = 'en arts plastiques', -- sérigraphe Q10862983 = 'en arts plastiques', -- aquafortiste }
local function getdatetopic() -- obtient le lien le plus approprié pour une date en fonction de la profession local claims = wikidata.stringTable{entity = item, property = 'P106', excludespecial = true, displayformat = "raw"} if not claims then return nil end for i, j in pairs(claims) do if datelinks[j] then return datelinks[j] end end end
local linktopic = getdatetopic()
--===== local function wikidatadate(prop, args) -- fonction à vocation généraliste, à externaliser if not args then args = {} end args.linktopic = args.linktopic or linktopic return wikidata.wikidataDate(prop, item, args) end local unknowndatelabel = "date inconnue" local birthdate = localdata['naissance'] or localdata['date de naissance'] or wikidatadate('P569', {unknownlabel = unknowndatelabel}) local deathdate = localdata['décès'] or localdata['date de décès'] or wikidatadate('P570', {unknownlabel =unknowndatelabel })
local function format1(event, period, predecessor, successor, displayformat)
local mainstr = event
if predecessor then
local s = 'précédé par ' .. predecessor
if gender == 'f' then
s = 'précédée par ' .. predecessor
end
mainstr = mainstr .. '
' .. s .. ''
end
if successor then
local s = 'suivi par ' .. successor
if gender == 'f' then
s = 'suivie par ' .. successor
end
mainstr = mainstr .. '
' .. s .. ''
end
return {type = 'row', label = period or , value = function() return mainstr end}
end
local function format2(event, period, predecessor, successor, displayformat) if (not event) then return nil end
local rows = {}
local eventrow = {type = 'row1col', color = 'secondcolor', value = event } table.insert(rows, eventrow)
if period then period = '' .. period .. '' local periodrow = {type = 'row1col', color = '#F9F9F9', value = period } table.insert(rows, periodrow) end
if predecessor then local prederow = {type = 'row', label = 'Prédécesseur', value = function() return predecessor end} table.insert(rows, prederow) end
if successor then local succrow = {type = 'row', label = 'Successeur', value = function() return successor end} table.insert(rows, succrow) end return {type = 'multi', rows = rows} end
local function format3(event, period, predecessor, successor, displayformat, details)
if details then
details = '' .. details .. ''
event = linguistic.conj({event, details}, "new line")
end
local mainrow = {type = 'row1col', color = 'secondcolor', value = event }
if period then
period = '' .. period .. ''
end
local periodrow = {type = 'row1col', color = '#F9F9F9', value = period }
local successionrow = {
style = {['background-color'] = '#E1E1E1', ['padding-bottom'] = '2%'},
type = 'navbox',
inner = true,
previousval = function() return predecessor end,
nextval = function() return successor end,
}
return {type = 'multi', rows = {mainrow, periodrow, successionrow}} end
local function timeline(localparam, wdconf, timelineformat, title, singtitle, details) -- affiche date : événement (suppose les événements déjà triés)
local rows = {}
local function returnTable()
return {
type = "table",
title = title,
rows = rows
}
end
-- avec données locales local val = localdata[localparam] if val == '-' then return nil elseif val then table.insert(rows, {type = 'row1col', color = 'secondcolor', value = val}) return returnTable() end -- avec données wikidata if not wdconf then return nil end
wdconf.entity = wdconf.entity or item wdconf.sorttype = wdconf.sorttype or "chronological" wdconf.labelformat = wdconf.labelformat or function(id) return genderedlabel(id) end wdconf.linktopic = wdconf.linktopic or "-" wdconf.stilltrue = not(deathdate) -- si la personne est vivante, on emploie "depuis" plutôt que "à partir de" (mais lorsque c'est fini mais que la date de fin manque, ça devient faux)
local statements = wikidata.getClaims(wdconf) if not statements then return nil end if #statements == 1 then title = singtitle end local displayformats = { A = format1, B = format2, C = format3, } local applyformat = displayformats[timelineformat] or displayformats['A']
rows = {} for i, statement in pairs(statements) do local event = linguistic.ucfirst(wikidata.formatStatement(statement, wdconf)) local predecessor = wikidata.getFormattedQualifiers(statement, {'P155', 'P1365'}) local successor = wikidata.getFormattedQualifiers(statement, {'P156', 'P1366'}) local period = wikidata.statementDate(statement, wdconf ) local detailstr if type(details) == "function" then detailstr = details(statement) end local row = applyformat(event, period, predecessor, successor, wdconf, detailstr) if row then table.insert(rows, row) end end table.insert(rows, {type = "external text", value = function() return wikidata.addtrackingcat(wdconf.property) end}) return returnTable() end
local function dateandplace(thedate, theplace)
if thedate and theplace and mw.ustring.find(thedate, "inconnu") and mw.ustring.find(theplace, "inconnu") then
theplace = nil
thedate = mw.ustring.gsub(thedate, unknowndatelabel, "Date et lieu inconnus")
end
return linguistic.conj({thedate, theplace}, "new line")
end
--Titre
function p.title(icon, style)
return general.title(icon, style)
end
--Image function p.mainimage()
-- demande d'illustration que si la personne est née ou morte après 1900, sinon c'est souvent impossible à trouver local defaultimage = 'Defaut 2.svg' local age = wikidata.stringTable{property = 'P569,P570', entity = item, displayformat = 'raw', excludespecial = true}
if age then local pattern = "(%W)(%d+)%-(%d+)%-(%d+)" local era, year = age[1]:match(pattern) if (era == '-') or (tonumber(year)) < 1900 then defaultimage = nil end end return general.mainimage('Article à illustrer/Biographie', defaultimage) end
-- Noms function p.othernames()
local names = { {'P1477', 'Nom de naissance', 'Noms de naissance', 'nom de naissance'}, {'P1449', 'Surnom', 'Surnoms', 'surnom'}, {'P2001', 'Romanisation révisée', 'Romanisation révisée', 'nom de pinceau'}, {'P1942', 'McCune-Reischauer', 'McCune-Reischauer', 'nom de pinceau'}, {'P742', 'Pseudonyme', 'Pseudonymes', 'pseudonyme'}, {'P1782', 'Prénom social', 'Prénoms sociaux', 'prénom social'}, {'P1786', 'Nom posthume', 'Noms posthumes', 'nom posthume'}, {'P1785', 'Nom de temple', 'Noms de temple', 'nom de temple'}, {'P1787', 'Nom de pinceau', 'Noms de pinceau', 'nom de pinceau'}, {'P428', 'Abréviation en botanique', 'Abréviations en botanique', 'abréviation en botanique'}, {'P835', 'Abréviation', 'Abréviations', 'abréviation'}, {nil, 'Autres noms', 'Autres noms', 'autres noms'}, }
local birthnamerow = { -- un peu particulier, donc à part type = "row", wikidata = function() local s = wikidata.formatAndCat{entity = item, property = "P1559"} if (not s) then return nil end -- regarde si le nom de la valeur ressemble au libellé (en tenant compte de la pollution des marqueures de langue local label = mw.ustring.lower(wikidata.getLabel(item) or "") local useless if mw.ustring.find(mw.ustring.lower(s), mw.ustring.lower(label), 0, true) then useless = true end if useless then return nil end return s end, label = 'Nom dans la langue maternelle', plurallabel = 'Noms dans la langue maternelle', value = 'nom dans la langue maternelle', }
local rows = {type = "multi", rows = {birthnamerow}} for i, j in pairs(names) do local query if j[1] and not localdata['autres noms'] then -- lorsqu'il y a un paramètre "autres noms", Wikidata est désactivée pour éviter risques de doublon query = {property = j[1], showqualifiers = {'P1721'}, conjtype = 'new line'} end table.insert(rows.rows, {type = 'row', value = j[4], wikidata = query, label = j[2], plurallabel = j[3]}) end return rows end
-- NAISSANCE ET MORT function p.birth() -- date de naissance en première ligne, lieu de naissance en deuxième return { type = 'row', label = 'Naissance', value = function() local thedate = datemodule.dateInfobox{args = {[1] = 'naissance', [2] = birthdate or , [3] = deathdate or , qualificatif = linktopic}} local theplace = localdata['lieu de naissance'] or wikidata.formatAndCat({entity =item, property= 'P19', rank = 'best', conjtype= ' ou ', unknownlabel = "lieu inconnu"}) return dateandplace(thedate, theplace) end } end
function p.death() -- même fonctionnement que la fonction p.birth
local label = "Décès"
local val local thedate, theplace local disparitiondate, deathdate
-- date --- récup données locales disparitiondate = localdata["disparition"] deathdate = localdata['décès'] or localdata['date de décès']
--- récup Wikidata if not (disparitiondate or deathdate) then disparitiondate = wikidata.formatAndCat{entity = item, property = "P746", rank = 'best', conjtype= ' ou '} if not disparitiondate then deathdate = wikidatadate('P570', {unknownlabel = unknowndatelabel }) end end
--- mise en forme thedate = datemodule.dateInfobox{args = {[1] = 'mort', [2] = birthdate or , [3] = deathdate or disparitiondate or , qualificatif = linktopic, unknownlabel = "date inconnue"}}
-- lieu theplace = localdata["lieu de décès"] or wikidata.formatAndCat{entity = item, property= 'P20', rank = 'best', conjtype= ' ou ', unknownlabel = "lieu inconnu"}
-- Adaptations si on a la date de disparition à la place de la date de décès
if disparitiondate then
if theplace then -- cas un peu bizarre et pas très logique, ne vaut pas trop la peine d'un affichage plus élaboré
disparitiondate = "Date de disparition : " .. thedate
theplace = "Lieu de décès : " .. theplace
else
label = "Disparition"
end
end
val = dateandplace(thedate, theplace)
return { type = 'row', label = label, value = function() return val end, } end
function p.floruit() return { type = 'row', label = 'Période d’activité', value = "Période d'activité", wikidata = function() local startDate = wikidata.formatStatements{entity = item, property = "P2031", conjtype = "or", sorttype = "chronological"} local endDate = wikidata.formatStatements{entity = item, property = "P2032", conjtype = "or", sorttype = "chronological"} if not (startDate or endDate) then return wikidatadate('P1317') end return complexdate.daterange(startDate, endDate, {precision = 11}) end } end
function p.placeofburial() return {type = 'row', label = "Sépulture", value = "sépulture", property = 'P119'} end
function p.nationality()
-- à améliorer étant donnée les moeurs Wikidata comme nationalité : Empire allemand (1901-1918) République de Weimar (1918-1933) local function wdDate() local nation = require "Module:Country data".nationality
-- désactivation si date de naissance avant l'Ère contemporaine : trop d'imprécisions et d'anachronismes local mindate = '1789'
local birthdate = wikidata.formatStatements{entity = item, property = 'P569', displayformat = 'raw', numval = 1} if (not birthdate) or complexdate.before(mindate, birthdate) then return nil end
return { property = 'P27', -- vals = statements, -- statments est une variable non déclarée dans ce module showdate = true, entity = item, conjtype = 'comma', removedupes = true, linktopic = '-', displayformat = function(snak) local g = gender -- genre de la personne, pour affichage du gentilé if g == '?' then -- si inconnu, au masculin g = 'm' end local val, success = nation(wikidata.getid(snak), g) if not success then val = wikidata.formatSnak(snak) end return val end } end
return { type = 'row', label = 'Nationalité', plurallabel = 'Nationalités', value = 'nationalité', wikidata = wdDate() -- wdDate() retourne une table }
end function p.nativelanguage() return {type = 'row', label = 'Langue maternelle', value = 'langue maternelle', property = 'P103'} end
-- Domiciles function p.places() return {type = 'multi', rows = { { type = 'row', label = 'Dème', plurallabel = 'Dèmes', value = 'dème', wikidata = {property = 'P2462', showdate = true, sorttype= 'chronological', precision = 'year'}, }, { type = 'row', label = 'Domicile', plurallabel = 'Domiciles', value = 'domicile', wikidata = {property = 'P551', showdate = true, sorttype= 'chronological', precision = 'year'}, }, { type = 'row', label = 'Lieu de travail', plurallabel = 'Lieux de travail', value = 'lieu de travail', wikidata = {property = 'P937', sorttype= 'chronological', showdate = true, precision = 'year'}, }, }} end
-- parcours professionel function p.education() -- à améliorer local query = {sorttype= 'chronological', property = 'P69', showdate = true, showqualifiers = 'P512', conjtype = 'new line', linktopic = '-'} return { type = 'row', value = {'éducation', 'formation'}, wikidata = query, label = 'Formation', } end
function p.occupation() return { type = 'row', value = {'activité', 'activités'}, wikidata = { property = 'P106', defaultlink = '-', defaultlinkquery = {property = 'P425'}, labelformat = function(id) return genderedlabel(id) end, speciallabels = occupationlabels, excludevalues = { -- les occupations qui ne méritent pas d'être affichées 'Q482980', -- auteur --'Q15980158', "auteur de non-fiction" a depuis été traduit par "essayiste" 'Q18814623', -- autobiographe 'Q948329', -- acteur de genre 'Q1209498', -- juriste-poète } }, label = 'Activité', plurallabel = 'Activités' } end
function p.employer() return { type = 'row', value = 'employeur', wikidata = {property = 'P108', showdate = true, sorttype= 'chronological'}, label = function() return localdata['intitulé employeur'] or 'A travaillé pour' end, } end
function p.victories() local title, singtitle = "Victoires", "Victoire" local localparam = "victoire" local wdconf = {property = 'P2522'} local displayformat = "B"
return timeline(localparam, wdconf, displayformat, title, singtitle) end
function p.officialposition()
local title, singtitle = "Fonctions", "Fonction"
local localparam = "fonction"
local wdconf = {
property = 'P39',
rank = 'valid',
sorttype = 'inverted',
speciallabels = occupationlabels,
defaultlinkquery = {property = {'P2354', 'P2389', 'P453', 'P361', 'P108'}}, -- liens par défaut : liste, puise organisme dirigé, "membre de", "partie de", employeur
}
-- sur une ligne séparée : juridiction, "de", circonsription, diocèse, affiliation, assemblée, parti, emmloyeur
local details = function(statement) return wikidata.getFormattedQualifiers(statement, {'P1001', 'P642', 'P768', 'P708', 'P1416', 'P194', 'P102', 'P108', 'P937'}) end
local displayformat = "C"
return timeline(localparam, wdconf, displayformat, title, singtitle, details) end
function p.nobilitytitle() local title, singtitle = "Titres de noblesse", "Titre de noblesse" local localparam = "titre de noblesse" local wdconf = { property = 'P97', entity = item, rank = 'valid', showqualifiers = {'P642'}, defaultlinkquery = {property = {'P2354', 'P361'}}, -- liens par défaut : liste, puise organisme dirigé, "membre de" et "partie de" } local displayformat = "B"
return timeline(localparam, wdconf, displayformat, title, singtitle) end
function p.honorifictitle()
local title, singtitle = "Titres honorifiques", "Titre honorifique"
local localparam = "titre honorifique"
local wdconf = {property = 'P511', entity = item, rank = 'valid'}
local displayformat = "C"
return timeline(localparam, wdconf, displayformat, title, singtitle) end
function p.tombe() return { type = 'images', imageparameters = {'tombe'}, defaultimages = nil, defaultupright = 0.7, uprightparameter = 'upright tombe', sizeparameter = 'taille tombe', -- obsolète captionparameter = 'légende tombe', defaultcaption = 'sépulture', property = 'P1442', numval = 1, } end
function p.plaque() return { type = 'images', imageparameters = {'plaque'}, defaultimages = nil, defaultupright = 0.7, uprightparameter = 'upright plaque', sizeparameter = 'taille plaque', -- obsolète captionparameter = 'légende plaque', defaultcaption = 'plaque commémorative', property = 'P1801', numval = 1, } end
function p.blason() return { type = 'images', imageparameters = {'blason'}, defaultimages = nil, defaultupright = 0.7, uprightparameter = 'upright blason', sizeparameter = 'taille blason', -- obsolète captionparameter = 'légende blason', defaultcaption = 'blason', property = 'P94', numval = 1, } end
function p.sceau() return { type = 'images', imageparameters = {'sceau'}, defaultimages = nil, defaultupright = 0.7, uprightparameter = 'upright sceau', sizeparameter = 'taille sceau', -- obsolète captionparameter = 'légende sceau', defaultcaption = 'sceau', property = 'P158', numval = 1, } end
function p.monogram() return { type = 'images', imageparameters = {'monogramme'}, defaultimages = nil, defaultsize = '100px', sizeparameter = 'taille monogramme', captionparameter = 'légende monogramme', defaultcaption = 'Monogramme', property = 'P1543', numval = 1, } end
function p.flag() return { type = 'images', imageparameters = {'drapeau'}, defaultimages = nil, defaultsize = '150px', sizeparameter = 'taille drapeau', captionparameter = 'légende drapeau', defaultcaption = 'Drapeau', property = 'P41', numval = 1, } end
function p.logo() return { type = 'images', imageparameters = {'logo'}, defaultimages = nil, defaultsize = '150px', sizeparameter = 'taille logo', captionparameter = 'légende logo', defaultcaption = 'Marque ou logotype', property = 'P154', numval = 1, } end
function p.politicalparty() return { type = 'row', value = 'parti politique', label = 'Parti politique', plurallabel = 'Partis politiques', wikidata = { property = 'P102', sorttype= 'chronological', showdate = true, conjtype = 'new line', excludespecial = true}, } end
function p.memberof() return {type = 'multi', rows = { { type = 'row', value = 'ordre de chevalerie', label = 'Ordre de chevalerie', plurallabel = 'Ordres de chevalerie', wikidata = {property = 'P550', sorttype= 'chronological', showdate = true}, }, { type = 'row', label = 'Membre de', value = 'membre de', wikidata = {property = 'P463', sorttype= 'chronological', showdate = true, precision = 'year'}, }, }} end
function p.awards()
local function awardsList() local majorawards = require "Module:Dictionnaire Wikidata/Distinctions" local query = { entity = item, property= 'P166', sorttype= 'chronological', grouped = true, showqualifiers = 'P642', showdate= true, precision = 'year', conjtype = 'new line', textformat = 'minimum', linktopic = '-', defaultlinkquery = {property = {'P2354', 'P361'}}, excludevalues = 'Q15631401', -- membre de la Royal Society, redondance avec le champ « membre de » (P463) speciallabels = majorawards, labelformat = function(id) return genderedlabel(id) end, } local claims = wikidata.getClaims(query) if (not claims) then return nil end local str = wikidata.formatAndCat(query) if #claims < 4 then return str, #claims end
--si trop de valeurs, n'afficher que les importantes de Module:Dictionnaire Wikidata/Distinctions, et mettre les autrs dans un menu pliant
--- récupération des importantes local majorStr local targetvalues = {} for i, j in pairs(majorawards) do table.insert(targetvalues, i) end query.targetvalue = targetvalues query.value, query.claims, query.valuetable = nil, nil, nil -- apparemment sinon ce n'est pas le cas, pourquoi ? BUG IMPORTANT majorStr = wikidata.formatAndCat(query)
--- repliage des autres local message = "Liste détaillée" local allAwardsTable = mw.html.create('div') :addClass("toccolours mw-collapsible mw-collapsed") :wikitext(message) :css{border = "none"} :tag('div') :addClass("mw-collapsible-content") :css{['line-height'] = '150%'} -- sinon c'est vraiment serré :wikitext( str) :done() :allDone()
return linguistic.conj({majorStr, tostring(allAwardsTable)}, "
"), #claims
end
return { type = 'row', value = {'prix', 'récompenses', 'distinction', 'distinctions'}, label = 'Distinctions', singularlabel = 'Distinction', wikidata = function() return awardsList() end } end
-- Influences function p.influencedby() return { type = 'row', label = function(localdata, item) if gender == 'f' then return 'Influencée par' elseif gender == 'm' then return 'Influencé par' else return 'Influencé(e) par' end end, value = 'influencé par', wikidata = {property = 'P737'},
}
end
function p.influenced() return { type = 'row', label = 'A influencé', value = {'a influencé', 'influence de'}, } end
-- Appartenances function p.movement() return { type = 'row', label = 'Mouvement', value = 'mouvement', wikidata = {property = 'P135', sorttype= 'chronological', showdate = true, precision = 'year'}, } end
-- Religion function p.religion() return {type = 'multi', rows = { { type = 'row', label = 'Religion', plurallabel = 'Religions', value = 'religion', wikidata = {property = 'P140', sorttype= 'chronological', showdate = true, precision = 'year', excludevalues = 'Q7066'}, }, { type = 'row', label = 'Date de baptême', value = 'date de baptême', property = 'P1636', }, { type = 'row', label = 'Parrain', plurallabel = 'Parrains', value = 'parrain', property = 'P1290', }, { type = 'row', label = 'Nom en religion', plurallabel = 'Noms en religion', value = 'nom en religion', property = 'P1635', }, { type = 'row', label = 'Ordre religieux', plurallabel = 'Ordres religieux', value = 'ordre religieux', property = 'P611', }, { type = 'row', label = 'Consécrateur', plurallabel = 'Consécrateurs', value = 'consécrateur', property = 'P1598', }, { type = 'row', label = function(localdata, item) if gender == 'f' then return 'Vénérée par' elseif gender == 'm' then return 'Vénéré par' else return 'Vénéré(e) par' end end, value = 'vénéré par', property = 'P1049', }, { type = 'row', label = 'Étape de canonisation', value = 'étape de canonisation', wikidata = { property = 'P411', labelformat = function(id) return genderedlabel(id) end, }, }, }} end
-- Carrière militaire function p.military() return {type = 'multi', rows = { { type = 'row', label = 'Arme', plurallabel = 'Armes', value = 'arme', wikidata = {property = 'P241', showdate = true, sorttype= 'chronological', precision = 'year'}, }, { type = 'row', label = 'Grade militaire', plurallabel = 'Grades militaires', value = 'grade militaire', wikidata = {property = 'P410', showdate = true, sorttype= 'chronological', precision = 'year', speciallabels = militaryranks, conjtype ='new line'}, }, { type = 'row', label = 'Conflit', plurallabel = 'Conflits', value = 'conflit', wikidata = {property = 'P607', showdate = true, sorttype= 'chronological', precision = 'year'}, }, }} end
-- Carrière de torero function p.torero() return {type = 'multi', rows = { { type = "row", label = "Alternative", value = "alternative", wikidata = function() return wikidata.keyDate("Q2840411", item) end }, { type = "row", label = "Confirmation d'alternative", value = "confirmation alt", wikidata = function() return wikidata.keyDate("Q23308805", item) end }, }} end
-- Sport function p.sport() return {type = 'multi', rows = { { type = 'row', label = 'Spécialité', plurallabel = 'Spécialités', value = 'spécialité', wikidata = {property = 'P413', labelformat = function(id) return genderedlabel(id) end, }, }, { type = 'row', label = 'Discipline sportive', plurallabel = 'Disciplines sportives', value = 'discipline sportive', wikidata = {property = 'P2416'}, }, { type = 'row', label = 'Prise de raquette', value = 'prise de raquette', wikidata = {property = 'P741'}, }, { type = 'row', label = 'Tire de la', value = 'tire', wikidata = {property = 'P423'}, }, { type = 'row', label = 'Équipe', plurallabel = 'Équipes', value = 'équipe', wikidata = { property = 'P54', sorttype= 'chronological', conjtype = "new line", statementformat = function(statement) local str = wikidata.formatStatement(statement, {showdate = true}) local compets = wikidata.getFormattedQualifiers(statement, {"P1350"}) if compets and (tonumber(compets) > 1) then compets = compets .. " matchs joués" elseif compets then compets = compets .. " match joué" end local points = wikidata.getFormattedQualifiers(statement, {"P1351"}) if points and (tonumber(points) > 1) then points = points .. " points marqués" elseif points then points = points .. "point marqué" end local qualifiers = linguistic.conj{compets, points} if qualifiers then str= str .. " – " .. qualifiers .. " " end return str end } }, { type = 'row', label = 'Capes internationales', value = 'capes', wikidata = {property = 'P1129', numval = 1}, }, { type = 'row', label = 'Titre aux échecs', plurallabel = 'Titres aux échecs', value = 'titre aux échecs', wikidata = {property = 'P2962', sorttype= 'chronological', showdate = true, precision = 'year'}, }, { type = 'row', label = 'Classement Elo', value = 'classement elo', wikidata = {property = 'P1087', numval = '3', sorttype = 'inverted', conjtype = 'new line', showdate = true, precision = 'month', removedupes = true}, }, { type = 'row', label = 'Record détenu', plurallabel = 'Records détenus', value = 'record détenu', wikidata = {property = 'P1000', sorttype= 'chronological', showdate = true}, }, { type = 'row', label = 'Entraîneur', plurallabel = 'Entraîneurs', value = 'entraîneur', wikidata = {property = 'P286', sorttype= 'chronological', showdate = true, precision = 'year'}, }, { type = 'row', label = 'Copilote', plurallabel = 'Copilotes', value = 'copilote', wikidata = {property = 'P2095', sorttype= 'chronological', showdate = true, precision = 'year'}, }, { type = 'row', label = 'Sponsor', plurallabel = 'Sponsors', value = 'sponsor', wikidata = {property = 'P859', sorttype= 'chronological', showdate = true, precision = 'year'}, }, }} end
-- Contacts function p.contacts() return {type = 'multi', rows = { { type = 'row', label = localdata['intitulé maître'] or 'Maître', plurallabel = 'Maîtres', value = {'maître', 'maîtres'}, wikidata = {property = 'P1066', sorttype= 'chronological', showdate = true, precision = 'year'}, }, { type = 'row', label = 'Directeur de thèse', plurallabel = 'Directeurs de thèse', value = 'directeur de thèse', wikidata = {property = 'P184', sorttype= 'chronological', showdate = true, precision = 'year'}, }, { type = 'row', label = 'Agent', label = function(localdata, item) if gender == 'f' then return 'Représentée par' elseif gender == 'm' then return 'Représenté par' else return 'Représenté(e) par' end end, value = 'représenté par', wikidata = {property = 'P1875'}, }, { type = 'row', label = 'Partenaire', plurallabel = 'Partenaires', value = 'partenaire', wikidata = {property = 'P1327'}, }, { type = 'row', label = localdata['intitulé élève'] or 'Élève', plurallabel = 'Élèves', value = {'élève', 'élèves'}, wikidata = {property = 'P802', sorttype= 'chronological', showdate = true, precision = 'year', numval = 5}, }, { type = 'row', label = 'Étudiant de thèse', plurallabel = 'Étudiants de thèse', value = 'étudiant de thèse', wikidata = {property = 'P185', sorttype= 'chronological', showdate = true, precision = 'year', numval = 5}, }, { type = 'row', label = 'Personne liée', plurallabel = 'Personnes liées', value = 'personne liée', wikidata = {property = 'P3342', numval = 5, showqualifiers = 'P794'}, }, }} end
-- Mécénat function p.patron() return { type = 'row', label = 'Mécènes', singularlabel = 'Mécène', plurallabel = 'Mécènes', value = 'mécènes', wikidata = {property = 'P1962', showdate = true, sorttype = 'chronological', conjtype = 'comma'}, } end
-- Musique function p.music() return {type = 'multi', rows = { { type = 'row', label = 'Tessiture', value = 'tessiture', property = 'P412', }, { type = 'row', label = 'Fach', value = 'fach', property = 'P1731', }, { type = 'row', label = 'Instrument', plurallabel = 'Instruments', value = 'instrument', wikidata = {property = 'P1303', sorttype= 'chronological'}, }, { type = 'row', label = 'Label', plurallabel = 'Labels', value = 'label', wikidata = {property = 'P264', sorttype= 'chronological', showdate = true, precision = 'year'}, }, }} end
-- Victimes function p.victims() return {type = 'multi', rows = { { type = 'row', label = 'Victimes', value = 'victimes', wikidata = {property = 'P1345'}, }, }} end
-- Condamnations function p.penalties() return {type = 'multi', rows = { { type = 'row', label = function(localdata, item) if gender == 'f' then return 'Condamnée pour' elseif gender == 'm' then return 'Condamné pour' else return 'Condamné(e) pour' end end, value = 'condamné pour', wikidata = {property = 'P1399', showdate = true, sorttype = 'chronological', precision = 'year', conjtype = 'comma'}, }, { type = 'row', label = 'Condamnation', plurallabel = 'Condamnations', value = 'condamnation', wikidata = {property = 'P1596', showdate = true, sorttype = 'chronological', precision = 'year', conjtype = 'comma'}, }, { type = 'row', label = 'Lieu de détention', plurallabel = 'Lieux de détention', value = 'lieu de détention', wikidata = {property = 'P2632', showdate = true, sorttype = 'chronological', precision = 'year', conjtype = 'comma'}, }, }} end
-- Physique function p.appearance() return {type = 'multi', rows = { { type = 'row', label = 'Taille', value = 'taille', wikidata = {property = 'P2048', targetunit = 'metre', rounding = '2'}, }, { type = 'row', label = 'Poids', value = 'poids', wikidata = {property = 'P2067', targetunit = 'kilogram', rounding = '1'}, }, { type = 'row', label = 'Cheveux', value = 'cheveux', wikidata = {property = 'P1884'}, }, { type = 'row', label = 'Yeux', value = 'yeux', wikidata = {property = 'P1340'}, }, }} end
-- Famille function p.family() return {type = 'multi', rows = { { type = 'row', label = 'Famille', plurallabels = 'Familles', value = 'famille', property = 'P53', }, { type = 'row', label = 'Père', value = 'père', wikidata = {property = 'P22', conjtype = ' ou '}, }, { type = 'row', label = 'Mère', value = 'mère', wikidata = {property = 'P25', conjtype = ' ou '}, }, { type = 'row', label = 'Beau-parent', plurallabel = 'Beaux-parents', value = {'beau-parent', 'beau-père', 'belle-mère'}, property = 'P3448', }, { type = 'row', label = 'Fratrie', value = 'fratrie', wikidata = { property = 'P3373', sorttype = 'chronological', conjtype = 'new line', textformat = 'long', precision = 'year', stilltrue = (not deathdate), } }, { type = 'row', label = 'Conjoint', -- todo : adapter le libellé en genre ? plurallabel = 'Conjoints', value = 'conjoint', wikidata = { property = 'P26', showdate = true, sorttype = 'chronological', conjtype = 'new line', textformat = 'long', precision = 'year', stilltrue = (not deathdate), precision = 'year', } }, { type = 'row', label = localdata['intitulé enfant'] or 'Enfant',-- todo : adapter le libellé en genre ? plurallabel = 'Enfants', value = 'enfant', wikidata = { property = 'P40', sorttype = 'chronological', conjtype = 'new line', textformat = 'long', precision = 'year', stilltrue = (not deathdate), precision = 'year', } }, { type = 'row', label = 'Parentèle', value = 'parentèle', wikidata = { property = 'P1038', excludespecial = true, conjtype = 'new line', statementformat = function(statement) local personid = wikidata.getmainid(statement) local personlabel = wikidata.formatEntity(personid) local persongender = getgender(personid) local kintype = wikidata.getFormattedQualifiers( statement, "P1039", { labelformat = function(id) return genderedlabel(id, persongender) end, link = "-" } ) if kintype then return personlabel .. " " .. linguistic.inparentheses(kintype) end return personlabel end, } }, }} end
-- Esclavage function p.slavery() return {type = 'multi', rows = { { type = 'row', label = 'Propriétaire', plurallabels = 'Propriétaires', value = 'propriétaire', property = 'P127', }, }} end
-- Œuvres function p.works(params) params = params or {} local title = params.title or 'Œuvres réputées'
local wikidata = { excludespecial = true, numval = 5, property = 'P800', defaultlink = 'image', showdate= true, labelformat = function(id) local label = wikidata.getLabel(id) if label then return '' .. label .. '' end end, }
for i, j in pairs(params) do wikidata[i] = j end
return {type = 'table', title = title, singulartitle = singulartitle, rows = { { type = 'row', value = 'œuvres principales', wikidata = wikidata } } } end
function p.filmography() local title = 'Films notables' return {type = 'row', label = 'Films notables', value = 'films notables', property = 'P1283'} end
function p.discography() local title = 'Discographie' return {type = 'row', label = 'Discographie', value = 'discographie', property = 'P358'} end
-- Signature function p.signature(default) local nom = localdata.nom or mw.title.getCurrentTitle().text local alt = 'signature de ' .. nom if mw.ustring.match( nom, '^[AEÈÉIOUY]' ) then alt = "signature d'" .. nom end return { type = 'images', imageparameters = {'signature'}, defaultimage = default, captionparameter = 'légende signature', defaultcaption = 'signature', uprightparameter = 'upright signature', defaultupright = 0.5, defaultalt = alt, property = 'P109', numval = 1 } end
-- Enregistrement vocal function p.voice() return { type = 'images', style = {['padding-top'] = '25px'},--{['border-width'] = '10px', ['border-style'] = 'solid'}, label = 'Enregistrement vocal', captionparameter = 'légende voix', value = 'voix', property = 'P990', numval = 1, } end
--== Site web function p.website() return general.website() end
return p