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

De Nefald
Hiob (discussion | contributions)
Page créée avec « 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 "") -- Charger le CSS local css = frame:extensionTag('templatestyles', '', {src='Modèle:MiniCard/styles.css'}) -- Si pas de texte, utiliser le lien comme texte if text == "" and link ~= "" then text = link end... »
 
Hiob (discussion | contributions)
Aucun résumé des modifications
Ligne 6 : Ligne 6 :
     local text = mw.text.trim(args.text or "")
     local text = mw.text.trim(args.text or "")
     local image = mw.text.trim(args.image or "")
     local image = mw.text.trim(args.image or "")
   
    -- Charger le CSS
    local css = frame:extensionTag('templatestyles', '', {src='Modèle:MiniCard/styles.css'})
      
      
     -- Si pas de texte, utiliser le lien comme texte
     -- Si pas de texte, utiliser le lien comme texte
Ligne 18 : Ligne 15 :
     local isExternal = link:match("^https?://") or link:match("^//")
     local isExternal = link:match("^https?://") or link:match("^//")
      
      
     -- Construction de la card (HTML)
     -- Construction de la card (objet HTML mw.html)
     local card = mw.html.create('span'):addClass('minicard')
     local card = mw.html.create('span'):addClass('minicard')
      
      
Ligne 27 : Ligne 24 :
         -- Background avec image
         -- Background avec image
         local bg = card:tag('span'):addClass('minicard-background')
         local bg = card:tag('span'):addClass('minicard-background')
         -- Image sans lien (important: link= vide)
         -- Parser l'image via wikitext
         bg:wikitext('[[Fichier:' .. image .. '|link=|60px]]')
         local imageWiki = frame:preprocess('[[Fichier:' .. image .. '|link=|60px]]')
        bg:wikitext(imageWiki)
         -- Overlay
         -- Overlay
         bg:tag('span'):addClass('minicard-overlay')
         bg:tag('span'):addClass('minicard-overlay')
Ligne 35 : Ligne 33 :
     -- Texte
     -- Texte
     card:tag('span'):addClass('minicard-text'):wikitext(text)
     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
     -- Wrapper avec lien
Ligne 52 : Ligne 53 :
                 wrapper:attr('href', title:fullUrl())
                 wrapper:attr('href', title:fullUrl())
             else
             else
                 wrapper:attr('href', '#')
                 wrapper:attr('href', mw.uri.localUrl(link))
             end
             end
         end
         end
          
          
         wrapper:node(card)
         wrapper:node(card)
         return css .. tostring(wrapper)
       
        -- IMPORTANT : Retourner l'objet HTML directement
         return styles .. tostring(wrapper)
     else
     else
         -- Pas de lien
         -- Pas de lien
         return css .. tostring(card)
         return styles .. tostring(card)
     end
     end
end
end


return p
return p

Version du 11 novembre 2025 à 13:49

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.