A documentação para este módulo pode ser criada em Módulo:Design/doc
local p = {}
local h = require("Módulo:HF")
local getArgs = require('Dev:Arguments').getArgs
--------------------------------------------------------------------------------
--[[
function p.get_main_border_color()
return '#B5B7CF'
end
function p.get_main_background_color()
return '#EFF0FF'
end
]]--
--------------------------------------------------------------------------------------------
-- usado em Predefinição:Galeria de Navegação
function p.criar_galeria_de_navegacao(frame)
local args = getArgs(frame)
local lista = args.lista
local tamanho_da_imagem = args.tamanho or '150'
local semimagem = args.semimagem or 'No Image Available.png'
local orientacao = args['orientação'] or 'square' -- nenhum/paisagem/retrato/square
local espacamento = args['espaçamento'] or 'medium' -- pequeno/médio/grande
local corte = args.corte
local imagem
local texto
local link1
local link2
local i
local div = mw.html.create('div'):attr('class', 'navfaces')
local output = ''
if not h.isempty(lista)
then
lista = mw.text.split(lista, '\n')
output = {}
for i = 1, #lista do
if string.find(lista[i], ';') ~= nil
then texto, imagem = string.match(lista[i], '(.+);(.+)')
else
texto = lista[i]
imagem = semimagem
end
link1 = string.match(texto, '%[%[(.-)%]%]')
link2 = string.match(texto, '%[%[(.-)%|.-%]%]')
if link2 ~= nil
then link1 = link2
end
table.insert(output, '\n'..imagem..'|'..texto..'|link='..link1)
end
output = frame:extensionTag{
name = 'gallery',
content = table.concat(output),
args = {
widths = tamanho_da_imagem,
orientation = orientacao,
spacing = espacamento,
position = 'center',
captionalign = 'center',
captionsize = 'large',
navigation = 'true'
}
}
if h.isempty(corte) -- usado para evitar o corte de imagens e focar na parte superior da imagem
then output = tostring( div:wikitext(output) )
end
end
return output
end
--------------------------------------------------------------------------------
-- usado na Predefinição:Link de Poder
function p.link_de_poder(frame)
local args = getArgs (frame)
local link = args[1]
local texto = args[2]
local output_category = ''
local output = ''
if not h.isempty(link)
then
if h.isempty(texto)
then texto = link
end
output = h.LinkToCategory(link, texto)
output_category = h.Category(link)
end
return output..output_category
end
--------------------------------------------------------------------------------
function p.green(text)
local output = ''
if not h.isempty(text)
then
output = mw.html.create( 'span' )
:addClass('green_text')
:wikitext('('..text..')')
:done()
output = tostring(output)
end
return output
end
--------------------------------------------------------------------------------
function p.span(text)
local italic = mw.html.create( 'span' ):css( 'font-style', 'italic' )
local bold = mw.html.create( 'span' ):css( 'font-weight', 'bold' )
local both = mw.html.create( 'span' ):css( 'font-weight', 'bold' ):css( 'font-style', 'italic' )
local output = { italic = '', bold = '', both = '' }
if not h.isempty(text)
then
output = {
italic = tostring(italic:wikitext(text):done()),
bold = tostring(bold:wikitext(text):done()),
both = tostring(both:wikitext(text):done()),
}
end
return output
end
---------------------------------------------------------------------------------------
-- usado em Módulo:Predefinição_de_Volume e Módulo:NomePadronizado para formatar títulos de histórias de edições em quadrinhos
function p.lua_get_titulo_da_historia_da_edicao_de_quadrinho(titulo_da_historia)
local output = ''
local tag = mw.html.create( 'span' )
:css( 'color', 'grey' )
:css( 'font-style', 'italic' )
if not h.isempty(titulo_da_historia)
then
output = '"'..string.gsub(titulo_da_historia, '"', '')..'"'
output = '<br />'..tostring( tag:wikitext(output):done() )
end
return output
end
--------------------------------------------------------------------------------
-- cria caixa de mensagem
function p.messagebox(frame)
local args = getArgs (frame)
local width = args['width'] or '95%'
local textalign = args['text-align'] or 'center'
local fontsize = args['font-size'] or '100%'
local border = args['border']
local background = args['background']
local margin = args['margin'] or '1em'
local clear = args['clear'] or 'none'
local padding = args['padding'] or '5px'
local extrastyle = args['extrastyle'] or ''
local message = args[1] or args['Mensagem'] or args['Message'] or ''
local tag = mw.html.create( 'div' )
:attr( 'id', 'messageBox' )
:attr( 'align', 'center' )
:css( 'width', width )
:css( 'text-align', textalign )
:css( 'font-size', fontsize )
:css( 'border', '1px solid' )
:css( 'border-radius', '10px' )
:css( 'margin', margin )
:css( 'clear', clear )
:css( 'padding', padding )
:wikitext( message )
:done()
if not h.isempty(background)
then tag:css('background-color', background)
else tag:addClass('main_background_color')
end
if not h.isempty(border)
then tag:css('border-color', border)
else tag:addClass('main_border_color')
end
if not h.isempty(extrastyle)
then tag:cssText (extrastyle):done()
end
return tostring(tag)
end
--------------------------------------------------------------------------------
-- cria uma caixa de mensagem com aviso de spoiler
function p.aviso_de_spoiler()
local background = 'rgb(255, 102, 102)'
local border = 'rgb(255, 20, 20)'
local extrastyle = 'color: white; clear: both;'
local header = p.span('Aviso de Spoiler!').bold
local message = '<br>Esta página pode conter spoilers com detalhes do enredo e/ou finais sobre histórias que foram publicadas ou transmitidas recentemente.<br>'
message = message..'Por favor, veja nossa [[Marvel Wiki:Spoilers|política de spoiler]] para nossas regras que regem os artigos sobre tais assuntos.'
return p.messagebox( {Message = header..message, background = background, border = border, extrastyle = extrastyle})
end
--------------------------------------------------------------------------------
-- cria uma tabela com as seções "anterior" e "próxima"
function p.table_previous_and_next(message, link_to_previous, link_to_next)
local td_left = mw.html.create('td')
:css('width', '10%')
:css('max-width', '20%')
:css('text-align', 'left')
local td_right = mw.html.create('td')
:css('width', '10%')
:css('max-width', '20%')
:css('text-align', 'right')
local td_left_arrow = mw.html.create('td')
:css('vertical-align', 'middle')
:css('font-size', '18px')
:css('width', '1%')
:wikitext('←')
local td_right_arrow = mw.html.create('td')
:css('vertical-align', 'middle')
:css('font-size', '18px')
:css('width', '1%')
:wikitext('→')
local td_empty = mw.html.create('td')
:css('width', '11%')
local tr = mw.html.create('tr')
local left = ''
local right = ''
local output = mw.html.create('table')
:css('width', '100%')
if h.isempty(message)
then message = ''
end
message = tostring( mw.html.create('td'):wikitext(message) )
if h.isempty(link_to_previous)
then left = tostring(td_empty)
else left = tostring(td_left_arrow)..tostring(td_left:wikitext(link_to_previous))
end
if h.isempty(link_to_next)
then right = tostring(td_empty)
else right = tostring(td_right:wikitext(link_to_next))..tostring(td_right_arrow)
end
tr = tostring( tr:wikitext(left..message..right) )
output = tostring( output:wikitext(tr) )
return output
end
--------------------------------------------------------------------------------
function p.show_hide(frame)
local args = getArgs (frame)
local title = args['title'] or args['header'] or ' '
local body = args['body'] or args['text'] or ''
local collapsed = args['collapsed']
local clear = args['clear'] or 'both'
local border = args['border']
local extrastyle = args['extrastyle'] or ''
local extrastyle2 = args['extrastyle2'] or ''
local titlestyle = args['titlestyle'] or ''
local width = args['width'] or '100%'
local background = args['background']
local expandtext = args['expandtext'] or 'Expandir'
local collapsetext = args['collapsetext'] or 'Ocultar'
if h.isempty(collapsed) or collapsed == 'true' or collapsed == true
then collapsed = ' mw-collapsed'
else collapsed = ''
end
body = mw.html.create( 'div' )
:addClass('mw-collapsible-content')
:css('background-color', 'transparent')
:wikitext(body)
:done()
body = tostring(body)
title = mw.html.create( 'div' )
:css('font-weight', 'bold')
:wikitext(title)
:done()
if not h.isempty(background)
then title:css('background-color', background)
else title:addClass('main_background_color')
end
if not h.isempty(titlestyle)
then title:cssText (titlestyle):done()
end
title = tostring(title)
body = mw.html.create( 'div' )
:addClass('mw-collapsible'..collapsed)
:attr('data-expandtext', expandtext)
:attr('data-collapsetext', collapsetext)
:css( 'width', width )
:css( 'border', '1px solid' )
:css( 'font-size', '12px' )
:css( 'clear', clear )
:wikitext(title..body)
:done()
if not h.isempty(border)
then body:css('border-color', border)
else body:addClass('main_border_color')
end
if not h.isempty(extrastyle)
then body:cssText (extrastyle):done()
end
return tostring(body)
end
--------------------------------------------------------------------------------
function p.add_cabecalho(text, nivel, align)
local output = ''
nivel = nivel or '2'
align = align or 'left'
if not h.isempty(text)
then output = '\n'..tostring( mw.html.create( 'h'..nivel ):css('text-align', align):addClass('marvel_wiki_cabecalho'):wikitext( text ) )
end
return output
end
--------------------------------------------------------------------------------
function p.lua_add_tooltip(text, tooltip)
local output = mw.html.create('span')
:css('border-bottom', '1px dotted')
:css('cursor', 'help')
:attr('title', tooltip)
:wikitext(text)
return tostring(output)
end
--*******************************************************************************************
-- ************* funções para sites relacionados *************
local lista_de_sites = {
['Marvel'] = {'http://www.marvel.com', 'Marvel.com', 'http://www.marvel.com/characters/'},
['Wikipedia'] = {'Wikipedia', 'Wikipedia.org'},
['IMDB'] = {'http://www.imdb.com', 'IMDB.com', 'http://www.imdb.com/title/tt'},
['AM'] = {'http://www.allmovie.com', 'AllMovie.com', 'http://www.allmovie.com/movie/'},
['UCM'] = {'w:c:pt-br.marvelcinematicuniverse', 'Wiki Universo Cinematográfico Marvel'}, -- https://marvelcinematicuniverse.fandom.com/pt-br/
['MM'] = {'w:c:marvel-movies', 'Marvel Movies wiki'}, -- https://marvel-movies.fandom.com/wiki/
['SMF'] = {'w:c:spiderman-films', 'Spider-Man Films wiki'}, -- https://spiderman-films.fandom.com/wiki/
['XM'] = {'w:c:xmenmovies', 'X-Men Movies wiki'}, -- https://xmenmovies.fandom.com/wiki/
}
--------------------------------------------------------------------------------
-- usado em Marvel Wiki:Predefinição de Filme
function p.get_etiqueta_de_site_relacionado(frame)
local args = getArgs(frame)
local site = args[1]
local info = lista_de_sites[site]
if h.in_list({'IMDB', 'AM', 'Marvel'}, site)
then output = 'em ['..info[1]..' '..info[2]..']'
elseif site == 'Wikipedia'
then output = 'em '..h.Link(info[1]..':', info[2])
else output = 'em '..h.Link(info[1], info[2])
end
return output
end
--------------------------------------------------------------------------------
-- usado em Marvel Wiki:Predefinição de Filme
function p.get_link_de_site_relacionado(frame)
local args = getArgs(frame)
local site = args[1]
local link = args[2]
local text = args[3]
local info = lista_de_sites[site]
local output = ''
if not h.isempty(link)
then
if h.isempty(text)
then text = link
end
if h.in_list({'IMDB', 'AM', 'Marvel'}, site)
then output = '['..info[3]..link..' '..text..']'
else output = h.Link(info[1]..':'..link, text)
end
end
return output
end
--*******************************************************************************************
-- ************* funções para predefinições INFOBOX (a maioria delas são chamadas de 'Marvel Database:predefinições de __', como 'Marvel Wiki:Predefinição de Personagem') *************
--------------------------------------------------------------------------------
-- coloca o texto em div recolhível - para campos com muito texto
function p.add_infobox_row_collapsible(frame)
local args = getArgs (frame)
local value = args[1]
local i
local j
local output = ''
if not h.isempty(value)
then
i, j = string.find(string.lower(value), '; anteriormente ')
if #value > 500
then
output = p.show_hide( {
title = '',
body = value,
collapsed = 'true',
extrastyle = 'border: none;',
} )
elseif i ~= nil
then output = string.sub(value, 1, i-1) .. '<br>' .. p.show_hide( { title = 'Anteriormente', body = string.sub(value, j+1, #value) } )
else
output = value
end
end
return output
end
--------------------------------------------------------------------------------
function p.add_titulo_da_pagina_da_infobox(frame)
local padrao = require("Módulo:NomePadronizado")
local pagename = mw.title.getCurrentTitle().text
local classificarnome = ''
local args = getArgs (frame)
local tipo_de_pagina = args.tipo_de_pagina
local titulo = args.Titulo or args['Título'] or args['TítuloDoEpisódio']
local identidade = args.IdentidadeAtual
local nome = args.Nome
local imagem = args.Imagem
local semimagem = args.SemImagem
local info
local output_categories = {}
local output = ''
if not h.isempty(titulo)
then output = titulo
elseif not h.isempty(identidade)
then output = identidade
elseif not h.isempty(nome)
then output = nome
else output = string.gsub(pagename, ' %(.+%)', '')
end
if not h.is_link(output) and h.exists(output)
then output = h.Link(output)
end
if not h.is_link(output) and h.exists(output)
then output = h.Link(output)
end
if tipo_de_pagina == 'Episódio'
then output = '"'..string.gsub(output, '"', '')..'"'
end
-- adicionar nome de classificação padrão
if tipo_de_pagina == 'Realidade'
then
table.insert(output_categories, 'Realidades')
classificarnome = '{{DEFAULTSORT:'..require("Módulo:Realidade").get_realidade_info({pagename}).padded_numero..'|noerror}}'
elseif tipo_de_pagina == 'Personagem'
then
table.insert(output_categories, 'Personagens')
classificarnome = '{{DEFAULTSORT:'..padrao.nome_para_classificacao({pagename})..'|noerror}}'
elseif tipo_de_pagina == 'Organização'
then
table.insert(output_categories, 'Organizações')
classificarnome = '{{DEFAULTSORT:'..padrao.nome_para_classificacao({pagename})..'|noerror}}'
elseif tipo_de_pagina == 'Local'
then
table.insert(output_categories, 'Locais')
classificarnome = '{{DEFAULTSORT:'..padrao.nome_para_classificacao({pagename})..'|noerror}}'
elseif tipo_de_pagina == 'Item'
then
table.insert(output_categories, 'Itens')
classificarnome = '{{DEFAULTSORT:'..padrao.nome_para_classificacao({pagename})..'|noerror}}'
elseif tipo_de_pagina == 'Série'
then
classificarnome = '{{DEFAULTSORT:'..padrao.lua_remove_the(pagename)..'|noerror}}'
elseif h.in_list({'Filme', 'Novel', 'Vídeo Game'}, tipo_de_pagina)
then
table.insert(output_categories, tipo_de_pagina..'s')
classificarnome = '{{DEFAULTSORT:'..padrao.lua_remove_the(pagename)..'|noerror}}'
elseif h.in_list({'Episódio', 'Quadrinho'}, tipo_de_pagina)
then
if tipo_de_pagina == 'Episódio'
then info = padrao.lua_get_titulo_volume_edicao(pagename, 'Temporada')
else info = padrao.lua_get_titulo_volume_edicao(pagename, 'Vol')
end
if not h.isempty(info.titulo)
then classificarnome = info.classificarnome.all
else classificarnome = padrao.lua_remove_the(pagename)
end
classificarnome = '{{DEFAULTSORT:'..classificarnome..'|noerror}}__NOTOC__'
table.insert(output_categories, tipo_de_pagina..'s')
table.insert(output_categories, info.semedicao)
elseif tipo_de_pagina == 'Funcionário'
then
table.insert(output_categories, 'Funcionários da Marvel')
sortname = '{{DEFAULTSORT:'..pagename..'|noerror}}'
else
table.insert(output_categories, tipo_de_pagina..'s')
classificarnome = '{{DEFAULTSORT:'..padrao.nome_para_classificacao({pagename})..'|noerror}}'
end
-- adicionar categorias para a imagem principal
if not h.isempty(imagem)
then
imagem = string.gsub(imagem, 'Arquivo:', '')
if not h.exists('Arquivo:'..imagem) -- O campo 'Imagem' está preenchido, mas tal imagem não existe no wiki
then table.insert(output_categories, 'Correção da Imagem de '..tipo_de_pagina..' Necessária')
end
if h.in_list({'Nenhuma.jpg', 'Necessária.png'}, imagem)
then table.insert(output_categories, 'Imagem de '..tipo_de_pagina..' Necessária')
end
elseif not h.isempty(semimagem) and string.lower(semimagem) == 'sim'
then table.insert(output_categories, h.get_tipo_de_pagina_no_plural(tipo_de_pagina)..' invisíveis' )
else table.insert(output_categories, 'Imagem de '..tipo_de_pagina..' Necessária')
end
return frame:preprocess(output..classificarnome)..h.add_categories(output_categories)
end
--------------------------------------------------------------------------------
function p.add_infobox_galeria(frame)
local pagename = mw.title.getCurrentTitle().text
local args = getArgs (frame)
local tipo_de_pagina = args.tipo_de_pagina
local semimagem = args.SemImagem
local imagem = args.Imagem
local imagem_texto = args.ImagemTexto or args.TextoDaImagem
local output_categories = {}
local output = ''
if tipo_de_pagina ~= 'Funcionário'
then
if h.exists(pagename..'/Galeria')
then output = h.Link(pagename..'/Galeria', 'Galeria')
elseif h.isempty(semimagem) and tipo_de_pagina ~= 'Usuário'
then
output = h.Link(pagename..'/Galeria', 'Galeria')
table.insert(output_categories, 'Página da Galeria de '..tipo_de_pagina..' Necessária')
end
elseif not h.isempty(imagem_texto)
then output = tostring(imagem_texto)
end
return output..h.add_categories(output_categories)
end
-------------------------------------------------------------------------------
function p.add_infobox_nome_oficial(frame)
local args = getArgs (frame)
--local tipo_de_pagina = args.tipo_de_pagina
local nome = args.Nome
local nome2 = args.Nome2
local ref = args.NomeRef
local output = ''
if not h.isempty(args.Nome)
then
nome = args.Nome
nome2 = args.Nome2
ref = args.NomeRef
elseif not h.isempty(args.NomeOficial)
then
nome = args.NomeOficial
nome2 = args.NomeOficial2
ref = args.NomeOficialRef
elseif not h.isempty(args.NomeReal)
then
nome = args.NomeReal
nome2 = args.NomeReal2
ref = args.NomeRealRef
end
if h.isempty(nome)
then output = 'Desconhecido'
else
output = nome
if not h.is_link(output) and h.exists(output)
then output = h.Link(output)
end
end
if not h.isempty(nome2)
then output = output..' '..nome2
end
if not h.isempty(ref)
then output = output..ref
end
return output
end
function p.get_nome_original(frame)
local args = getArgs (frame)
local value = args.NomeOriginal
return value
end
--------------------------------------------------------------------------------
function p.add_infobox_primeira_aparicao(frame)
local padrao = require("Módulo:NomePadronizado")
local args = getArgs(frame)
local tipo_de_pagina = args.tipo_de_pagina
local value = args.Primeira
local value2 = args.Primeira2
local no_wiki_value
local estreia
local output_categories = {}
local output = {}
if not h.isempty(value)
then
no_wiki_value = mw.text.nowiki(value)
if mw.ustring.find(no_wiki_value, '[[', 1, true) ~= nil
then
estreia = string.match(no_wiki_value, '(%d%d%d%d)]]%)') or string.match(no_wiki_value, '(%d%d%d%d)%)')
output = value
else
output, estreia = padrao.lua_get_link_e_data_de_lancamento(value)
if not h.isempty(estreia)
then estreia = string.match(estreia, '(%d%d%d%d)')
end
end
if not h.isempty(estreia)
then
if not h.isempty(tipo_de_pagina)
then table.insert(output_categories, 'Estreias de '..tipo_de_pagina..' em '..estreia)
else table.insert(output_categories, 'Estreias em '..estreia)
end
end
elseif h.isempty(value2)
then
if not h.isempty(tipo_de_pagina)
then value = 'Primeira Aparição de '..tipo_de_pagina..' Necessária'
else value = 'Primeira Aparição Necessária'
end
table.insert(output_categories, value)
output = h.LinkToCategory(value, 'Desconhecida')
end
if not h.isempty(value2)
then output = output..value2
end
return output..h.add_categories(output_categories)
end
--------------------------------------------------------------------------------
function p.add_infobox_primeira_aparicao_no_brasil(frame)
local padrao = require("Módulo:NomePadronizado")
local args = getArgs(frame)
local tipo_de_pagina = args.tipo_de_pagina
local value = args.PrimeiraBR
local value2 = args.PrimeiraBR2
local no_wiki_value
local estreia
local output_categories = {}
local output = {}
if not h.isempty(value)
then
no_wiki_value = mw.text.nowiki(value)
if mw.ustring.find(no_wiki_value, '[[', 1, true) ~= nil
then
estreia = string.match(no_wiki_value, '(%d%d%d%d)]]%)') or string.match(no_wiki_value, '(%d%d%d%d)%)')
output = value
else
output, estreia = padrao.lua_get_link_e_data_de_lancamento(value)
if not h.isempty(estreia)
then estreia = string.match(estreia, '(%d%d%d%d)')
end
end
if not h.isempty(estreia)
then
if not h.isempty(tipo_de_pagina)
--then table.insert(output_categories, 'Estreias de '..tipo_de_pagina..' em '..estreia)
then table.insert(output_categories, 'Estreias em '..estreia)
end
end
elseif h.isempty(value2)
then
table.insert(output_categories, value)
output = 'Inédita'
end
if not h.isempty(value2)
then output = output..value2
end
return output..h.add_categories(output_categories)
end
--------------------------------------------------------------------------------
function p.add_infobox_ultima_aparicao(frame)
local padrao = require("Módulo:NomePadronizado")
local args = getArgs(frame)
local ultima_aparicao
local ultima_aparicao2
local cabecalho_ultima
local output = ''
if not h.isempty(args.Morte) or not h.isempty(args.Morte2)
then -- para 'Predefinição de Personagem'
ultima_aparicao = args.Morte
ultima_aparicao2 = args.Morte2
elseif not h.isempty(args['Destruição']) or not h.isempty(args['Destruição2'])
then -- para 'Predefinição de Item', 'Predefinição de Veículo', 'Predefinição de Local', 'Predefinição de Realidade'
ultima_aparicao = args['Destruição']
ultima_aparicao2 = args['Destruição2']
else -- para 'Predefinição de Equipe', 'Predefinição de Organização', 'Predefinição de Raça'
ultima_aparicao = args['Última']
ultima_aparicao2 = args['Última2']
end
if not h.isempty(ultima_aparicao)
then
if mw.ustring.find(mw.text.nowiki(ultima_aparicao), '[[', 1, true) ~= nil
then output = ultima_aparicao
else output = padrao.lua_get_link_e_data_de_lancamento(ultima_aparicao)
end
end
if not h.isempty(ultima_aparicao2)
then output = output..ultima_aparicao2
end
return output
end
--------------------------------------------------------------------------------
function p.add_infobox_ultima_aparicao_no_brasil(frame)
local padrao = require("Módulo:NomePadronizado")
local args = getArgs(frame)
local ultima_aparicaoBR
local ultima_aparicaoBR2
local cabecalho_ultima
local output = ''
if not h.isempty(args.MorteBR) or not h.isempty(args.MorteBR2)
then
cabecalho_ultima = 'Morte no Brasil'
ultima_aparicaoBR = args.MorteBR
ultima_aparicaoBR2 = args.MorteBR2
elseif not h.isempty(args['DestruiçãoBR']) or not h.isempty(args['DestruiçãoBR2'])
then
cabecalho_ultima = 'Destruição'
ultima_aparicaoBR = args['DestruiçãoBR']
ultima_aparicaoBR2 = args['DestruiçãoBR2']
else
cabecalho_ultima = 'Última no Brasil'
ultima_aparicaoBR = args['ÚltimaBR']
ultima_aparicaoBR2 = args['ÚltimaBR2']
end
if not h.isempty(args[1])
then output = cabecalho_ultima
else
if not h.isempty(ultima_aparicaoBR)
then output = padrao.lua_get_link_e_data_de_lancamento(ultima_aparicaoBR)
else output = ''
end
if not h.isempty(ultima_aparicaoBR2)
then output = output..ultima_aparicaoBR2
end
end
return output
end
--------------------------------------------------------------------------------
function p.add_infobox_criadores(frame)
local SC = require("Módulo:Correção de Funcionários")
local args = getArgs(frame)
local tipo_de_pagina = args.tipo_de_pagina
local criadores = args.Criadores
local criadores2 = args.Criadores2
local output_categories = {}
local output = ''
if not h.isempty(criadores)
then output, output_categories = SC.lua_get_criadores(criadores)
elseif not h.isempty(criadores2)
then output = output..criadores2
else table.insert(output_categories, 'Criadores de '..tipo_de_pagina..' Necessários')
end
return output..h.add_categories(output_categories)
end
--------------------------------------------------------------------------------------------------
function p.add_infobox_identidade(frame)
local args = getArgs (frame)
local tipo_de_pagina = args.tipo_de_pagina
local value = args.Identidade
local category = ''
if tipo_de_pagina == 'Organização'
then
category = 'Organizações com Identidade '..value
end
if not h.isempty(value)
then
category = tipo_de_pagina..'s com Identidade '..value
value = h.LinkToCategory(category, value)
category = h.Category(category)
else value = ''
end
if not h.isempty(args.Identidade2)
then value = value..' '..args.Identidade2
end
return value..category
end
--------------------------------------------------------------------------------------------------
function p.add_infobox_status(frame)
local args = getArgs (frame)
local value = args.Status or args['Estado']
local tipo_de_pagina = h.get_tipo_de_pagina_no_plural(args.tipo_de_pagina)
local output_category = h.Category(tipo_de_pagina..' '..value..'s')
local output = h.LinkToCategory(tipo_de_pagina..' '..value..'s', value)
return output..output_category
end
--------------------------------------------------------------------------------------------------
function p.add_infobox_cabecalho_do_grupo_de_membros(frame)
local pagename = mw.title.getCurrentTitle().text
local category = pagename..'/Membros'
local n = h.pages_in_category(category, 'pages')
local output = 'Membros'
if n > 0
then output = h.LinkToCategory(category, output)
end
return output
end
--------------------------------------------------------------------------------
function p.add_infobox_realidade(frame)
local modulo_realidade = require("Módulo:Realidade")
local args = getArgs (frame)
local tipo_de_pagina = args.tipo_de_pagina
local pagename = mw.title.getCurrentTitle().text
local i
local realidade1 = args.Universo or args.Realidade
local realidade2 = args.Universo2 or args.Realidade2
local value
local category
local output_categories = {}
local output = {}
if h.isempty(realidade1) and h.isempty(realidade2)
then
if h.in_list({'/Personagens', '/Equipes', '/Organizações'}, tipo_de_pagina)
then table.insert(output_categories, 'Realidade não especificada')
end
if string.find(pagename, '(', 1, true) ~= nil
then
_, realidade1 = modulo_realidade.lua_get_nome_e_realidade(pagename)
realidade1 = realidade1.nome
end
end
if not h.isempty(realidade1)
then
if string.find(realidade1, ';') ~= nil
then
realidade1 = mw.text.split(realidade1, ';')
for i = 1, #realidade1 do
value = realidade1[i]
value = modulo_realidade.get_realidade_info({value, 1})
if value ~= nil
then
table.insert(output, h.Link(value))
table.insert(output_categories, value..tipo_de_pagina)
end
end
else
value = modulo_realidade.get_realidade_info({realidade1, 1})
if value ~= nil
then
table.insert(output, h.Link(value))
table.insert(output_categories, value..tipo_de_pagina)
end
end
end
if not h.isempty(realidade2)
then
value = modulo_realidade.get_realidade_info({realidade2, 1})
if value ~= nil
then
table.insert(output, h.Link(value))
table.insert(output_categories, value..tipo_de_pagina)
else
table.insert(output, realidade2)
end
end
output = mw.text.listToText(output, ', ', ', ')
return output..h.add_categories(output_categories)
end
--------------------------------------------------------------------------------
function p.add_visaogeral_e_toc(visaogeral)
local output = '__TOC__'
if not h.isempty(visaogeral)
then output = '\n'..visaogeral..'<br>'..output
end
return output
end
--------------------------------------------------------------------------------
function p.add_citacao(args, orador_necessario, fonte_necessaria)
local output_categories = {}
local output = ''
if not h.isempty(args['Citação'])
then output, output_categories = require("Módulo:Citação").principal(args['Citação'], args.Orador or args.PersonagemCitado, args['FonteDaCitação'] or args['FonteCitação'], orador_necessario, fonte_necessaria)
end
if not h.isempty(args['BlocoDeCitação'])
then
output = args['BlocoDeCitação']
table.insert(output_categories, 'BlocoDeCitações')
end
return output, output_categories
end
--------------------------------------------------------------------------------
-- usado para adicionar seções como "Notas", "Curiosidades", etc.
function p.add_secao(cabecalho, secao, nivel_do_cabecalho)
local output = ''
nivel_do_cabecalho = nivel_do_cabecalho or 2
if not h.isempty(secao)
then
secao = tostring( mw.html.create('div'):addClass('marvel_wiki_secao'):wikitext( '\n'..secao ) )
output = p.add_cabecalho(cabecalho, nivel_do_cabecalho)..secao
end
return output
end
--------------------------------------------------------------------------------
function p.add_secao_historia(args, tipo_de_pagina)
local value = args['História']
local value2 = args.TextoDaHistoria or args['TextoDaHistória'] or args['TextoHistória']
local category = ''
local output = ''
if h.isempty(value) and h.isempty(value2)
then category = 'História de '..tipo_de_pagina..' Necessária'
elseif not h.isempty(value)
then output = p.add_secao('História', value, 2)
elseif not h.isempty(value2)
then output = p.add_secao('História', value2, 2)
end
return output, category
end
--------------------------------------------------------------------------------
-- uma função para adicionar 'Citação', seção 'Visão geral', 'Índice' e seção 'História' ao mesmo tempo
function p.add_citacao_visaogeral_toc_historia(args, tipo_de_pagina)
local value
local categories = {}
local output_categories = {}
local output = {}
value, categories = p.add_citacao(args)
output_categories = h.join_tables(output_categories, categories)
table.insert(output, value)
table.insert( output, p.add_visaogeral_e_toc(args['VisãoGeral'] or args['Geral']) )
value, categories = p.add_secao_historia(args, tipo_de_pagina)
output_categories = h.join_tables(output_categories, categories)
table.insert(output, value)
return output, output_categories
end
--------------------------------------------------------------------------------
-- uma função para adicionar as seções 'Notas', 'Curiosidades', 'Veja também', 'Leitura recomendada' e 'Links e referências' ao mesmo tempo
function p.add_notas_curiosidades_veja_tambem_recomendado_links_referencias(args, tipo_de_pagina, pagename)
local value
local categories = {}
local output_categories = {}
local output = {}
table.insert( output, p.add_secao('Notas', args.Notas, 2) )
table.insert( output, p.add_secao('Curiosidades', args.Curiosidades, 2) )
table.insert( output, p.add_cabecalho('Veja também', 2) )
--adicionar links para subpáginas/categorias padrão - "Aparições", "Aparições Menores", "Menções", "Imagens", "Citações" e "Galeria"
value, categories = p.add_links_para_subpaginas_padrao(pagename, tipo_de_pagina)
output_categories = h.join_tables(output_categories, categories)
output = h.join_tables(output, value)
table.insert( output, p.add_secao('Leitura recomendada', args.Recomendado, 2) )
table.insert( output, p.add_links_e_referencias(args, pagename) )
return output, output_categories
end
--------------------------------------------------------------------------------
-- usado para adicionar links para subpáginas/categorias padrão - "Aparições", "Aparições", "Menções", "Imagens", "Citações" e "Galeria"
function p.add_links_para_subpaginas_padrao(pagename, tipo_de_pagina)
local lista_para_realidade = {'Personagens', 'Equipes', 'Organizações', 'Locais', 'Itens', 'Veículos', 'Raças'}
local s = ''
local value
local category
local output_categories = {}
local output = {}
value, categories = p.links_para_subcategorias(pagename..'/Aparições', 'pages', pagename, ' aparição(ões) de ', 'Categoria de Aparições de '..tipo_de_pagina..' Necessária')
output_categories = h.join_tables(output_categories, categories)
table.insert(output, value)
value, categories = p.links_para_subcategorias(pagename..'/Aparições em Manual', 'pages', pagename, ' aparição(ões) em manual(is) de ', 'Categoria de Aparições de '..tipo_de_pagina..' Necessária')
output_categories = h.join_tables(output_categories, categories)
table.insert(output, value)
value, categories = p.links_para_subcategorias(pagename..'/Aparições Menores', 'pages', pagename, ' aparição(ões) menor(es) de ', 'Categoria de Aparições Menores de '..tipo_de_pagina..' Necessária')
output_categories = h.join_tables(output_categories, categories)
table.insert(output, value)
value, categories = p.links_para_subcategorias(pagename..'/Menções', 'pages', pagename, ' menção(ões) de ', 'Categoria de Menções de '..tipo_de_pagina..' Necessária')
output_categories = h.join_tables(output_categories, categories)
table.insert(output, value)
if h.in_list({'Filme', 'Série', 'Episódio', 'Vídeo Game', 'Jogo de tabuleiro', 'Novel'}, tipo_de_pagina)
then value, categories = p.links_para_subcategorias(pagename..'/Imagens', 'files', pagename, ' imagem(ns) de ', 'Categoria de Imagens de '..tipo_de_pagina..' Necessária')
else value, categories = p.links_para_subcategorias(pagename..'/Imagens', 'files', pagename, ' imagem(ns) de ', 'Categoria de Imagens de '..tipo_de_pagina..' Necessária')
end
output_categories = h.join_tables(output_categories, categories)
table.insert(output, value)
value, categories = p.links_para_subcategorias(pagename..'/Citações', 'pages', pagename, ' citação(ões) por ou sobre ', 'Categoria de Citações Necessária')
output_categories = h.join_tables(output_categories, categories)
table.insert(output, value)
value, categories = p.links_para_subcategorias('Morto por '..pagename, 'pages', pagename, ' vítima(s) morta(s) por ', 'Categoria de Morto Por Necessária')
output_categories = h.join_tables(output_categories, categories)
table.insert(output, value)
if tipo_de_pagina == 'Equipe' or tipo_de_pagina == 'Organização'
then
value, categories = p.links_para_subcategorias(pagename..'/Membros', 'pages', pagename, ' membro(s) do(a)(s) ', 'Categoria de Membros Necessária')
output_categories = h.join_tables(output_categories, categories)
table.insert(output, value)
end
if tipo_de_pagina == 'Raça'
then
value, categories = p.links_para_subcategorias(string.gsub(pagename, '%(Raça%)', ''), 'pages', pagename, ' representante(s) de ', 'Categoria de Raça Necessária')
output_categories = h.join_tables(output_categories, categories)
table.insert(output, value)
end
if tipo_de_pagina == 'Local'
then
value, categories = p.links_para_subcategorias(pagename, 'pages', pagename, ' artigo(s) relacionado(s) a(o)(s) ', 'Categoria de Local Necessária')
output_categories = h.join_tables(output_categories, categories)
table.insert(output, value)
end
if tipo_de_pagina ~= 'Realidade'
then
value, categories = p.links_para_subcategorias(pagename..'/Itens', 'pages', pagename, ' item(ns) usado(s)/pertencente(s) a(o)(s) ', 'Categoria de Itens Necessária')
output_categories = h.join_tables(output_categories, categories)
table.insert(output, value)
else
for i = 1, #lista_para_realidade do
s = ' '..string.lower(lista_para_realidade[i])
value, categories = p.links_para_subcategorias(pagename..'/'..lista_para_realidade[i], 'pages', pagename, s..' que se originaram da(o) ', 'Categoria de '..lista_para_realidade[i]..' Necessária')
output_categories = h.join_tables(output_categories, categories)
table.insert(output, value)
end
end
return output, output_categories
end
function p.links_para_subcategorias(category, tipos_de_pagina, pagename, text, needed)
local n = h.pages_in_category(category, tipos_de_pagina)
local output_category = ''
local output = ''
if n > 0
then
output = '\n* '..h.LinkToCategory(category, n..text..pagename)
if not h.exists('Categoria:'..category)
then output_category = needed
end
end
return output, output_category
end
--------------------------------------------------------------------------------
function p.add_links_e_referencias(args, pagename)
local modulo_realidade = require("Módulo:Realidade")
local nome_sem_realidade = modulo_realidade.lua_get_nome_e_realidade(pagename)
local lista_de_links1 = {"Marvel", "Wikipedia", "IMDB ID", "AM ID", "MCU", "Marvel Movies", "X-Men Movies", "Spider-Man Films"}
local lista_de_links2 = {"Marvel", "Wikipedia", "IMDB", "AM", "MCU", "MM", "XM", "SMF"}
local i
local value
local output = {}
table.insert(output, p.add_cabecalho('Links e referências', 2) )
for i = 1, #lista_de_links1 do
value = lista_de_links1[i]
if not h.isempty(args[value])
then
value = p.get_link_de_site_relacionado({lista_de_links2[i], args[value], nome_sem_realidade})..' '..p.get_etiqueta_de_site_relacionado({lista_de_links2[i]})
table.insert(output, '\n*'..value)
end
end
value = args.WebsiteOficial
if not h.isempty(value)
then
--value = '<span class="plainlinks">['..value..' Official website of '..pagename..']</span>'
table.insert(output, '\n'..value)
end
value = args.Links
if not h.isempty(value)
then table.insert(output, '\n'..value)
end
table.insert(output, p.add_lista_de_referencias() )
table.insert(output, p.add_link_para_twitter())
return table.concat(output)
end
--------------------------------------------------------------------------------
function p.add_lista_de_referencias()
local output = mw.html.create('div')
:css('overflow', 'auto')
:css('height', 'auto')
:css('max-height', '250px')
:css('width', '99%')
:css('font-size', '12px')
:css('border', '1px solid #AAAAAA')
:wikitext('<references group="note" /><references />')
return p.add_cabecalho('Referências', 3)..'\n'..tostring(output)
end
--------------------------------------------------------------------------------
function p.add_link_para_twitter()
local output = tostring( mw.html.create('span'):attr('id', 'twitter-button') )
output = mw.html.create('div')
:css('width', '99%')
:css('padding', '5px')
:css('text-align', 'center')
:css('font-weight', 'bold')
:css('border-top', '1px solid #AAAAAA')
:css('border-bottom', '1px solid #AAAAAA')
:wikitext('Como isso? Nos informe! '..output)
return tostring(output)
end
--------------------------------------------------------------------------------
function p.adicionar_mensagem_para_artigos_trn(frame)
local pagename = mw.title.getCurrentTitle().text
local link_para_trn = h.Link('Lista de Números de Realidade Temporários Atuais', 'esta página')
local trn = string.match(pagename, '.?(Terra%-TRN%d+).?')
local texto_de_ajuda = ''
local output = ''
if trn ~= nil
then
texto_de_ajuda = mw.html.create('span'):addClass('messagebox__ajuda'):wikitext('(Para obter mais informações sobre TRNs, acesse '..link_para_trn..').')
output = 'A "' .. trn .. '" usado nesta página é um Número de Realidade Temporário ' .. p.span('não oficial').bold .. ' que foi atribuído pelo nosso wiki até que uma designação oficial seja fornecida pela Marvel.<br>'
output = p.messagebox( {Message = output..tostring(texto_de_ajuda)})
end
return output
end
return p