Module:Infobox/Archives
[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 Archives/Bac à sable.
La documentation de ce module est générée par le modèle {{Documentation module}}.
Elle est incluse depuis sa sous-page de documentation. Veuillez placer les catégories sur cette page-là.
Les éditeurs peuvent travailler dans le bac à sable (créer).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
local general = require "Module:Infobox/Fonctions"
local wikidata = require "Module:Wikidata"
local wd = require "Module:Wikidata"
--local url = require "Module:URL"
local link = require "Module:Weblink"
--local iwd = require "Module:Interface Wikidata" (pour tests)
local localdata = require "Module:Infobox/Localdata"
local loc = require "Module:Infobox/Fonctions/Géolocalisation"
-- local locadmin = require "Module:Infobox/Fonctions/Bâtiment" cf. dernier commentaire du module
local p = {}
-- Insérer ici les fonctions
local function pays()
if loc.country() then
return loc.country()
else
return nil
end
end
-- Titres programmables
-- Fonctions wikidata
-- Sélection de l'entité assurant la maintenance pour lien vers requête
local function selectmaintain()
local maintainid = wd.getIds(localdata.item, {property = 'P126'}) --, condition = function(claim) return wd.getId(claim.mainsnak) end})
if (not maintainid) then
return localdata.wikidata or localdata.item else
-- return wd.stringTable{entity = item, property = 'P126', claims = maintainid, conjtype = 'comma'}, #maintainid
end
return tostring(maintainid)
end
local function wqs(wdquery)
local item = selectmaintain()
if not item then
return nil else
local wdquery = "SELECT ?maintenanceLabel ?maintenance ?itemLabel ?item WHERE { ?item (wdt:P31/wdt:P279*) wd:Q2668072. ?item wdt:P126+ ?maintenance. FILTER(?maintenance=wd:"..item..") SERVICE wikibase:label { bd:serviceParam wikibase:language \"[AUTO_LANGUAGE],en\". }} ORDER BY ?maintenanceLabel"
return "https://query.wikidata.org/#".. mw.uri.encode(wdquery, 'PATH')
end
end
localdata['sparql'] = wqs()
local function lien()
return link.makelink (localdata.sparql, "Voir les fonds de l'institution dépositaire")
end
localdata['lien'] = lien()
local function sparql()
local rows = {}
do
table.insert (rows, {
type = 'row',
value = 'lien'
})
end
return rows
end
-- Sélection du bâtiment
local buildingitem = localdata.item-- assuming same item for building and organization, but should not be the case, so checks the following:
local buildingcandidates = wd.stringTable{entity = localdata.item, property = 'P276', displayformat = 'raw', excludespecial = true}
if buildingcandidates then
if (#buildingcandidates == 1) and (buildingcandidates ~= buildingitem) and wd.isInstance('Q41176', buildingcandidates[1], 2) or wd.isInstance('Q1497364', buildingcandidates[1], 1) then
buildingitem = buildingcandidates[1]
end
end
local buildingdesignated = localdata['batId']
if buildingdesignated then
buildingitem = buildingdesignated
end
-- Désignation d'une collection
local collecitem = localdata.item
local collecdesignated = localdata['collecId']
if collecdesignated then
collecitem = collecdesignated
end
-- Retourne le nom original
local function noms(item)
local noms = wd.getClaims{entity = item, property = 'P1705'}
if (not noms) then
return nil
end
if #noms > 3 then
return wd.formatAndCat{property = 'P1705', entity = item, value = 'Divers'}, 2
end
return wd.formatAndCat{entity = item, property = 'P1705', claims = noms, conjtype = 'comma'}, #noms
end
-- Retourne l'année de construction
local function construction(item)
local construction = wd.getClaims{entity = item, property = 'P571', condition = function(claim)
return wikidata.isInstance('Q41176', item, 0)
end,}
if (not construction) then
return wd.keyDate('Q385378', buildingitem)
end
return wd.formatAndCat{entity = item, property = 'P571', claims = construction, conjtype = 'comma', precision = 'year', condition = function(claim)
return wikidata.isInstance('Q41176', localdata.item, 6)
end,}, #construction
end
-- Retourne l'architecte ou les architectes
local function architects(item)
local architects = wd.getClaims{entity = item, property = 'P84'}
if (not architects) then
return nil
end
if #architects > 3 then
return wd.formatAndCat{property = 'P84', entity = item, value = 'Divers'}, 2
end
return wd.formatAndCat{entity = item, property = 'P84', claims = architects, conjtype = 'comma'}, #architects
end
-- Retourne le classement
local function classement(item)
local classement = wd.getClaims{entity = item, property = 'P1435',condition = function(claim)
return wikidata.isInstance('Q41176', item, 0)
end,}
if (not classement) then
return nil
end
return wd.formatAndCat{entity = item, property = 'P1435', claims = classement, conjtype = 'comma'}, #classement
end
-- Retourne les institutions
local function institutions(item)
local institutions = wd.getClaims{entity = item, property = 'P466'}
if (not institutions) then
return nil
end
if #institutions > 3 then
return wd.formatAndCat{property = 'P466', entity = item, value = 'Diverses'}, 2
end
return wd.formatAndCat{entity = item, property = 'P466', claims = institutions, conjtype = 'comma', condition = function(claim)
return wikidata.isInstance('Q1497649', localdata.item, 6)
end,}, #institutions
end
-- Retourne l'ampleur
local function ampleur(item)
local ampleur = wd.getClaims{entity = item, property = 'P1436'}
if (not ampleur) then
return nil
end
return wd.formatAndCat{entity = item, property = 'P1436', claims = ampleur, conjtype = 'comma', showunit = 'long', showqualifiers = {'P585'}, sourceproperty={withsource=any}}, #ampleur
end
-- Fin des fonctions
return
{
maincolor = 'E9C6B0',
parts =
{
general.title('archives2', nil, 'sous-titre', nil), -- Titre
general.logo(), -- Logo
general.mainimage('Article à illustrer', 'Defaut 2.svg'), -- Image
-- Partie 1 - Informations générales
{type = 'table', title='Institution',
rows = {
{type = 'row', label = 'Nom officiel', plurallabel = 'Noms officiels', value = 'nom officiel', wikidata = { property = 'P1448',
condition = function(claim)
return (not wikidata.isInstance('Q41176', localdata.item, 6))
end,
}},
{type = 'row', label = 'Autre nom', plurallabel = 'Autres noms', value = 'autre nom'},
{type = 'row', label = 'Type', plurallabel = 'Types', value = 'type', property = 'P31'},
{type = 'row', label = 'Création', value = 'création', wikidata = { property = 'P571',
condition = function(claim)
return (not wikidata.isInstance('Q41176', localdata.item, 6))
end,
}},
{type = 'row', label = 'Dissolution', value = 'dissolution', wikidata = { property = 'P576',
condition = function(claim)
return (not wikidata.isInstance('Q41176', localdata.item, 6))
end,
}},
{type = 'row', label = 'Période', plurallabel = 'Périodes', value = 'période'},
{type = 'row', label = 'Affiliation', plurallabel = 'Affiliations', value = 'affiliation', property = 'P1416'},
{type = 'row', label = 'Forme juridique', value = 'forme juridique', property = 'P1454'},
{type = 'row', label = function ( localdata )
if localdata['titre dirigeant'] then
return localdata['titre dirigeant'] else return 'Dirigeant'
end
end, plurallabel = 'Dirigeants', value = 'dirigeant', property = 'P1037'},
{type = 'row', label = function ( localdata )
if localdata['titre dirigeant2'] then
return localdata['titre dirigeant2'] else return 'Dirigeant'
end
end, value = 'dirigeant2'}, -- Pour la compatibilité avec l'ancienne infobox
-- {type = 'row', label = 'Période', plurallabel = 'Périodes', value = 'période'}, -- Propriété Wikidata manquante
{type = 'row', label = 'Collaborateurs', value = 'personnel', property = 'P1128'},
{type = 'row', label = 'Protection', plurallabel = 'Protections', value = 'protection', wikidata = { property = 'P1435',
condition = function(claim)
return (not wikidata.isInstance('Q41176', localdata.item, 6))
end,
}},
{type = 'row', label = 'Site web', plurallabel = 'Site web', value = 'site', property = 'P856'},
{type = 'row', label = '[[ISO 15511|ISIL]]', value = 'ISIL', property = 'P791'},
{type = 'row', label = 'Nom principal', plurallabel = 'Noms principaux', value = 'nomISIL'},
{type = 'row', label = 'Siège', plurallabel = 'Sièges', value = 'siège', property = 'P159'},
{type = 'row', label = 'Membre de', value = 'membre', property = 'P463'},
},
},
-- Partie 2 Collections
{type = 'table', title='Collections',
rows = {
{type = 'row', label = 'Ampleur', value = 'ampleur', wikidata = function() return ampleur(collecitem) end},
--Collection à laquelle appartient un fonds (P361 : Partie de)
{type = 'row', label = 'Collection', plurallabel = 'Collections', value = 'collection', wikidata = {
property = 'P361',
condition = function(claim)
local v = wikidata.getMainId(claim)
return wikidata.isInstance('Q2668072', v, 2)
end,
}
},
--Institution conservant un fonds (P126 : Maintenance assurée par)
{type = 'row', label = 'Conservateur', plurallabel = 'Conservateurs', value = 'conservateur', wikidata = {
property = 'P126',
condition = function(claim)
local v = wikidata.getMainId(claim)
return wikidata.isInstance('Q1497649', v, 2)
end,
}
},
--Fonds d'une collection
{type = 'row', label = 'Fonds', plurallabel = 'Fonds', value = 'fonds', wikidata = {
property = 'P527',
condition = function(claim)
local v = wikidata.getMainId(claim)
return wikidata.isInstance('Q3052382', v, 2)
end,
}
},
}},
{type = 'table', rows = sparql(), style = { ['text-align'] = 'center'}},
-- Partie 3 - Bâtiment
{type = 'table', title='Bâtiment',
rows = {
{type = 'row', label = 'Article dédié', value = {'monument', 'article bâtiment'}, wikidata =
function()
if buildingitem and (buildingitem.id ~= localdata.item.id) and wd.siteLink(buildingitem) then
str = wd.formatEntity(buildingitem)
return wd.addLinkBack(str, item, 'P276')
end
end
},
{type = 'row', label = 'Bâtiment', plurallabel = 'Bâtiment', value = 'bâtiment', wikidata ={ property = 'P276',
condition = function(claim)
local v = wikidata.getMainId(claim)
return wikidata.isInstance('Q41176', v, 6)
end,
}},
{type = 'row', label = 'Nom original', plurallabel = 'Noms originaux', value = 'nombat', wikidata = function() return noms(buildingitem) end},
{type = 'row', label = 'Type de bâtiment', plurallabel = 'Types de bâtiments', value = ''}, -- Requête à écrire pour obtenir les données WD du bâtiment
{type = 'row', label = 'Construction', value = 'date de construction', wikidata = function() return construction(buildingitem) end},
{type = 'row', label = 'Architecte', plurallabel = 'Architectes', value = 'architecte', wikidata = function() return architects(buildingitem) end},
{type = 'row', label = 'Destination initiale', plurallabel = 'Destination initiales', value = 'destination initiale'}, -- Requête à écrire pour obtenir les données WD du bâtiment
{type = 'row', label = 'Classement', plurallabel = 'Classements', value = 'classement', wikidata = function() return classement(buildingitem) end},
--Institutions hébergées
{type = 'row', label = 'Institution hébergée', plurallabel = 'Institutions hébergées', value = 'institutions', wikidata = function() return institutions(buildingitem) end},
-- Collections hébergées par un bâtiment
{type = 'row', label = 'Collection hébergée', plurallabel = 'Collections hébergées', value = 'collection hebergee'},
{type = 'row', label = function ( localdata )
if localdata['titre autre bâtiment'] then
return localdata['titre autre bâtiment'] else return 'Autre bâtiment'
end
end, plurallabel = 'Autres bâtiments', value = 'autre bâtiment'}, -- Propriété Wikidata manquante
pays(),
-- locadmin.adminloc(), Voir si réellement utile. Code à adapter si oui
{type = 'row', label = function ( localdata )
if localdata['intitulé subdivision'] then
return localdata['intitulé subdivision'] else return ''
end
end, value = 'subdivision'}, -- Propriété Wikidata manquante
{type = 'row', label = function ( localdata )
if localdata['intitulé subdivision2'] then
return localdata['intitulé subdivision2'] else return ''
end
end, value = 'subdivision2'}, -- Propriété Wikidata manquante
{type = 'row', label = 'Ville', plurallabel = 'Villes', value = 'ville'}, -- Propriété Wikidata manquante
{type = 'row', label = 'Adresse', plurallabel = 'Adresses', value = 'adresse'}, -- Propriété Wikidata manquante
loc.coordinates(),
}
},
loc.geoloc({marker='library', default_zoom=7}),
}
}