Module:Infobox/Art
La documentation pour ce module peut être créée à Module:Infobox/Art/doc
--[[
Avant de mettre en production une nouvelle version avez-vous :
- testé avec la version bac à sable ?
- modifié la documentation ?
]]
local geoloc = require 'Module:Infobox/Fonctions/Géolocalisation'
local general = require 'Module:Infobox/Fonctions'
local owner = require 'Module:Propriétaire'
local material = require 'Module:Matériau'
local linguistic = require 'Module:Linguistique'
local protected = require 'Module:Classement'
local wikidata = require 'Module:Wikidata'
local linktopic = 'nan atizay plastik'
local function dimensions( localdata )
local dimensions = {
-- paramètre, abréviation à afficher dans l'en tête, propriété Wikidata, nom complet à afficher dans l'entête
{'dyamèt', 'Diam', 'P2386', 'Dyamèt'},
{ 'wotè', 'H', 'P2048', 'Wotè'},
{'lajè', 'L', 'P2049', 'Lajè'},
{'pwofondè', 'l', 'P2610' , 'Pwofondè'},
}
local data, dims = {}, {}
local label = 'Dimansyon'
local unit = localdata['inite'] or 'cm'
local wikidataval = function(d)
return wikidata.formatStatements{
entity = localdata.item,
showunit = '-',
targetunit = unit,
addcat = true,
property = d
}
end
local propertyused = nil
for i, j in pairs(dimensions) do
local val = localdata[j[1]]
if localdata.item and j[3] and not val then
val = wikidataval(j[3])
if val then
propertyused = j[3]
end
end
if val then
table.insert(data, val)
table.insert(dims, i)
end
end
if #data == 0 then
return nil
end
if #data == 1 then
label = dimensions[dims[1]][4]
else
for i, j in pairs(dims) do dims[i] = dimensions[j][2] end
label = label .. linguistic.inparentheses(linguistic.conj(dims, ' × '))
end
local val = linguistic.conj(data, ' × ') .. ' ' .. unit
if propertyused then
val = wikidata.formatAndCat{entity = localdata.item, property = propertyused, value = val}
end
return {
type = 'row',
label = label,
value = function() return val end
}
end
return {
maincolor = '#f9f9f9',
parts = {
{
type = 'title',
value = function(localdata)
return localdata['tit']
or wikidata.getLabel(localdata.item) and mw.language.getContentLanguage():ucfirst( wikidata.getLabel(localdata.item) )
or mw.title.getCurrentTitle().text
end,
subtitle = 'tit orijinal',
italic = true,
setdisplaytitle = true,
},
general.mainimage( { cat = "Atik pou ilistre Atizay",
defaultimage = nil,
wikidata = {property = {'P18', 'P5252', 'P7420'}}
} ),
{type = 'table', rows = {
{
type = 'row',
label = 'Atis',
plurallabel = 'Atis',
value = 'atis',
wikidata = {
property = 'P170',
statementformat = function(statement)
local str
-- On commence par les qualificatifs (attribué à, atelier etc.)
local possiblequalifiers = {
P1773 = "attribué $to $creator",
P1774 = "atelier $of $creator",
P1775 = "suiveur $of $creator",
P1776 = "cercle $of $creator",
P1777 = "d'après $creator", -- TODO : d'après LE Maître X
P1778 = "faux d'après $creator",
P1779 = "$creator (?)",
P1780 = "école $of",
P1877 = "d'après une œuvre $of $creator",
}
if statement.qualifiers then
for qualif, text in pairs(possiblequalifiers) do
local creator = wikidata.getFormattedQualifiers(statement, {qualif})
if creator then
str = text
str = mw.ustring.gsub(str, '$to $creator', "à ".. creator)
str = mw.ustring.gsub(str, '$of $creator', linguistic.of(creator))
str = mw.ustring.gsub(str, '$creator', creator)
break
end
end
end
-- TODO : prendre en compte tous les qualificatifs pour une même déclaration, exemple [[Galate mourant]]
-- Sinon, la voie normale
if not str then
str = wikidata.formatStatement(statement, {speciallabels = {Q4233718 = "anonyme"}}) -- speciallabels pour éviter le lien par défaut
end
return str
end
}
},
{
type = 'row',
label = 'Dat',
value = 'ane',
wikidata = {
property = 'P571',
showqualifiers = {'P518'},
linktopic = linktopic,
sorttype = 'chronological',
conjtype = function()
if wikidata.getClaims{entity = item, property = 'P571', qualifier = {'P518'}} then
return "new line"
else
return "or"
end
end
}
},
{
type = 'row',
label = 'Sivilizasyon',
plurallabel = 'Sivilizasyon',
value = 'sivilizasyon',
property = 'P2596'
},
{
type = 'row',
label = 'Kòmanditè',
plurallabel = 'Kòmanditè',
value = 'kòmanditè',
property = 'P88'
},
{
type = 'row',
label = 'Tip',
value = 'tip',
property = 'P136',
},
{
type = 'row',
label = 'Teknik',
plurallabel= 'Teknik',
value = 'teknik',
property = 'P2079'
},
{
type = 'row',
label = 'Materyo',
value = function( localdata )
if localdata['type'] or localdata['teknik'] then -- la matériau est parfois contenu dans le paramètre "type", ne pas utiliser wikidata dans ce cas
return nil
end
return material.formatFromItem(localdata.item)
end
},
{
type = 'row',
label = 'Pwennvi',
plurallabel = 'Pwennvi',
value = 'pwennvi',
property = 'P7108'
},
{
type = 'row',
label = 'Lye kreyasyon',
plurallabel = 'Lye kreyasyon',
value = 'lye kreyasyon',
property = 'P1071'
},
dimensions,
{
type = 'row',
label = 'Fòma',
value = 'fòma',
property = 'P1419',
},
{
type = 'row',
label = 'Edidye pou',
value = 'etidye pou',
property = 'P6606',
valueClass = 'italique',
},
{
type = 'row',
label = 'Enspirasyon',
value = 'enspirasyon',
wikidata ={property = 'P941' , conjtype="new line"},
},
{
type = 'row',
label = 'Seri',
plurallabel = 'Seri',
value = 'seri',
property = 'P179',
valueClass = 'italique',
},
{
type = 'row',
label = 'Pandan',
plurallabel = 'Pandan',
value = 'pandan',
property = 'P1639',
valueClass = 'italique',
},
{
type = 'row',
label = 'Vèso',
value = 'vèso',
wikidata = {property = {'P2681', 'P2682'}},
valueClass = 'italique',
},
{
type = 'row',
label = 'Mouvman',
plurallabel = 'Mouvman',
value = function(localdata) return localdata['mouvman'] or localdata['style'] end,
property = 'P135',
},
{
type = 'row',
label = 'Pwopriyetè',
plurallabel = 'Pwopriyetè',
value = 'pwopriyetè',
wikidata = function() return owner.formatFromItem(item, {atdate = 'today'}) end
},
{
type = 'row',
label = 'Koleksyonon',
plurallabel = 'Koleksyon',
value = 'koleksyon'
},
{
type = 'row',
label = '<abbr class="abbr" title="Nimewo">N<sup>o</sup></abbr> envantè',
value = 'envantè',
property = 'P217'
},
{
type = 'row',
label = 'Lokalizasyon',
value = function(localdata)
local museum, location, city, country = localdata['mize'], localdata['lokalizasyon'], localdata['vil'], localdata['peyi']
location = linguistic.conj({museum, location, city}, 'comma')
if location == '-' then
-- désactivation de l'utilisation de wikidata (car il ne faut pas d'espace après)
return '-'
end
country = linguistic.inparentheses(country)
if country then country = '<span class="nowrap">' .. country .. '</span>' end
if location or country then
return (location or '') .. ' ' .. (country or '')
end
return nil
end,
property = 'P276' -- devrait croiser P195 et utiliser l'arbitrary access pour le lieu
},
{
type = 'row',
label = 'Modèl',
plurallabel = 'Modèl',
value = 'modèl',
property = 'P2634'
},
--[[
{
type = 'row',
label = 'Reprezante',
value = 'reprezante',
wikidata = {property = 'P180', numval = '4', rank = 'best'}
},
]]--
{
type = 'row',
label = 'Enskripsyon',
plurallabel = 'Enskripsyon',
value = 'enskripsyon',
wikidata = {property = 'P1684', conjtype = '<br />', numval = '3', rank = 'best'}
},
{
type = 'row',
label = 'Kòmantè',
value = 'kòmantè',
},
{
type = 'row',
label = 'Pwoteksyon',
value = function(localdata) return localdata['pwoteksyon'] or localdata['klasman'] end,
wikidata = function(item) return protected.formattedList(item)end
},
geoloc.coordinates{maintenancecat = "Zèv da jewolokalize san kowòdone parametre"},
}},
geoloc.geoloc('default', '-'), -- le '-' indique de ne pas chercher automatiquement une carte si aucune n'est fournie dans |géolocalisation=
}
}