« Module:Infobox/Configs/Organisation » : différence entre les versions
De Nefald
Autres actions
| Aucun résumé des modifications Balise : Révoqué | Aucun résumé des modifications Balise : Révoqué | ||
| Ligne 1 : | Ligne 1 : | ||
| -- 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 = function(args) | |||
|      return { |      return { | ||
|          type = 'fas',  |          type = 'fas',  -- 'fas', 'fab', 'far', 'fal', 'fad' | ||
|          nom = 'landmark', |          nom = 'landmark', | ||
|          couleur = (args and args.couleuricone) or '#2c3e50' |          couleur = (args and args.couleuricone) or '#2c3e50' | ||
|      } |      } | ||
| end | end | ||
| -- ========================== | |||
| -- 🖼️ 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 = { | |||
|          if args. |      { | ||
|         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 |          end | ||
|     } | |||
| } | |||
| -- ========================== | |||
| -- 🗂️ Catégories automatiques | |||
|          table.insert(cats, ' | -- ========================== | ||
| 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 |      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 | return config | ||
Version du 30 octobre 2025 à 08:22
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 = function(args)
    return {
        type = 'fas',  -- 'fas', 'fab', 'far', 'fal', 'fad'
        nom = 'landmark',
        couleur = (args and args.couleuricone) or '#2c3e50'
    }
end
-- ==========================
-- 🖼️ 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