Módulo:Changelog
Ir para navegação
Ir para pesquisar
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