Diferencia entre revisiones de «Módulo:Infobox»
Línea 2: | Línea 2: | ||
function p.infobox( f ) | function p.infobox( f ) | ||
local args = require( 'Module:ProcessArgs' ).merge( true ) | local args = require( 'Module:ProcessArgs' ).merge( true ) | ||
− | local | + | local title = args.title or mw.title.getCurrentTitle().baseText |
− | |||
local imageArea = args.imagearea | local imageArea = args.imagearea | ||
Línea 16: | Línea 15: | ||
local imgCount = {} | local imgCount = {} | ||
local invImgCount = {} | local invImgCount = {} | ||
+ | local grid | ||
for k, v in pairs( args ) do | for k, v in pairs( args ) do | ||
if type( k ) == 'string' then | if type( k ) == 'string' then | ||
Línea 40: | Línea 40: | ||
if imageTitle and imageTitle.exists then | if imageTitle and imageTitle.exists then | ||
image = '[[File:' .. title .. '.png|' .. size .. ']]' | image = '[[File:' .. title .. '.png|' .. size .. ']]' | ||
− | elseif | + | elseif mw.title.getCurrentTitle().namespace == 0 then |
image = '[[File:No image.svg|' .. size .. '|link=File:' .. title .. '.png|Upload ' .. title .. '.png]]' | image = '[[File:No image.svg|' .. size .. '|link=File:' .. title .. '.png|Upload ' .. title .. '.png]]' | ||
else | else | ||
Línea 60: | Línea 60: | ||
if #invImgCount > 0 then | if #invImgCount > 0 then | ||
table.sort( invImgCount ) | table.sort( invImgCount ) | ||
− | local | + | local grid |
− | |||
for k, v in ipairs( invImgCount ) do | for k, v in ipairs( invImgCount ) do | ||
local image = args['invimage' .. v] | local image = args['invimage' .. v] | ||
if image == 'title' then | if image == 'title' then | ||
− | + | local imageTitle = mw.title.new( 'File:Grid ' .. title .. '.png' ) | |
− | + | if imageTitle and imageTitle.exists then | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
image = title | image = title | ||
else | else | ||
Línea 79: | Línea 72: | ||
end | end | ||
− | if | + | if image then |
− | + | if not grid then | |
− | + | grid = require( 'Module:Grid' ).cell | |
− | if not | ||
− | |||
end | end | ||
− | table.insert( invImages, | + | table.insert( invImages, grid{ image, link = 'none' } ) |
end | end | ||
end | end | ||
− | if | + | if #invImages > 0 then |
− | invImages = '<div class="infobox-invimages" | + | invImages = '<div class="infobox-invimages">' .. table.concat( invImages, '' ) .. '</div>' |
else | else | ||
invImages = '' | invImages = '' | ||
Línea 117: | Línea 108: | ||
local html = { | local html = { | ||
'<div class="notaninfobox">', | '<div class="notaninfobox">', | ||
− | '<div class="mcwiki-header | + | '<div class="infobox-title mcwiki-header">' .. title .. '</div>', |
imageArea, | imageArea, | ||
'{| class="infobox-rows" cellspacing="1" cellpadding="4"', | '{| class="infobox-rows" cellspacing="1" cellpadding="4"', |
Revisión del 19:19 11 oct 2015
[purge]
Esta es la página de documentación, debería ser transcluida a la página de plantilla principal. Véase Plantilla:Documentation para más información.
Este módulo implementa {{infobox}}. Por lo general, debe ser invocado directamente en las páginas de plantilla, en lugar de utilizar la plantilla infobox.
Los argumentos padre se fusionan automáticamente con argumentos que son trasmitidos directamente (el segundo sobrescribiendo al primero) y todos los argumentos se normalizan para recortar espacios en blanco y establecer argumentos vacíos a nil
.
Dependencias
- Módulo:Animate (cuando se usan imagenes animadas)
- Módulo:ProcessArgs
Véase también
- {{3rd Party Tool}}
- {{Block}}
- {{Bloque}}
- {{BlockTileEntity}}
- {{Entity}}
- {{Entidad}}
- {{Food}}
- {{Comida}}
- {{Alimento}}
- {{Gamemode}}
- {{Item}}
- {{ItemEntity}}
- {{Mod}}
- {{Objeto}}
- {{ObjetoEntidad}}
- {{Person}}
- {{Persona}}
- {{Potion}}
- {{Profile}}
- {{Program}}
- {{Structure}}
- {{Estructura}}
- {{Technical Block}}
- {{Version nav}}
- Module:Infobox
local p = {} function p.infobox( f ) local args = require( 'Module:ProcessArgs' ).merge( true ) local title = args.title or mw.title.getCurrentTitle().baseText local imageArea = args.imagearea if not imageArea and imageArea ~= 'none' then local images = {} local invImages = {} local defaultImageSize = args.defaultimagesize or '150px' args.image1 = args.image1 or args.image or 'title' args.image1size = args.image1size or args.imagesize args.invimage1 = args.invimage1 or args.invimage or 'title' local imgCount = {} local invImgCount = {} local grid for k, v in pairs( args ) do if type( k ) == 'string' then local image, num = k:match( '^(image)(%d+)$' ) local invImage, invNum = k:match( '^(invimage)(%d+)$' ) if v:lower() ~= 'none' then if image then table.insert( imgCount, tonumber( num ) ) elseif invImage then table.insert( invImgCount, tonumber( invNum ) ) end end end end table.sort( imgCount ) local animate for k, v in ipairs( imgCount ) do local image = args['image' .. v] local size = args['image' .. v .. 'size'] or defaultImageSize if image == 'title' then local imageTitle = mw.title.new( 'File:' .. title .. '.png' ) if imageTitle and imageTitle.exists then image = '[[File:' .. title .. '.png|' .. size .. ']]' elseif mw.title.getCurrentTitle().namespace == 0 then image = '[[File:No image.svg|' .. size .. '|link=File:' .. title .. '.png|Upload ' .. title .. '.png]]' else image = '[[File:No image.svg|' .. size .. '|link=]]' end elseif image:match( ';' ) then if not animate then animate = require( 'Module:Animate' ).animate end image = animate{ image, size } else image = '[[File:' .. image .. '|' .. size .. ']]' end table.insert( images, '<div>' .. image .. '</div>' ) end images = table.concat( images, '\n' ) if #invImgCount > 0 then table.sort( invImgCount ) local grid for k, v in ipairs( invImgCount ) do local image = args['invimage' .. v] if image == 'title' then local imageTitle = mw.title.new( 'File:Grid ' .. title .. '.png' ) if imageTitle and imageTitle.exists then image = title else image = false end end if image then if not grid then grid = require( 'Module:Grid' ).cell end table.insert( invImages, grid{ image, link = 'none' } ) end end if #invImages > 0 then invImages = '<div class="infobox-invimages">' .. table.concat( invImages, '' ) .. '</div>' else invImages = '' end else invImages = '' end if images ~= '' or invImages ~= '' then imageArea = images .. '\n' .. invImages else imageArea = 'none' end end if imageArea and imageArea ~= 'none' then imageArea = '<div class="infobox-imagearea">' .. imageArea .. '</div>' else imageArea = '' end local footer = args.footer if footer then footer = '| class="infobox-footer" colspan="2" | ' .. footer end local html = { '<div class="notaninfobox">', '<div class="infobox-title mcwiki-header">' .. title .. '</div>', imageArea, '{| class="infobox-rows" cellspacing="1" cellpadding="4"', '|-', args.rows or '', footer or '', '|}', '</div>' } return table.concat( html, '\n' ) end return p