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.

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

local p = {}

function p.main(frame)
    local args = frame:getParent().args
    local link = mw.text.trim(args.link or "")
    local text = mw.text.trim(args.text or "")
    local image = mw.text.trim(args.image or "")
    
    -- Si pas de texte, utiliser le lien comme texte
    if text == "" and link ~= "" then
        text = link
    end
    
    -- Détection lien externe
    local isExternal = link:match("^https?://") or link:match("^//")
    
    -- Construction de la card (objet HTML mw.html)
    local card = mw.html.create('span'):addClass('minicard')
    
    -- Ajouter classe si pas d'image
    if image == "" then
        card:addClass('minicard--no-image')
    else
        -- Background avec image
        local bg = card:tag('span'):addClass('minicard-background')
        -- Parser l'image via wikitext
        local imageWiki = frame:preprocess('[[Fichier:' .. image .. '|link=|60px]]')
        bg:wikitext(imageWiki)
        -- Overlay
        bg:tag('span'):addClass('minicard-overlay')
    end
    
    -- Texte
    card:tag('span'):addClass('minicard-text'):wikitext(text)
    
    -- Charger le CSS
    local styles = frame:extensionTag('templatestyles', '', {src='Modèle:MiniCard/styles.css'})
    
    -- Wrapper avec lien
    if link ~= "" then
        local wrapper = mw.html.create('a')
            :addClass('minicard-wrapper')
        
        if isExternal then
            wrapper:attr('href', link)
                  :attr('target', '_blank')
                  :attr('rel', 'noopener noreferrer')
                  :addClass('external')
        else
            -- Lien interne : construire l'URL
            local title = mw.title.new(link)
            if title then
                wrapper:attr('href', title:fullUrl())
            else
                wrapper:attr('href', mw.uri.localUrl(link))
            end
        end
        
        wrapper:node(card)
        
        -- IMPORTANT : Retourner l'objet HTML directement
        return styles .. tostring(wrapper)
    else
        -- Pas de lien
        return styles .. tostring(card)
    end
end

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