Module:Infobox: Difference between revisions
Jump to navigation
Jump to search
Remove 0th edit section. Despite the edit links already all over the page, this one in particular seems to be an idiot magnet. It also didn't work for the few infoboxes that weren't in the 0th section. |
Add invimage dividers |
||
Line 73: | Line 73: | ||
end | end | ||
if image then | if image == '----' then | ||
table.insert( '</div><div class="infobox-invimages">' ) | |||
elseif image then | |||
if not grid then | if not grid then | ||
grid = require( 'Module:Grid' ).cell | grid = require( 'Module:Grid' ).cell | ||
Line 81: | Line 83: | ||
end | end | ||
if #invImages > 0 then | if grid and #invImages > 0 then | ||
invImages = '<div class="infobox-invimages">' .. table.concat( invImages, '' ) .. '</div>' | invImages = '<div class="infobox-invimages">' .. table.concat( invImages, '' ) .. '</div>' | ||
else | else |
Revision as of 11:57, 24 July 2015
Implements {{Infobox}}
Usage
de:Modul:Infobox es:Módulo:Infobox fr:Module:Infobox it:Modulo:Infobox ja:モジュール:Infobox ko:모듈:Infobox lzh:模組:Infobox nl:Module:Infobox pl:Moduł:Infobox pt:Módulo:Infobox ru:Модуль:Карточка th:มอดูล:Infobox uk:Модуль:Картка zh: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 = {}
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 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 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
table.insert( '</div><div class="infobox-invimages">' )
elseif image then
if not grid then
grid = require( 'Module:Grid' ).cell
end
table.insert( invImages, grid{ image, link = 'none' } )
end
end
if grid and #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="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