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

De Nefald
Hiob (discussion | contributions)
m A protégé « Module:Infobox/Core » ([Modifier=Autoriser uniquement les administrateurs] (infini) [Renommer=Autoriser uniquement les administrateurs] (infini))
Hiob (discussion | contributions)
m map
 
Ligne 1 : Ligne 1 :
local p = {}
local p = {}
local getArgs = require('Module:Arguments').getArgs
local getArgs = require('Module:Arguments').getArgs
-- Fonction pour générer le lien de carte dynamique
local function buildMapLink(args)
    -- Vérifier les champs obligatoires
    if not args.x or args.x == '' then return nil end
    if not args.y or args.y == '' then return nil end
    if not args.z or args.z == '' then return nil end
    if not args.worldname or args.worldname == '' then return nil end
   
    -- Valeurs par défaut pour les champs optionnels
    local mapname = args.mapname or 'flat'
    local zoom = args.zoom or '4'
   
    -- Construction de l'URL
    local url = string.format(
        'https://map.nefald.fr/?worldname=%s&mapname=%s&zoom=%s&x=%s&y=%s&z=%s',
        mw.uri.encode(args.worldname, 'PATH'),
        mw.uri.encode(mapname, 'PATH'),
        zoom,
        args.x,
        args.y,
        args.z
    )
   
    -- Retourner le lien formaté
    return string.format('[%s %s, %s, %s]', url, args.x, args.y, args.z)
end


-- Fonction de validation du champ "type"
-- Fonction de validation du champ "type"
Ligne 65 : Ligne 92 :
     return categoryString
     return categoryString
end
end


function p.build(args, config, frame)
function p.build(args, config, frame)
Ligne 120 : Ligne 146 :
     local body = mw.html.create('div')
     local body = mw.html.create('div')
         :addClass('infobox-body')
         :addClass('infobox-body')
    -- Vérifier si on a des coordonnées complètes
    local mapLink = buildMapLink(args)
    local coordinatesDisplayed = false


     for _, section in ipairs(config.sections or {}) do
     for _, section in ipairs(config.sections or {}) do
Ligne 128 : Ligne 158 :
             body:node(sectionDiv)
             body:node(sectionDiv)
         end
         end
        -- Vérifier si on doit afficher les coordonnées automatiquement
        local hasCoordinates = args.x and args.x ~= '' and args.y and args.y ~= '' and args.z and args.z ~= ''
        local coordinatesDisplayed = false


         for _, champ in ipairs(section.champs or {}) do
         for _, champ in ipairs(section.champs or {}) do
             -- Détection automatique des coordonnées
             -- Gestion spéciale pour les coordonnées
             if hasCoordinates and not coordinatesDisplayed and (champ.cle == 'x' or champ.cle == 'y' or champ.cle == 'z' or champ.cle == 'spawn' or champ.cle == 'coordonnees') then
             if mapLink and not coordinatesDisplayed and (champ.cle == 'x' or champ.cle == 'y' or champ.cle == 'z' or champ.cle == 'worldname' or champ.cle == 'coordonnees') then
                 local rowDiv = mw.html.create('div')
                 local rowDiv = mw.html.create('div')
                     :addClass('infobox-row')
                     :addClass('infobox-row')
Ligne 145 : Ligne 171 :
                 local valueDiv = mw.html.create('div')
                 local valueDiv = mw.html.create('div')
                     :addClass('infobox-value')
                     :addClass('infobox-value')
               
                     :wikitext(mapLink)
                -- Construction du lien vers la carte si le paramètre monde existe
                if args.monde and args.monde ~= '' then
                     local mapUrl = string.format('[https://map.nefald.fr/?worldname=%s&mapname=surface&zoom=4&x=%s&y=%s&z=%s %s, %s, %s]',
                        args.monde, args.x, args.y, args.z, args.x, args.y, args.z)
                    valueDiv:wikitext("''" .. mapUrl .. "''")
                else
                    -- Affichage simple sans lien
                    valueDiv:wikitext(string.format('%s, %s, %s', args.x, args.y, args.z))
                end
                  
                  
                 rowDiv:node(labelDiv):node(valueDiv)
                 rowDiv:node(labelDiv):node(valueDiv)
Ligne 160 : Ligne 177 :
                 coordinatesDisplayed = true
                 coordinatesDisplayed = true
                  
                  
             -- *** NOUVELLE LOGIQUE POUR TRAITEMENT DES CHAMPS ***
             -- Traitement normal des autres champs (ignorer x, y, z, worldname s'ils sont déjà affichés comme coordonnées)
             elseif not (hasCoordinates and (champ.cle == 'x' or champ.cle == 'y' or champ.cle == 'z')) then
             elseif not (mapLink and (champ.cle == 'x' or champ.cle == 'y' or champ.cle == 'z' or champ.cle == 'worldname' or champ.cle == 'mapname' or champ.cle == 'zoom')) then
                 local rawValue = args[champ.cle]
                 local rawValue = args[champ.cle]
                  
                  
Ligne 227 : Ligne 244 :
     end
     end
      
      
     -- Ajouter les catégories automatiques (ancien + nouveau système)
     -- Ajouter les catégories automatiques
     local categories = addCategories(args, config, frame)
     local categories = addCategories(args, config, frame)
      
      
Les témoins (''cookies'') nous aident à fournir nos services. En utilisant nos services, vous acceptez notre utilisation de témoins.