Basculer le menu
Changer de menu des préférences
Basculer le menu personnel
Non connecté(e)
Votre adresse IP sera visible au public si vous faites des modifications.
Version datée du 30 octobre 2025 à 11:41 par Ayd (discussion | contributions)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

La documentation pour ce module peut être créée à Module:Infobox/Configs/Organisation/doc

-- Module:Infobox/Configs/Organisation
-- Configuration du modèle {{Infobox Organisation}}

local config = {}

-- ==========================
-- 🏷️ Titre de la page
-- ==========================
config.titre = function(args)
    return args.nom or mw.title.getCurrentTitle().text
end

-- ==========================
-- 🏛️ Icône principale (Font Awesome)
-- ==========================
config.icone = {
    type = 'fas',
    nom = 'landmark',
    couleur = '#2c3e50'
}

-- ==========================
-- 🖼️ Image principale
-- ==========================
config.image = function(args)
    if args.image then
        return {
            nom = args.image,
            taille = args.tailleimage or "250px",
            legende = args.legende,
            position = args.positionimage or "right" -- 'left', 'center', 'right'
        }
    end
    return nil
end

-- ==========================
-- 🧭 Type d'organisation
-- ==========================
config.typeField = {
    required = true,
    allowedValues = {
        ['faction'] = {
            display = 'Faction',
            category = 'Faction',
            icone = { type = 'fas', nom = 'flag' }
        },
        ['tribu'] = {
            display = 'Tribu',
            category = 'Tribu',
            icone = { type = 'fas', nom = 'users' }
        },
        ['ordre'] = {
            display = 'Ordre',
            category = 'Ordre',
            icone = { type = 'fas', nom = 'scroll' }
        },
        ['guilde'] = {
            display = 'Guilde',
            category = 'Guilde',
            icone = { type = 'fas', nom = 'handshake' }
        },
        ['administration'] = {
            display = 'Administration',
            category = 'Administration',
            icone = { type = 'fas', nom = 'gavel' }
        }
    },
    default = 'faction',
    errorMessage = 'Type non valide. Types autorisés : faction, tribu, ordre, guilde, administration.'
}

-- ==========================
-- 📑 Sections principales
-- ==========================
config.sections = {
    {
        titre = 'Informations générales',
        id = 'infos-generales',
        champs = {
            { cle = 'type', label = 'Type', type = 'select' },
            { cle = 'fondation', label = 'Fondation', type = 'date' },
            { cle = 'dissolution', label = 'Dissolution', type = 'date' },
            { cle = 'fondateurs', label = 'Fondateur(s)', type = 'text' },
            { cle = 'symbole', label = 'Symbole', type = 'image' },
            { cle = 'statut', label = 'Statut', type = 'text' },
            { cle = 'x', label = 'Coordonnée X', type = 'number', hidden = true },
            { cle = 'y', label = 'Coordonnée Y', type = 'number', hidden = true },
            { cle = 'z', label = 'Coordonnée Z', type = 'number', hidden = true }
        }
    },
    {
        titre = 'Organisation interne',
        id = 'organisation',
        champs = {
            { cle = 'dirigeant', label = 'Dirigeant', type = 'text' },
            { cle = 'effectifs', label = 'Effectifs', type = 'number' },
            { cle = 'activite', label = 'Activité', type = 'text' },
            { cle = 'culte', label = 'Culte', type = 'text' }
        }
    },
    {
        titre = 'Géographie',
        id = 'geographie',
        champs = {
            { cle = 'territoire', label = 'Territoire d’influence', type = 'text' },
            { cle = 'siege', label = 'Siège', type = 'text' }
        }
    },
    {
        titre = 'Localisation',
        id = 'localisation',
        champs = {
            { cle = 'monde', label = 'Monde', type = 'text' },
            { cle = 'localisation', label = 'Localisation', type = 'text' },
            { cle = 'worldname', label = 'Monde technique', type = 'text', hidden = true },
            { cle = 'mapname', label = 'Type de carte', type = 'text', hidden = true },
            { cle = 'zoom', label = 'Niveau de zoom', type = 'number', hidden = true }
        },
        displayCoordonnees = function(args)
            if args.x and args.y and args.z then
                return string.format(
                    'Coordonnées : **%s**, **%s**, **%s** %s',
                    args.x,
                    args.y,
                    args.z,
                    (args.monde and ('(' .. args.monde .. ')') or '')
                )
            end
            return nil
        end
    }
}

-- ==========================
-- 🗂️ Catégories automatiques
-- ==========================
config.categories = function(args)
    local cats = {}

    -- Catégorie par type
    if args.type and config.typeField.allowedValues[args.type] then
        table.insert(cats, config.typeField.allowedValues[args.type].category)
    end

    -- Catégorie par monde
    if args.monde then
        table.insert(cats, 'Localisation dans ' .. args.monde)
    end

    -- Catégorie générique
    table.insert(cats, 'Organisations')

    return cats
end

-- ==========================
-- 🧪 Fonction de test rapide
-- ==========================
function config.test()
    return "✅ Module Infobox/Configs/Organisation chargé correctement"
end

return config
Les témoins (''cookies'') nous aident à fournir nos services. En utilisant nos services, vous acceptez notre utilisation de témoins.