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/Localite » : différence entre les versions

De Nefald
Aucun résumé des modifications
Aucun résumé des modifications
Balise : Révoqué
Ligne 1 : Ligne 1 :
local config = {
local config = {
     titre = function(args)  
     titre = function(args)
         return args.nom or '{{PAGENAME}}'  
         return args.nom or '{{PAGENAME}}'
     end,
     end,
   
 
     -- Icône avec type et nom
     -- Icône avec type et nom
     icone = {
     icone = {
         type = 'fas', -- ou 'fab', 'far', 'fal', 'fad'
         type = 'fas',
         nom = 'map-location-dot'
         nom = 'map-location-dot'
     },
     },
   
 
     image = function(args)  
     image = function(args)
         if args.image then
         if args.image then
             return {
             return {
Ligne 23 : Ligne 23 :
     -- Configuration du champ "type" avec validation et catégorisation
     -- Configuration du champ "type" avec validation et catégorisation
     typeField = {
     typeField = {
         required = false, -- Optionnel pour les localités
         required = false,
         allowedValues = {
         allowedValues = {
             ['ville'] = {
             ['ville'] = {
Ligne 30 : Ligne 30 :
             },
             },
             ['village'] = {
             ['village'] = {
                 display = 'Village',  
                 display = 'Village',
                 category = 'Villages'
                 category = 'Villages'
             },
             },
Ligne 78 : Ligne 78 :
             }
             }
         },
         },
         errorMessage = 'Type de localité non reconnu. Types autorisés : ville, village, cité, capitale, port, forteresse, château, ruine, avant-poste, campement, métropole, sanctuaire'
         errorMessage = 'Type de localité non reconnu. Types autorisés : ville, village, cité, capitale, port, forteresse, château, ruine, avant-poste, campement, métropole, sanctuaire, cité-état'
     },
     },


Ligne 85 : Ligne 85 :
             titre = 'Informations Générales',
             titre = 'Informations Générales',
             champs = {
             champs = {
                 { cle = 'type', label = 'Type' },
                 {
                    cle = 'type',
                    label = 'Type',
                    process = function(value, args)
                        if not value or value == '' then
                            return nil
                        end
 
                        -- Validation du type
                        local cleanValue = mw.text.trim(mw.ustring.lower(value))
                        if config.typeField.allowedValues[cleanValue] then
                            return config.typeField.allowedValues[cleanValue].display
                        else
                            return '<span style="color: red; font-weight: bold;">' ..
                                  config.typeField.errorMessage ..
                                  '</span>[[Catégorie:Pages avec erreurs]]'
                        end
                    end
                },
                 { cle = 'fondation', label = 'Fondation' },
                 { cle = 'fondation', label = 'Fondation' },
                 { cle = 'destruction', label = 'Destruction' },
                 { cle = 'destruction', label = 'Destruction' },
Ligne 130 : Ligne 148 :
             }
             }
         }
         }
     }
     },
 
    categories = function(args, config, frame)
        local cats = {}
 
        -- Vérifier que la page est dans le namespace 0 (espace principal)
        if mw.title.getCurrentTitle().namespace == 0 then
            -- Ajouter la catégorie selon le type
            if args.type then
                local cleanType = mw.text.trim(mw.ustring.lower(args.type))
                if config.typeField.allowedValues[cleanType] then
                    table.insert(cats, config.typeField.allowedValues[cleanType].category)
                end
            end
        end
 
        return cats
    end
}
}


return config
return config

Version du 21 octobre 2025 à 09:15

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

