Module:Infobox: Difference between revisions
Jump to navigation
Jump to search
(Attempt to cargo store gameversion) |
mNo edit summary |
||
Line 73: | Line 73: | ||
gameversion = '| class="infobox-gameversion-postfooter" colspan="2" | <div class="qud-infobox-version">Infobox data from game version <span class="qud-version-num">' .. gameversion .. '</span></div>' | gameversion = '| class="infobox-gameversion-postfooter" colspan="2" | <div class="qud-infobox-version">Infobox data from game version <span class="qud-version-num">' .. gameversion .. '</span></div>' | ||
local frame = mw.getCurrentFrame() | local frame = mw.getCurrentFrame() | ||
frame:callParserFunction{ name = '#cargo_store', args = { | frame:callParserFunction{ name = '#cargo_store', args = { '', | ||
_table = 'VersHistInfobox', Version = gameversion | _table = 'VersHistInfobox', Version = gameversion | ||
} } | } } |
Revision as of 19:27, 22 December 2021
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 '160px'
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 gameversion = args.gameversion
if gameversion then
gameversion = '| class="infobox-gameversion-postfooter" colspan="2" | <div class="qud-infobox-version">Infobox data from game version <span class="qud-version-num">' .. gameversion .. '</span></div>'
local frame = mw.getCurrentFrame()
frame:callParserFunction{ name = '#cargo_store', args = { '',
_table = 'VersHistInfobox', Version = gameversion
} }
end
local infoboxStartDiv = '<div class="moduleinfobox'
local class = args.class
if class then
infoboxStartDiv = infoboxStartDiv .. ' ' .. class
end
infoboxStartDiv = infoboxStartDiv .. '"'
local style = args.style
if style then
infoboxStartDiv = infoboxStartDiv .. ' style="' .. style .. '"'
end
infoboxStartDiv = infoboxStartDiv .. '>'
local html = {
infoboxStartDiv,
'<div class="infobox-title">' .. title .. '</div>',
imageArea,
'{| class="infobox-rows" cellspacing="1" cellpadding="4"',
'|-',
args.rows or '',
footer or '',
gameversion or '',
'|}',
'</div>'
}
return table.concat( html, '\n' )
end
return p