« Module:Infobox/Configs/Organisation » : différence entre les versions
De Nefald
Autres actions
Aucun résumé des modifications |
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 | return args.nom or mw.title.getCurrentTitle().text | ||
end, | end, | ||
-- | -- Configuration de l'icône (Font Awesome) | ||
icone = { | icone = { | ||
type = 'fas', -- | 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, | ||
-- Types d'organisation (avec catégories automatiques) | |||
required = | 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'] = { | |||
display = 'Ordre', | display = 'Ordre', | ||
category = 'Ordre' | category = 'Ordre', | ||
icone = { type = 'fas', nom = 'scroll' } | |||
}, | }, | ||
['guilde'] = { | |||
display = 'Guilde', | display = 'Guilde', | ||
category = 'Guilde' | category = 'Guilde', | ||
icone = { type = 'fas', nom = 'handshake' } | |||
}, | }, | ||
['administration'] = { | |||
display = 'Administration', | display = 'Administration', | ||
category = 'Administration' | category = 'Administration', | ||
icone = { type = 'fas', nom = 'gavel' } | |||
} | } | ||
}, | }, | ||
errorMessage = 'Type non | 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 | 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' }, | -- Coordonnées (seront affichées groupées dans la section "Localisation") | ||
{ cle = 'y', label = 'Coordonnée Y' }, | { 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 | 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' } | ||
} | } | ||
}, | |||
{ | |||
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