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

De Wiki Gla
Ir para navegação Ir para pesquisar
Linha 2: Linha 2:


function p.render(frame)
function p.render(frame)
    local parent = frame:getParent()
     local args = frame.args
     local args = parent and parent.args or frame.args


     local imagem = args.imagem or ""
    -- Parâmetros básicos
     local titulo = args.titulo or "Título"
     local imagem     = args.imagem or ""
     local botao = args.botao or "Ler agora"
     local titulo     = args.titulo or "Título"
     local link   = args.link or "#"
     local botao       = args.botao or "Ler agora"
     local link       = args.link or "#"


     -- Cria container
     -- Parâmetros opcionais
    local largura    = args.largura or "216px"
    local altura      = args.altura or "292px"
    local fundoPadrao = args.fundo or "#111"
    local corBotao    = args.corBotao or "#1f8b4c"
    local corTextoBotao = args.corTextoBotao or "#eafff3"
    local fonte      = args.fonte or "Inter,Segoe UI,Roboto,Arial,sans-serif"
 
    -- Monta URL da imagem (se existir)
    local imagemUrl = ""
    if imagem ~= "" then
        local status, fileTitle = pcall(mw.title.makeTitle, "File", imagem)
        if status and fileTitle and fileTitle.exists then
            imagemUrl = fileTitle:fullUrl()
        end
    end
 
    -- Container principal
     local html = mw.html.create("div")
     local html = mw.html.create("div")
         :css("position", "relative")
         :css("position", "relative")
         :css("width", "216px")
         :css("width", largura)
         :css("height", "292px")
         :css("height", altura)
         :css("border-radius", "14px")
         :css("border-radius", "14px")
         :css("overflow", "hidden")
         :css("overflow", "hidden")
         :css("font-family", "Inter,Segoe UI,Roboto,Arial,sans-serif")
         :css("font-family", fonte)
         :css("color", "#fff")
         :css("color", "#fff")
         :css("box-shadow", "0 6px 18px rgba(0,0,0,.35)")
         :css("box-shadow", "0 6px 18px rgba(0,0,0,.35)")
         :css("background", imagem ~= "" and "url(" .. mw.uri.encode(mw.title.makeTitle('File', imagem).fullUrl) .. ") center/cover no-repeat #111" or "#111")
         :css("background", imagemUrl ~= "" and ("url(" .. imagemUrl .. ") center/cover no-repeat " .. fundoPadrao) or fundoPadrao)


     -- Título
     -- Título
Linha 42: Linha 59:
         :css("text-align", "center")
         :css("text-align", "center")
         :css("padding", "10px 12px")
         :css("padding", "10px 12px")
         :css("background", "#1f8b4c")
         :css("background", corBotao)
         :css("color", "#eafff3")
         :css("color", corTextoBotao)
         :css("font-weight", "800")
         :css("font-weight", "800")
         :css("font-size", "14px")
         :css("font-size", "14px")
         :css("text-decoration", "none")
         :css("text-decoration", "none")
         :css("border-radius", "10px")
         :css("border-radius", "10px")
         :node(mw.html.create("span"):wikitext(botao))
         :tag("span")
        :wikitext(botao)


     return tostring(html)
     return tostring(html)

Edição das 04h26min de 27 de agosto de 2025

A documentação para este módulo pode ser criada em Módulo:Gb/doc

local p = {}

function p.render(frame)
    local args = frame.args

    -- Parâmetros básicos
    local imagem      = args.imagem or ""
    local titulo      = args.titulo or "Título"
    local botao       = args.botao or "Ler agora"
    local link        = args.link or "#"

    -- Parâmetros opcionais
    local largura     = args.largura or "216px"
    local altura      = args.altura or "292px"
    local fundoPadrao = args.fundo or "#111"
    local corBotao    = args.corBotao or "#1f8b4c"
    local corTextoBotao = args.corTextoBotao or "#eafff3"
    local fonte       = args.fonte or "Inter,Segoe UI,Roboto,Arial,sans-serif"

    -- Monta URL da imagem (se existir)
    local imagemUrl = ""
    if imagem ~= "" then
        local status, fileTitle = pcall(mw.title.makeTitle, "File", imagem)
        if status and fileTitle and fileTitle.exists then
            imagemUrl = fileTitle:fullUrl()
        end
    end

    -- Container principal
    local html = mw.html.create("div")
        :css("position", "relative")
        :css("width", largura)
        :css("height", altura)
        :css("border-radius", "14px")
        :css("overflow", "hidden")
        :css("font-family", fonte)
        :css("color", "#fff")
        :css("box-shadow", "0 6px 18px rgba(0,0,0,.35)")
        :css("background", imagemUrl ~= "" and ("url(" .. imagemUrl .. ") center/cover no-repeat " .. fundoPadrao) or fundoPadrao)

    -- Título
    html:tag("div")
        :css("position", "absolute")
        :css("left", "12px")
        :css("right", "12px")
        :css("bottom", "70px")
        :css("font-size", "16px")
        :css("font-weight", "800")
        :wikitext(titulo)

    -- Botão
    html:tag("a")
        :attr("href", link)
        :css("position", "absolute")
        :css("left", "12px")
        :css("right", "12px")
        :css("bottom", "14px")
        :css("display", "block")
        :css("text-align", "center")
        :css("padding", "10px 12px")
        :css("background", corBotao)
        :css("color", corTextoBotao)
        :css("font-weight", "800")
        :css("font-size", "14px")
        :css("text-decoration", "none")
        :css("border-radius", "10px")
        :tag("span")
        :wikitext(botao)

    return tostring(html)
end

return p