Módulo:Info: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
Dbastro (discussão | contribs)
m link para ver modelos simples
modificações relacionadas com imagens e legendas e outras pequenas atualizações
Linha 1:
m = {}
 
local cores = { -- tons das linhas: {'escuro', 'mediano', 'claro', 'bem claro'}
local cores = {
{'#B60000', '#FFAFAF', '#FFD7D7', '#FFEBEB'}, -- vermelho
{'#B00058', '#FFABD5', '#FFD5EA', '#FFEAF5'}, -- bordô
{'#840084', '#FFA4FF', '#FFD2FF', '#FFE9FF'}, -- púrpura
{'#5800B1', '#DAB5FF', '#EDDAFF', '#F6EDFF'}, -- roxo
{'#2020C9', '#BFBFFF', '#DFDFFF', '#EFEFFF'}, -- azul
{'#0057AF', '#93C9FF', '#C9E4FF', '#E4F2FF'}, -- azul~ciano
{'#00626F', '#11E4FF', '#88F2FF', '#C4F9FF'}, -- ciano
{'#00654E', '#27FFCF', '#93FFE7', '#C9FFF3'}, -- verde~ciano
{'#006800', '#7BFF7B', '#BDFFBD', '#DEFFDE'}, -- azulverde
{'#4A6000', '#CFFF27', '#E7FF93', '#F3FFC9'}, -- verde~amarelo
{'#655900', '#FFE411', '#FFF288', '#FFF9C4'}, -- amarelo
{'#8C4600', '#FFB56B', '#FFDAB5', '#FFEDDA'}, -- laranja
{'#FFFFC0', '#FFFFC0', '', ''}, -- amarelo não padrão (temporário)
{'#E8E8E8', '#E8E8E8', '', ''}, -- cinza claro não padrão (temporário)
{'#585858', '#C7C7C7', '#E3E3E3', '#F1F1F1'} -- cinza
}
 
-- Função para montar a infobox depois que os parâmetros foram pré-processados
montarinfo = function()
partes = {}
Linha 48 ⟶ 49:
end
end
-- ImagemCampos --
local imagensc = {}
for i_, ncampo in ipairs({'', '2', '3'}campos) do
if paramscampo['imagemtópico' .. n] then -- TODO: verificar a necessidade de uma opção para ocultar
table.insert(c, '|-\n|colspan=2 style="text-align:center; font-weight:bold;' .. cor2 .. '"|' .. campo['tópico'])
local dominio, img = string.match(params['imagem' .. n], '^%[%[(%w+):([^%]%|%.\n]+%.%w%w%w%w?)[%]%|]')
elseif campo['rótulo'] and campo['rótulo'] == '#imagem' and campo[1] then
local dominio, img = string.match(paramscampo['imagem' .. n1], '^%[%[(%w+):([^%]%|%.\n]+%.%w%w%w%w?)[%]%|]')
if dominio then
for _, d in pairs({'Ficheiro', 'Imagem', 'File', 'Image', 'ficheiro', 'imagem', 'file', 'image'}) do
Linha 62 ⟶ 65:
if dominio then img = nil end
else
img = paramscampo['imagem' .. n1]
end
if img then
imagens[i] =table.insert(c, '|-\n|colspan=2 style="text-align: center"|[[Ficheiro:' .. img .. '|200px]]')
end
end
end
if imagens then
partes['imagem'] = table.concat(imagens, '\n')
end
-- Campos --
local c = {}
for _, campo in ipairs(campos) do
if campo['tópico'] then -- TODO: verificar a necessidade de uma opção para ocultar
table.insert(c, '|-\n|colspan=2 style="text-align:center; font-weight:bold;' .. cor2 .. '"|' .. campo['tópico'])
elseif campo['rótulo'] and campo[1] then
table.insert(c, '|-\n|scope="row" ' .. 'style="vertical-align:top; text-align:left; font-weight:bold;' .. cor3 .. '"|' .. campo['rótulo'] ..
'\n|' .. (campo['wikidata'] and 'class="dadoswd" ' or '') .. 'style="vertical-align:top; text-align:left; font-weight:bold;"|' .. campo[1])
elseif campo[1] then
table.insert(c, '|-\n|colspan=2 ' .. (campo['wikidata'] and 'class="dadoswd" ' or '') ..
Linha 92 ⟶ 85:
partes['rodapé'] = '|-\n|colspan=2|<pre>' .. (debug or '(debug vazio)') .. '</pre>'
end
-- ver · editar --
if string.match(nomebase, '^Predefinição:') then
partes['ver-editar'] = '|-\n|colspan=2 class="plainlinks" style="text-align:right"|[[' ..
Linha 128 ⟶ 120:
num = ncamposwd == 0 and 'nenhum campo' or ncamposwd == 1 and '1 campo' or ncamposwd <= 10 and
tostring(ncamposwd) .. ' campos' or 'mais de 10 campos'
partes['catcampos'] = partes['catcampos'] .. '[[Categoria:!Infoboxes com ' .. num .. ' do Wikidata]]'
end
end
 
-- Montar a partes --
local template = [=[{|style="font-size: 90%; line-height: 1.1em2em; float:right; clear:right; margin:0 0 .5em 1em; width: 20em; border: 1px solid #C7C7C7; padding: 2px; background-color: #FAFAFA"
{ cabeçalho }
|-
!colspan=2 style="height:45px; vertical-align:middle; text-align:center; font-size:120%; font-weight:bolder; line-height:1.3em; position:relative;{ cor }"|{ pictograma }{ título }
{ subtítulo }
{ imagem }
{ campos }
{ rodapé }
Linha 159 ⟶ 150:
nomebase = frame:getParent():getTitle()
params = {}
-- Para ordenar as chaves de uma tabela em Lua é necessário separar a tabela em duas:
local camposn = {}
local camposvcamposn = {} -- tabela para guardar os números dos campos
local camposv = {} -- tabela para guardar os valores dos campos
for k, v in pairs(frame.args) do
if v == '' then
Linha 214 ⟶ 206:
local i = 0
for _, n in ipairs(camposn) do
-- Como no preenchimento antigo existem tópicos e rótulos/dados com o mesmo número,
-- é necessário ordenar desta forma para colocar os dados um número a frente do tópico
if camposv[n]['tópico'] then
i = i + 1
Linha 240 ⟶ 234:
end
debug = table.concat(debug, '\n')
 
-- Imagens e legendas no formato antigo --
for _i, campon in ipairs(campos{'', '1', '2', '3'}) do
if params['imagem' .. n] then
table.insert(campos, 1, {['rótulo']='#imagem', params['imagem' .. n]})
if params['legenda' .. n] or params['imagem_legenda' .. n] then
table.insert(campos, 2, {params['legenda' .. n] or params['imagem_legenda' .. n]})
end
end
end
 
-- Coordenadas --
Linha 261 ⟶ 265:
if importar == 'sim' then
for i, campo in ipairs(campos) do
if campo[1] and string.match(campo[1], '^#wd[Ww][Dd]:') then
table.insert(verwikidata, i)
end
Linha 268 ⟶ 272:
for i, campo in ipairs(campos) do
for n, dados in ipairs(campo) do
if not string.match(dados, '^#wd[Ww][Dd]:') then
if n > 1 then
campos[i][1] = dados