Module:Infobox: Difference between revisions
Jump to navigation
Jump to search
imported>Kittymmeow (will be moved to mainspace after scribunto is installed) |
imported>Kittymmeow No edit summary |
||
Line 8: | Line 8: | ||
if not imageArea and imageArea ~= 'none' then | if not imageArea and imageArea ~= 'none' then | ||
local images = {} | local images = {} | ||
local defaultImageSize = args.defaultimagesize or '150px' | local defaultImageSize = args.defaultimagesize or '150px' | ||
args.image1 = args.image1 or args.image or 'title' | args.image1 = args.image1 or args.image or 'title' | ||
args.image1size = args.image1size or args.imagesize | args.image1size = args.image1size or args.imagesize | ||
local imgCount = {} | local imgCount = {} | ||
for k, v in pairs( args ) do | for k, v in pairs( args ) do | ||
if type( k ) == 'string' then | if type( k ) == 'string' then | ||
local image, num = k:match( '^(image)(%d+)$' ) | local image, num = k:match( '^(image)(%d+)$' ) | ||
if v:lower() ~= 'none' then | if v:lower() ~= 'none' then | ||
if image then | if image then | ||
table.insert( imgCount, tonumber( num ) ) | table.insert( imgCount, tonumber( num ) ) | ||
end | end | ||
end | end | ||
Line 58: | Line 52: | ||
images = table.concat( images, '\n' ) | images = table.concat( images, '\n' ) | ||
if images ~= '' then | |||
imageArea = images .. '\n' | |||
if images | |||
imageArea = images .. '\n' | |||
else | else | ||
imageArea = 'none' | imageArea = 'none' |
Revision as of 09:04, 23 May 2019
Documentation
[purge]
This module implements {{infobox}}
. The module should generally be invoked directly on template pages, rather than using the infobox template.
Parent arguments are automatically merged with directly passed arguments (the latter overwriting the former) and all arguments are normalised to trim whitespace and set empty arguments to nil
.
Adapted from Minecraft Wiki.
Dependencies
- Module:Animate (when using animated images)
- Module:ProcessArgs
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 defaultImageSize = args.defaultimagesize or '150px'
args.image1 = args.image1 or args.image or 'title'
args.image1size = args.image1size or args.imagesize
local imgCount = {}
for k, v in pairs( args ) do
if type( k ) == 'string' then
local image, num = k:match( '^(image)(%d+)$' )
if v:lower() ~= 'none' then
if image then
table.insert( imgCount, tonumber( num ) )
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( 'Media:' .. 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 images ~= '' then
imageArea = images .. '\n'
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