« Module:MiniCard » : différence entre les versions
De Nefald
Autres actions
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... » |
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 "") | ||
-- 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') | ||
-- | -- Parser l'image via wikitext | ||
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 | |||
-- IMPORTANT : Retourner l'objet HTML directement | |||
return styles .. tostring(wrapper) | |||
else | else | ||
-- Pas de lien | -- Pas de lien | ||
return | 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