Minecraft Wiki
k (Update)
k (test vertaalde parameters)
 
(Een tussenliggende versie door dezelfde gebruiker niet weergegeven)
Regel 3: Regel 3:
 
local args = require( 'Module:ProcessArgs' ).merge( true )
 
local args = require( 'Module:ProcessArgs' ).merge( true )
 
local titleObject = mw.title.getCurrentTitle()
 
local titleObject = mw.title.getCurrentTitle()
local title = args.title or titleObject.baseText
+
local title = args.title or titleObject.baseText or args.titel
  +
local subtitle = args.subtitle or args.subtitel
  +
  +
if subtitle ~= nil then
  +
sub_title = '</br><span style=font-size:75%>' .. subtitle .. '</span>'
  +
else
  +
sub_title = ''
  +
end
 
 
 
local imageArea = args.imagearea
 
local imageArea = args.imagearea
Regel 10: Regel 17:
 
local invImages = {}
 
local invImages = {}
 
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 args.afbeelding1 or args.afbeelding or 'title'
args.image1size = args.image1size or args.imagesize
+
args.image1size = args.image1size or args.imagesize or args.afbeeldingsgrootte1 or args.afbeeldingsgrootte
 
args.invimage1 = args.invimage1 or args.invimage or 'title'
 
args.invimage1 = args.invimage1 or args.invimage or 'title'
 
 
Regel 117: Regel 124:
 
local html = {
 
local html = {
 
'<div class="notaninfobox">',
 
'<div class="notaninfobox">',
'<div class="mcwiki-header infobox-title">' .. title .. '</div>',
+
'<div class="mcwiki-header infobox-title">' .. title .. sub_title .. '</div>',
 
imageArea,
 
imageArea,
 
'{| class="infobox-rows" cellspacing="1" cellpadding="4"',
 
'{| class="infobox-rows" cellspacing="1" cellpadding="4"',

Huidige versie van 29 jan 2019 om 16:46

This module implements {{infobox}}. It 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.

Dependencies

Zie ook

[bekijken | bewerken | geschiedenis | cache legen]Bovenstaande documentatie is getranscludeerd uit Module:Infobox/doc.

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 or args.titel
	local subtitle = args.subtitle or args.subtitel
	
	if subtitle ~= nil then
		sub_title = '</br><span style=font-size:75%>' .. subtitle .. '</span>'
	else
		sub_title = ''
	end
	
	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 args.afbeelding1 or args.afbeelding or 'title'
		args.image1size = args.image1size or args.imagesize or args.afbeeldingsgrootte1 or args.afbeeldingsgrootte
		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( 'Media:' .. title .. '.png' )
				if imageTitle and imageTitle.exists then
					image = '[[Bestand:' .. title .. '.png|' .. size .. ']]'
				elseif titleObject.namespace == 0 then
					image = '[[Bestand:No image.svg|' .. size .. '|link=Bestand:' .. title .. '.png|Upload ' .. title .. '.png]]'
				else
					image = '[[Bestand:No image.svg|' .. size .. '|link=]]'
				end
			elseif image:match( ';' ) then
				if not animate then
					animate = require( 'Module:Animeer' ).animate
				end
				image = animate{ image, size }
			else
				image = '[[Bestand:' .. 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
			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( 'Bestand: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 .. sub_title .. '</div>',
			imageArea,
			'{| class="infobox-rows" cellspacing="1" cellpadding="4"',
			'|-',
			args.rows or '',
			footer or '',
			'|}',
		'</div>'
	}
	
	return table.concat( html, '\n' )
end

return p