Mudanças entre as edições de "Módulo:Changelog"

De Wiki Gla
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(args, ...)
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
  for i = 1, select('#', ...) do
    local k = select(i, ...)
    if has(args[k]) then return N(args[k]) end
  end
  return ''
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')
    :addClass('notice-item')
     :css('display','flex'):css('align-items','flex-start')
     :css('display','flex')
     :css('background','#fff'):css('border','1px solid #ddd')
    :css('align-items','flex-start')
     :css('border-radius','6px'):css('margin-bottom','10px')
     :css('background','#fff')
     :css('padding','8px 10px'):css('box-sizing','border-box')
    :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)')
     :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)
    if has(link) then
       and content:tag('a'):addClass('notice-title'):attr('href', link):attr('target','_blank'):css('text-decoration','none')
       ttl = content:tag('a')
       or  content:tag('span'):addClass('notice-title')
        :addClass('notice-title')
     ttl:css('display','block'):css('font-size','1.3em'):css('font-weight','bold')
        :attr('href', link)
       :css('color','#333'):css('margin','0'):wikitext(title)
        :attr('target','_blank')
        :css('text-decoration','none')
    else
       ttl = content:tag('span'):addClass('notice-title')
    end
     ttl:css('display','block')
      :css('font-size','1.3em')
      :css('font-weight','bold')
       :css('color','#333')
      :css('margin','0')
      :wikitext(title)
   end
   end


   if has(date) then
   if has(date) then
     content:tag('div')
     content:tag('div'):addClass('notice-date')
      :addClass('notice-date')
       :css('font-size','0.9em'):css('color','#888'):css('margin','-5px 0')
       :css('font-size','0.9em')
      :css('color','#888')
      :css('margin','-5px 0')
       :wikitext(date)
       :wikitext(date)
   end
   end


   if has(desc) then
   if has(desc) then
     content:tag('p')
     content:tag('p'):addClass('notice-desc')
      :addClass('notice-desc')
       :css('color','#555'):css('line-height','1.3'):css('margin','0')
       :css('color','#555')
      :css('line-height','1.3')
      :css('margin','0')
       :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 '')
      :addClass('notice-icon')
       :css('object-fit','contain'):css('flex-shrink','0')
      :attr('src', icon)
      :attr('alt', title or '')
       :css('object-fit','contain')
      :css('flex-shrink','0')
   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