Diferencia entre revisiones de «Módulo:Infobox»
m (Protegió «Módulo:Infobox» ([Editar=Solo permitir administradores] (indefinido) [Pueden trasladar=Solo permitir administradores] (indefinido))) |
|||
| 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 titleObject = mw.title.getCurrentTitle() |
| + | local title = args.title or titleObject.baseText | ||
local imageArea = args.imagearea | local imageArea = args.imagearea | ||
| Línea 15: | Línea 16: | ||
local imgCount = {} | local imgCount = {} | ||
local invImgCount = {} | local invImgCount = {} | ||
| − | |||
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 titleObject.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 slot |
| + | local invIds = mw.loadData( 'Module:InvSprite/IDs' ).ids | ||
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' ) | + | local imageExists |
| − | + | if invIds[title] then | |
| + | imageExists = true | ||
| + | else | ||
| + | local imageTitle = mw.title.new( 'File:Grid ' .. title .. '.png' ) | ||
| + | imageExists = imageTitle and imageTitle.exists | ||
| + | end | ||
| + | if imageExists then | ||
image = title | image = title | ||
else | else | ||
| Línea 72: | Línea 79: | ||
end | end | ||
| − | if image then | + | if image == '----' then |
| − | if not | + | table.insert( invImages, '</div><div style="padding-top:.5em">' ) |
| − | + | elseif image then | |
| + | if not slot then | ||
| + | slot = require( 'Module:Inventory slot' ).slot | ||
end | end | ||
| − | table.insert( invImages, | + | table.insert( invImages, slot{ image, link = 'none' } ) |
end | end | ||
end | end | ||
| − | if #invImages > 0 then | + | if slot and #invImages > 0 then |
| − | invImages = '<div class="infobox-invimages">' .. table.concat( invImages, '' ) .. '</div>' | + | invImages = '<div class="infobox-invimages"><div>' .. table.concat( invImages, '' ) .. '</div></div>' |
else | else | ||
invImages = '' | invImages = '' | ||
| Línea 108: | Línea 117: | ||
local html = { | local html = { | ||
'<div class="notaninfobox">', | '<div class="notaninfobox">', | ||
| − | '<div class="infobox-title | + | '<div class="mcwiki-header infobox-title">' .. title .. '</div>', |
imageArea, | imageArea, | ||
'{| class="infobox-rows" cellspacing="1" cellpadding="4"', | '{| class="infobox-rows" cellspacing="1" cellpadding="4"', | ||
Revisión del 19:00 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 titleObject = mw.title.getCurrentTitle()
local title = args.title or titleObject.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 = {}
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 titleObject.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 slot
local invIds = mw.loadData( 'Module:InvSprite/IDs' ).ids
for k, v in ipairs( invImgCount ) do
local image = args['invimage' .. v]
if image == 'title' then
local imageExists
if invIds[title] then
imageExists = true
else
local imageTitle = mw.title.new( 'File:Grid ' .. title .. '.png' )
imageExists = imageTitle and imageTitle.exists
end
if imageExists then
image = title
else
image = false
end
end
if image == '----' then
table.insert( invImages, '</div><div style="padding-top:.5em">' )
elseif image then
if not slot then
slot = require( 'Module:Inventory slot' ).slot
end
table.insert( invImages, slot{ image, link = 'none' } )
end
end
if slot and #invImages > 0 then
invImages = '<div class="infobox-invimages"><div>' .. table.concat( invImages, '' ) .. '</div></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="mcwiki-header infobox-title">' .. title .. '</div>',
imageArea,
'{| class="infobox-rows" cellspacing="1" cellpadding="4"',
'|-',
args.rows or '',
footer or '',
'|}',
'</div>'
}
return table.concat( html, '\n' )
end
return p