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

De Nefald Wiki
Hiob (discussion | contributions)
mAucun résumé des modifications
Hiob (discussion | contributions)
mAucun résumé des modifications
 
(Une version intermédiaire par le même utilisateur non affichée)
Ligne 5 : Ligne 5 :
      
      
     local titre = args['titre'] or 'Titre'
     local titre = args['titre'] or 'Titre'
     local description = args['description'] or 'Description'  
     local description = args['description'] or 'Description'
     local lien = args['lien'] or titre
     local lien = args['lien'] or titre
     local image = args['image'] or ''
     local image = args['image'] or ''
     local couleur = args['couleur'] or '#3b82f6'
     local couleur = args['couleur'] or '#3b82f6'
      
      
     -- Construction simple avec onclick
     -- Lien cliquable avec div dedans
     local result = '<div class="nav-card-wrapper" onclick="window.location.href=\'/wiki/' .. lien .. '\'">'
     local html = mw.html.create('a')
     result = result .. '<div class="nav-card" style="background-color: ' .. couleur .. ';">'
        :attr('href', mw.uri.encode(lien, 'WIKI'))
   
        :addClass('nav-card-link')
        :css('text-decoration', 'none')
        :css('display', 'inline-block')
       
     local card = html:tag('div')
        :addClass('nav-card')
        :css('background', couleur)
        :css('width', '280px')
        :css('height', '160px')
        :css('border-radius', '12px')
        :css('position', 'relative')
        :css('overflow', 'hidden')
        :css('margin', '10px')
 
     -- Image de fond si présente
     -- Image de fond si présente
     if image and image ~= '' then
     if image ~= '' then
         result = result .. '<div class="nav-card-bg" style="background-image: url(/wiki/images/thumb/' .. image .. '/300px-' .. image .. ');"></div>'
         card:tag('div')
            :addClass('nav-card-bg')
            :css('background-image', 'url(/images/' .. image .. ')')
            :css('background-size', 'cover')
            :css('position', 'absolute')
            :css('top', '0')
            :css('left', '0')
            :css('width', '100%')
            :css('height', '100%')
            :css('opacity', '0.3')
     end
     end
    -- Contenu texte
    local content = card:tag('div')
        :addClass('nav-card-content')
        :css('position', 'absolute')
        :css('bottom', '0')
        :css('left', '0')
        :css('right', '0')
        :css('padding', '20px')
        :css('background', 'linear-gradient(transparent, rgba(0,0,0,0.7))')
       
    content:tag('h3')
        :css('color', 'white')
        :css('margin', '0 0 8px 0')
        :wikitext(titre)
       
    content:tag('p')
        :css('color', 'rgba(255,255,255,0.9)')
        :css('margin', '0')
        :wikitext(description)
      
      
    -- Overlay pour le texte
     return tostring(html)
    result = result .. '<div class="nav-card-overlay">'
    result = result .. '<h3 class="nav-card-title">' .. titre .. '</h3>'
    result = result .. '<p class="nav-card-desc">' .. description .. '</p>'
    result = result .. '</div></div></div>'
   
     return result
end
end


return p
return p

Dernière version du 8 septembre 2025 à 16:55

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

local p = {}

function p.main(frame)
    local args = frame:getParent().args
    
    local titre = args['titre'] or 'Titre'
    local description = args['description'] or 'Description'
    local lien = args['lien'] or titre
    local image = args['image'] or ''
    local couleur = args['couleur'] or '#3b82f6'
    
    -- Lien cliquable avec div dedans
    local html = mw.html.create('a')
        :attr('href', mw.uri.encode(lien, 'WIKI'))
        :addClass('nav-card-link')
        :css('text-decoration', 'none')
        :css('display', 'inline-block')
        
    local card = html:tag('div')
        :addClass('nav-card')
        :css('background', couleur)
        :css('width', '280px')
        :css('height', '160px')
        :css('border-radius', '12px')
        :css('position', 'relative')
        :css('overflow', 'hidden')
        :css('margin', '10px')

    -- Image de fond si présente
    if image ~= '' then
        card:tag('div')
            :addClass('nav-card-bg')
            :css('background-image', 'url(/images/' .. image .. ')')
            :css('background-size', 'cover')
            :css('position', 'absolute')
            :css('top', '0')
            :css('left', '0')
            :css('width', '100%')
            :css('height', '100%')
            :css('opacity', '0.3')
    end

    -- Contenu texte
    local content = card:tag('div')
        :addClass('nav-card-content')
        :css('position', 'absolute')
        :css('bottom', '0')
        :css('left', '0')
        :css('right', '0')
        :css('padding', '20px')
        :css('background', 'linear-gradient(transparent, rgba(0,0,0,0.7))')
        
    content:tag('h3')
        :css('color', 'white')
        :css('margin', '0 0 8px 0')
        :wikitext(titre)
        
    content:tag('p')
        :css('color', 'rgba(255,255,255,0.9)')
        :css('margin', '0')
        :wikitext(description)
    
    return tostring(html)
end

return p