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