Aller au contenu

Module:InfoboxOrga

Une page de Wikipédia, l'encyclopédie libre.
Ceci est la version actuelle de cette page, en date du 10 juillet 2025 à 17:27 et modifiée en dernier par SMahbaz (discuter | contributions) (Nouvelle page : local p = {} local wikibase = require('Module:Wikibase') -- QID de la Fédération Nationale des Agences d'Urbanisme local QID = "Q117287550" -- Map des propriétés Wikidata utiles et leur description pour affichage local props = { nature = "P31", -- instance de (nature de l’élément) date_fondation = "P571", -- date de création president = "P488", -- président president_debut = "P580", -- date de début (générique, pour statements) president_...). L'URL présente est un lien permanent vers cette version.
(diff) ← Version précédente | Version actuelle (diff) | Version suivante → (diff)

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

-- Ceci est la documentation du module Module:InfoboxOrga

-- Ne pas insérer de logique ici, seulement la documentation dans le format wikitexte ci-dessous

-- Module:InfoboxOrga/Documentation

Modèle:Documentation de module

local p = {}

local wikibase = require('Module:Wikibase')

-- QID de la Fédération Nationale des Agences d'Urbanisme
local QID = "Q117287550"

-- Map des propriétés Wikidata utiles et leur description pour affichage
local props = {
    nature = "P31", -- instance de (nature de l’élément)
    date_fondation = "P571", -- date de création
    president = "P488", -- président
    president_debut = "P580", -- date de début (générique, pour statements)
    president_delegate = "P2864", -- président délégué (à vérifier, sinon ajuster)
    tresorier = "P4012", -- trésorier (utiliser propriété adaptée si dispo)
    secretaire_general = "P1037", -- secrétaire général (à vérifier)
    pays = "P17", -- pays
    localisation = "P131", -- localisation administrative
    nombre_membres = "P1114", -- nombre de membres
    forme_juridique = "P1454", -- forme juridique
    siege = "P159", -- siège
    adresse = "P969", -- adresse
    site_officiel = "P856", -- site web officiel

    -- Identifiants
    viaf = "P214",
    isni = "P213",
    bnf = "P268",
    canadiana = "P7339",
    gnd = "P227",
    bib_congres = "P244",
    idref = "P2444",
    registre_transparence_ue = "P8335",
}

-- Fonction pour récupérer la valeur principale d'une propriété
local function getPropertyValue(entity, prop)
    local claim = entity.claims[prop]
    if claim then
        for _, statement in ipairs(claim) do
            -- On récupère la valeur de la première déclaration non supprimée
            if not statement.rank or statement.rank ~= "deprecated" then
                local mainsnak = statement.mainsnak
                if mainsnak and mainsnak.datavalue then
                    local dv = mainsnak.datavalue
                    if dv.type == "wikibase-entityid" then
                        return dv.value.id -- renvoie Qxxx
                    elseif dv.type == "string" or dv.type == "monolingualtext" then
                        return dv.value
                    elseif dv.type == "time" then
                        return dv.value.time
                    elseif dv.type == "quantity" then
                        return dv.value.amount
                    else
                        return dv.value
                    end
                end
            end
        end
    end
    return nil
end

function p.getData(frame)
    local entity = wikibase.getEntity(QID)
    if not entity then
        return "Erreur : entité Wikidata introuvable"
    end

    local data = {}

    -- nature
    local natureQ = getPropertyValue(entity, props.nature)
    data.nature = natureQ and ("[[Wikidata:" .. natureQ .. "|" .. natureQ .. "]]") or "N/A"

    -- date de fondation (extraction date simple ISO)
    local dateFond = getPropertyValue(entity, props.date_fondation)
    data.date_fondation = dateFond or "N/A"

    -- président (simple, prend la première valeur)
    local presidentQ = getPropertyValue(entity, props.president)
    data.president = presidentQ or "N/A"

    -- pays
    local paysQ = getPropertyValue(entity, props.pays)
    data.pays = paysQ or "N/A"

    -- localisation administrative
    local locQ = getPropertyValue(entity, props.localisation)
    data.localisation = locQ or "N/A"

    -- nombre membres
    local nbMembres = getPropertyValue(entity, props.nombre_membres)
    data.nombre_membres = nbMembres or "N/A"

    -- forme juridique
    local formeJ = getPropertyValue(entity, props.forme_juridique)
    data.forme_juridique = formeJ or "N/A"

    -- siège
    local siegeQ = getPropertyValue(entity, props.siege)
    data.siege = siegeQ or "N/A"

    -- adresse
    local adresse = getPropertyValue(entity, props.adresse)
    data.adresse = adresse or "N/A"

    -- site officiel
    local site = getPropertyValue(entity, props.site_officiel)
    data.site_officiel = site or "N/A"

    -- identifiants (VIAF, ISNI, BnF etc)
    data.viaf = getPropertyValue(entity, props.viaf) or "N/A"
    data.isni = getPropertyValue(entity, props.isni) or "N/A"
    data.bnf = getPropertyValue(entity, props.bnf) or "N/A"
    data.canadiana = getPropertyValue(entity, props.canadiana) or "N/A"
    data.gnd = getPropertyValue(entity, props.gnd) or "N/A"
    data.bib_congres = getPropertyValue(entity, props.bib_congres) or "N/A"
    data.idref = getPropertyValue(entity, props.idref) or "N/A"
    data.registre_transparence_ue = getPropertyValue(entity, props.registre_transparence_ue) or "N/A"

    return data
end

return p