Mudanças entre as edições de "Módulo:Changelog"
Ir para navegação
Ir para pesquisar
m |
m |
||
| Linha 3: | Linha 3: | ||
local function N(s) return s and mw.text.trim(tostring(s)) or '' end | local function N(s) return s and mw.text.trim(tostring(s)) or '' end | ||
local function has(s) return N(s) ~= '' end | local function has(s) return N(s) ~= '' end | ||
local function param( | local function param(a, ...) for i=1,select('#', ...) do local k=select(i, ...); if has(a[k]) then return N(a[k]) end end return '' end | ||
end | |||
function p.item(frame) | function p.item(frame) | ||
| Linha 22: | Linha 16: | ||
local color = param(args, 'color','cor') | local color = param(args, 'color','cor') | ||
local item = mw.html.create('div') | local item = mw.html.create('div'):addClass('notice-item') | ||
:css('display','flex'):css('align-items','flex-start') | |||
:css('display','flex') | :css('background','#fff'):css('border','1px solid #ddd') | ||
:css('border-radius','6px'):css('margin-bottom','10px') | |||
:css('background','#fff') | :css('padding','8px 10px'):css('box-sizing','border-box') | ||
:css('border-radius','6px') | |||
:css('padding','8px 10px') | |||
:css('border-left','5px solid var(--notice-color, #f5b700)') | :css('border-left','5px solid var(--notice-color, #f5b700)') | ||
| Linha 39: | Linha 28: | ||
if has(title) then | if has(title) then | ||
local ttl | local ttl = has(link) | ||
and content:tag('a'):addClass('notice-title'):attr('href', link):attr('target','_blank'):css('text-decoration','none') | |||
or content:tag('span'):addClass('notice-title') | |||
ttl:css('display','block'):css('font-size','1.3em'):css('font-weight','bold') | |||
:css('color','#333'):css('margin','0'):wikitext(title) | |||
ttl:css('display','block') | |||
:css('color','#333') | |||
end | end | ||
if has(date) then | if has(date) then | ||
content:tag('div') | content:tag('div'):addClass('notice-date') | ||
:css('font-size','0.9em'):css('color','#888'):css('margin','-5px 0') | |||
:css('font-size','0.9em') | |||
:wikitext(date) | :wikitext(date) | ||
end | end | ||
if has(desc) then | if has(desc) then | ||
content:tag('p') | content:tag('p'):addClass('notice-desc') | ||
:css('color','#555'):css('line-height','1.3'):css('margin','0') | |||
:css('color','#555') | |||
:wikitext(desc) | :wikitext(desc) | ||
end | end | ||
if has(icon) then | if has(icon) then | ||
item:tag('img') | item:tag('img'):addClass('notice-icon'):attr('src', icon):attr('alt', title or '') | ||
:css('object-fit','contain'):css('flex-shrink','0') | |||
:css('object-fit','contain') | |||
end | end | ||
return tostring(item) | -- garante que sai como HTML renderizado (evita aparecer texto dos <a> etc) | ||
return frame:preprocess(tostring(item)) | |||
end | end | ||
return p | return p | ||
Edição das 19h35min de 2 de setembro de 2025
A documentação para este módulo pode ser criada em Módulo:Changelog/doc
local p = {}
local function N(s) return s and mw.text.trim(tostring(s)) or '' end
local function has(s) return N(s) ~= '' end
local function param(a, ...) for i=1,select('#', ...) do local k=select(i, ...); if has(a[k]) then return N(a[k]) end end return '' end
function p.item(frame)
local parent = frame:getParent()
local args = parent and parent.args or frame.args
local title = param(args, 'title','titulo','título')
local link = param(args, 'link','url')
local date = param(args, 'date','data')
local desc = param(args, 'description','desc','descricao','descrição')
local icon = param(args, 'icon','icone','ícone','image')
local color = param(args, 'color','cor')
local item = mw.html.create('div'):addClass('notice-item')
:css('display','flex'):css('align-items','flex-start')
:css('background','#fff'):css('border','1px solid #ddd')
:css('border-radius','6px'):css('margin-bottom','10px')
:css('padding','8px 10px'):css('box-sizing','border-box')
:css('border-left','5px solid var(--notice-color, #f5b700)')
if has(color) then item:css('--notice-color', color) end
local content = item:tag('div'):addClass('notice-content'):css('flex','1')
if has(title) then
local ttl = has(link)
and content:tag('a'):addClass('notice-title'):attr('href', link):attr('target','_blank'):css('text-decoration','none')
or content:tag('span'):addClass('notice-title')
ttl:css('display','block'):css('font-size','1.3em'):css('font-weight','bold')
:css('color','#333'):css('margin','0'):wikitext(title)
end
if has(date) then
content:tag('div'):addClass('notice-date')
:css('font-size','0.9em'):css('color','#888'):css('margin','-5px 0')
:wikitext(date)
end
if has(desc) then
content:tag('p'):addClass('notice-desc')
:css('color','#555'):css('line-height','1.3'):css('margin','0')
:wikitext(desc)
end
if has(icon) then
item:tag('img'):addClass('notice-icon'):attr('src', icon):attr('alt', title or '')
:css('object-fit','contain'):css('flex-shrink','0')
end
-- garante que sai como HTML renderizado (evita aparecer texto dos <a> etc)
return frame:preprocess(tostring(item))
end
return p