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.

« Module:Infobox/Configs/Organisation » : différence entre les versions

De Nefald
Aucun résumé des modifications
Hiob (discussion | contributions)
Aucun résumé des modifications
Ligne 1 : Ligne 1 :
local config = {
local config = {
    -- Titre de la page (avec fallback sur {{PAGENAME}})
     titre = function(args)
     titre = function(args)
         return args.nom or '{{PAGENAME}}'
         return args.nom or mw.title.getCurrentTitle().text
     end,
     end,
 
 
     -- Icône avec type et nom
     -- Configuration de l'icône (Font Awesome)
     icone = {
     icone = {
         type = 'fas',  -- ou 'fab', 'far', 'fal', 'fad'
         type = 'fas',  -- Types possibles : 'fas', 'fab', 'far', 'fal', 'fad'
         nom = 'landmark'
         nom = 'landmark',
        -- Couleur optionnelle (CSS valide)
        couleur = args.couleuricone or '#2c3e50'
     },
     },
      
 
     -- Gestion de l'image (avec légende et taille)
     image = function(args)
     image = function(args)
         if args.image then
         if args.image then
Ligne 15 : Ligne 19 :
                 nom = args.image,
                 nom = args.image,
                 taille = args.tailleimage or "250px",
                 taille = args.tailleimage or "250px",
                 legende = args.legende
                 legende = args.legende,
                position = args.positionimage or "right"  -- 'left', 'center', 'right'
             }
             }
         end
         end
         return nil
         return nil
     end,
     end,
      
 
        typeField = {
     -- Types d'organisation (avec catégories automatiques)
         required = false, --  
    typeField = {
         required = true, -- Champ obligatoire
         allowedValues = {
         allowedValues = {
             ['faction'] = {
             ['faction'] = {
                 display = 'Faction',
                 display = 'Faction',
                 category = 'Faction'
                 category = 'Faction',
                icone = { type = 'fas', nom = 'flag' }
             },
             },
             ['tribu'] = {
             ['tribu'] = {
                 display = 'Tribu',  
                 display = 'Tribu',
                 category = 'Tribu'
                 category = 'Tribu',
                icone = { type = 'fas', nom = 'users' }
             },
             },
['ordre'] = {
            ['ordre'] = {
                 display = 'Ordre',  
                 display = 'Ordre',
                 category = 'Ordre'
                 category = 'Ordre',
                icone = { type = 'fas', nom = 'scroll' }
             },
             },
['guilde'] = {
            ['guilde'] = {
                 display = 'Guilde',  
                 display = 'Guilde',
                 category = 'Guilde'
                 category = 'Guilde',
                icone = { type = 'fas', nom = 'handshake' }
             },
             },
['administration'] = {
            ['administration'] = {
                 display = 'Administration',  
                 display = 'Administration',
                 category = 'Administration'
                 category = 'Administration',
                icone = { type = 'fas', nom = 'gavel' }
             }
             }
         },
         },
         errorMessage = 'Type non reconnu. Types autorisés : Tribu, Faction, Ordre, Guilde , Administration'
        default = 'faction',  -- Valeur par défaut si non spécifié
         errorMessage = 'Type non valide. Types autorisés : faction, tribu, ordre, guilde, administration.'
     },
     },


    -- Sections de la fiche (avec gestion des coordonnées groupées)
     sections = {
     sections = {
         {
         {
             titre = 'Informations Générales',
             titre = 'Informations générales',
            id = 'infos-generales',  -- ID HTML pour les ancres
             champs = {
             champs = {
                 { cle = 'type', label = 'Type' },
                 { cle = 'type', label = 'Type', type = 'select' }, -- Champ de type "select"
                 { cle = 'fondation', label = 'Fondation' },
                 { cle = 'fondation', label = 'Fondation', type = 'date' },
                 { cle = 'dissolution', label = 'Dissolution' },
                 { cle = 'dissolution', label = 'Dissolution', type = 'date' },
                 { cle = 'fondateurs', label = 'Fondateur(s)' },
                 { cle = 'fondateurs', label = 'Fondateur(s)', type = 'text' },
                 { cle = 'symbole', label = 'Symbole' },
                 { cle = 'symbole', label = 'Symbole', type = 'image' },
                 { cle = 'statut', label = 'Statut' },
                 { cle = 'statut', label = 'Statut', type = 'text' },
                 { cle = 'x', label = 'Coordonnée X' }, -- Ces champs seront remplacés automatiquement
                -- Coordonnées (seront affichées groupées dans la section "Localisation")
                 { cle = 'y', label = 'Coordonnée Y' }, -- par l'affichage "Coordonnées" groupé
                 { cle = 'x', label = 'Coordonnée X', type = 'number', hidden = true },
                 { cle = 'z', label = 'Coordonnée Z' }
                 { cle = 'y', label = 'Coordonnée Y', type = 'number', hidden = true },
                 { cle = 'z', label = 'Coordonnée Z', type = 'number', hidden = true }
             }
             }
         },
         },
         {
         {
             titre = 'Organisation Interne',
             titre = 'Organisation interne',
            id = 'organisation',
             champs = {
             champs = {
                 { cle = 'dirigeant', label = 'Dirigeant' },
                 { cle = 'dirigeant', label = 'Dirigeant', type = 'text' },
                 { cle = 'effectifs', label = 'Effectifs' },
                 { cle = 'effectifs', label = 'Effectifs', type = 'number' },
                 { cle = 'activite', label = 'Activité' },
                 { cle = 'activite', label = 'Activité', type = 'text' },
                 { cle = 'culte', label = 'Culte' }
                 { cle = 'culte', label = 'Culte', type = 'text' }
             }
             }
         },
         },
         {
         {
             titre = 'Géographie',
             titre = 'Géographie',
            id = 'geographie',
             champs = {
             champs = {
                 { cle = 'territoire', label = 'Territoire d’influence' },
                 { cle = 'territoire', label = 'Territoire d’influence', type = 'text' },
                 { cle = 'siege', label = 'Siège' },
                 { cle = 'siege', label = 'Siège', type = 'text' }
                { cle = 'localisation', label = 'Localisation' }
             }
             }
        },
        {
            titre = 'Localisation',
            id = 'localisation',
            champs = {
                { cle = 'monde', label = 'Monde', type = 'text' },
                { cle = 'localisation', label = 'Localisation', type = 'text' },
                -- Champs techniques pour la carte (masqués par défaut)
                { 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 }
            },
            -- Fonction pour afficher les coordonnées groupées
            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 (ajoutées à la page)
    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 (si spécifié)
        if args.monde then
            table.insert(cats, 'Localisation dans ' .. args.monde)
        end
        -- Catégorie "Organisations" par défaut
        table.insert(cats, 'Organisations')
        return cats
    end
}
}


return config
return config

Version du 28 octobre 2025 à 20:55

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

local config = {
    -- Titre de la page (avec fallback sur {{PAGENAME}})
    titre = function(args)
        return args.nom or mw.title.getCurrentTitle().text
    end,

    -- Configuration de l'icône (Font Awesome)
    icone = {
        type = 'fas',  -- Types possibles : 'fas', 'fab', 'far', 'fal', 'fad'
        nom = 'landmark',
        -- Couleur optionnelle (CSS valide)
        couleur = args.couleuricone or '#2c3e50'
    },

    -- Gestion de l'image (avec légende et taille)
    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,

    -- Types d'organisation (avec catégories automatiques)
    typeField = {
        required = true,  -- Champ obligatoire
        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',  -- Valeur par défaut si non spécifié
        errorMessage = 'Type non valide. Types autorisés : faction, tribu, ordre, guilde, administration.'
    },

    -- Sections de la fiche (avec gestion des coordonnées groupées)
    sections = {
        {
            titre = 'Informations générales',
            id = 'infos-generales',  -- ID HTML pour les ancres
            champs = {
                { cle = 'type', label = 'Type', type = 'select' },  -- Champ de 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' },
                -- Coordonnées (seront affichées groupées dans la section "Localisation")
                { 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' },
                -- Champs techniques pour la carte (masqués par défaut)
                { 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 }
            },
            -- Fonction pour afficher les coordonnées groupées
            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 (ajoutées à la page)
    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 (si spécifié)
        if args.monde then
            table.insert(cats, 'Localisation dans ' .. args.monde)
        end
        -- Catégorie "Organisations" par défaut
        table.insert(cats, 'Organisations')
        return cats
    end
}

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