local config = {
    titre = function(args)
        return args.nom or '{{PAGENAME}}'
    end,

    -- Icône avec type et nom
    icone = {
        type = 'fas',
        nom = 'map-location-dot'
    },

    image = function(args)
        if args.image then
            return {
                nom = args.image,
                taille = args.tailleimage or "250px",
                legende = args.legende
            }
        end
        return nil
    end,

    -- Configuration du champ "type" avec validation et catégorisation
    typeField = {
        required = false,
        allowedValues = {
            ['ville'] = {
                display = 'Ville',
                category = 'Villes'
            },
            ['village'] = {
                display = 'Village',
                category = 'Villages'
            },
            ['cité'] = {
                display = 'Cité',
                category = 'Cités'
            },
            ['capitale'] = {
                display = 'Capitale',
                category = 'Capitales'
            },
            ['port'] = {
                display = 'Port',
                category = 'Ports'
            },
            ['forteresse'] = {
                display = 'Forteresse',
                category = 'Forteresses'
            },
            ['château'] = {
                display = 'Château',
                category = 'Châteaux'
            },
            ['ruine'] = {
                display = 'Ruine',
                category = 'Ruines'
            },
            ['avant-poste'] = {
                display = 'Avant-poste',
                category = 'Avant-postes'
            },
            ['campement'] = {
                display = 'Campement',
                category = 'Campements'
            },
            ['métropole'] = {
                display = 'Métropole',
                category = 'Métropoles'
            },
            ['sanctuaire'] = {
                display = 'Sanctuaire',
                category = 'Sanctuaires'
            },
            ['cité-état'] = {
                display = 'Cité-État',
                category = 'Cité-État'
            }
        },
        errorMessage = 'Type de localité non reconnu. Types autorisés : ville, village, cité, capitale, port, forteresse, château, ruine, avant-poste, campement, métropole, sanctuaire, cité-état'
    },

    sections = {
        {
            titre = 'Informations Générales',
            champs = {
                {
                    cle = 'type',
                    label = 'Type',
                    process = function(value, args)
                        if not value or value == '' then
                            return nil
                        end

                        -- Validation du type
                        local cleanValue = mw.text.trim(mw.ustring.lower(value))
                        if config.typeField.allowedValues[cleanValue] then
                            return config.typeField.allowedValues[cleanValue].display
                        else
                            return '<span style="color: red; font-weight: bold;">' ..
                                   config.typeField.errorMessage ..
                                   '</span>[[Catégorie:Pages avec erreurs]]'
                        end
                    end
                },
                { cle = 'fondation', label = 'Fondation' },
                { cle = 'destruction', label = 'Destruction' },
                { cle = 'fondateur', label = 'Fondateur(s)' },
                { cle = 'symbole', label = 'Symbole' },
                { cle = 'statut', label = 'Statut' },
                { cle = 'x', label = 'Coordonnée X' },
                { cle = 'y', label = 'Coordonnée Y' },
                { cle = 'z', label = 'Coordonnée Z' }
            }
        },
        {
            titre = 'Organisation Interne',
            champs = {
                { cle = 'dirigeant', label = 'Dirigeant' },
                { cle = 'population', label = 'Population' },
                { cle = 'culte', label = 'Culte' },
                { cle = 'organisation_rattachee', label = 'Organisation rattachée' },
                { cle = 'gouvernement', label = 'Type de gouvernement' },
                { cle = 'quartiers', label = 'Quartiers' }
            }
        },
        {
            titre = 'Économie et Société',
            champs = {
                { cle = 'activite', label = 'Activité' },
                { cle = 'ressources', label = 'Ressources' },
                { cle = 'monnaie', label = 'Monnaie' },
                { cle = 'commerce', label = 'Commerce' },
                { cle = 'culture', label = 'Culture' },
                { cle = 'langues', label = 'Langues' }
            }
        },
        {
            titre = 'Géographie',
            champs = {
                { cle = 'monde', label = 'Monde' },
                { cle = 'climat', label = 'Climat' },
                { cle = 'biome', label = 'Biome' },
                { cle = 'relief', label = 'Relief' },
                { cle = 'superficie', label = 'Superficie' },
                { cle = 'cours_eau', label = 'Cours d\'eau' },
                { cle = 'batiments', label = 'Bâtiments notables' }
            }
        }
    },

    categories = function(args, config, frame)
        local cats = {}

        -- Vérifier que la page est dans le namespace 0 (espace principal)
        if mw.title.getCurrentTitle().namespace == 0 then
            -- Ajouter la catégorie selon le type
            if args.type then
                local cleanType = mw.text.trim(mw.ustring.lower(args.type))
                if config.typeField.allowedValues[cleanType] then
                    table.insert(cats, config.typeField.allowedValues[cleanType].category)
                end
            end
        end

        return cats
    end
}

return config