Mudanças entre as edições de "Módulo:Character"
Ir para navegação
Ir para pesquisar
(Criou página com 'local p = {} local html = mw.html.create function p.generate(frame) local args = frame:getParent().args -- Wrapper principal local container = html('div'):addCla...') |
m |
||
| Linha 1: | Linha 1: | ||
local p = {} | local p = {} | ||
local html = mw.html.create | local html = mw.html.create | ||
local uri = mw.uri | |||
function p.generate(frame) | function p.generate(frame) | ||
| Linha 13: | Linha 14: | ||
:wikitext(args.nome or '') | :wikitext(args.nome or '') | ||
if args.image and args.image ~= '' then | if args.image and args.image ~= '' then | ||
header:tag(' | local imgUrl = uri.fullUrl('Special:FilePath/' .. args.image) | ||
: | header:tag('img') | ||
:addClass('character-image') | |||
:attr('src', imgUrl) | |||
:attr('alt', args.nome or '') | |||
end | end | ||
header:tag('div'):addClass('character-tier') | header:tag('div'):addClass('character-tier') | ||
| Linha 23: | Linha 27: | ||
:wikitext(args.desc or '') | :wikitext(args.desc or '') | ||
-- Abas | -- Abas (usando <div> no lugar de <button>) | ||
local tabs = container:tag('div'):addClass('character-tabs') | local tabs = container:tag('div'):addClass('character-tabs') | ||
tabs:tag(' | tabs:tag('div'):addClass('tab-btn active') | ||
:attr('data-tab','skills') | :attr('data-tab','skills') | ||
:wikitext('Skills') | :wikitext('Skills') | ||
tabs:tag(' | tabs:tag('div'):addClass('tab-btn') | ||
:attr('data-tab','skins') | :attr('data-tab','skins') | ||
:wikitext('Skins') | :wikitext('Skins') | ||
| Linha 49: | Linha 53: | ||
local atr = args['hab'..i..'-atr'] or '' | local atr = args['hab'..i..'-atr'] or '' | ||
local video = args['hab'..i..'-video'] or '' | local video = args['hab'..i..'-video'] or '' | ||
bar:tag('div') | local iconUrl = icon ~= '' and uri.fullUrl('Special:FilePath/' .. icon) or nil | ||
local item = bar:tag('div'):addClass('skill-item') | |||
item:attr('data-name', name) | |||
:attr('data-desc', desc) | |||
:attr('data-atr', atr) | |||
:attr('data-video', video) | |||
if iconUrl then | |||
item:tag('img') | |||
:attr('src', iconUrl) | |||
:attr('alt', name) | |||
:css('width','50px') | |||
:css('height','50px') | |||
else | |||
item:wikitext(name) | |||
end | |||
end | end | ||
end | end | ||
Edição das 19h27min de 8 de agosto de 2025
A documentação para este módulo pode ser criada em Módulo:Character/doc
local p = {}
local html = mw.html.create
local uri = mw.uri
function p.generate(frame)
local args = frame:getParent().args
-- Wrapper principal
local container = html('div'):addClass('character-container')
-- Header
local header = container:tag('div'):addClass('character-header')
header:tag('div'):addClass('character-name')
:wikitext(args.nome or '')
if args.image and args.image ~= '' then
local imgUrl = uri.fullUrl('Special:FilePath/' .. args.image)
header:tag('img')
:addClass('character-image')
:attr('src', imgUrl)
:attr('alt', args.nome or '')
end
header:tag('div'):addClass('character-tier')
:wikitext('Tier: ' .. (args.tier or ''))
header:tag('div'):addClass('character-classes')
:wikitext('Classes: ' .. (args.classe or ''))
header:tag('div'):addClass('character-desc')
:wikitext(args.desc or '')
-- Abas (usando <div> no lugar de <button>)
local tabs = container:tag('div'):addClass('character-tabs')
tabs:tag('div'):addClass('tab-btn active')
:attr('data-tab','skills')
:wikitext('Skills')
tabs:tag('div'):addClass('tab-btn')
:attr('data-tab','skins')
:wikitext('Skins')
-- Aba de Skills
local skillsTab = container:tag('div')
:addClass('tab-content active')
:attr('id','skills')
local wrapper = skillsTab:tag('div')
:addClass('skills-bar-wrapper has-right')
local bar = wrapper:tag('div')
:addClass('skills-bar')
-- Gera até 21 skills
for i = 1, 21 do
local name = args['hab'..i..'-nome']
if name and name ~= '' then
local icon = args['hab'..i..'-icon'] or ''
local desc = args['hab'..i..'-desc'] or ''
local atr = args['hab'..i..'-atr'] or ''
local video = args['hab'..i..'-video'] or ''
local iconUrl = icon ~= '' and uri.fullUrl('Special:FilePath/' .. icon) or nil
local item = bar:tag('div'):addClass('skill-item')
item:attr('data-name', name)
:attr('data-desc', desc)
:attr('data-atr', atr)
:attr('data-video', video)
if iconUrl then
item:tag('img')
:attr('src', iconUrl)
:attr('alt', name)
:css('width','50px')
:css('height','50px')
else
item:wikitext(name)
end
end
end
-- Detalhes (descrição + vídeo)
local details = skillsTab:tag('div')
:addClass('skill-details')
details:tag('div'):addClass('desc-box')
details:tag('div'):addClass('video-box')
-- Aba de Skins (vazia por enquanto)
container:tag('div')
:addClass('tab-content')
:attr('id','skins')
return tostring(container)
end
return p