mNessun oggetto della modifica |
mNessun oggetto della modifica |
||
Riga 1: | Riga 1: | ||
local p = {} |
local p = {} |
||
function p.infobox( f ) |
function p.infobox( f ) |
||
− | local args = require( ' |
+ | local args = require( 'Modulo: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 |
||
Riga 47: | Riga 47: | ||
elseif image:match( ';' ) then |
elseif image:match( ';' ) then |
||
if not animate then |
if not animate then |
||
− | animate = require( ' |
+ | animate = require( 'Modulo:Animate' ).animate |
end |
end |
||
image = animate{ image, size } |
image = animate{ image, size } |
||
Riga 61: | Riga 61: | ||
table.sort( invImgCount ) |
table.sort( invImgCount ) |
||
local slot |
local slot |
||
− | local invIds = mw.loadData( ' |
+ | local invIds = mw.loadData( 'Modulo:InvSprite' ).ids |
− | local invAliases = mw.loadData( ' |
+ | local invAliases = mw.loadData( 'Modulo:Inventory slot/Aliases' ) |
for k, v in ipairs( invImgCount ) do |
for k, v in ipairs( invImgCount ) do |
||
local image = args['invimage' .. v] |
local image = args['invimage' .. v] |
||
Riga 77: | Riga 77: | ||
elseif image then |
elseif image then |
||
if not slot then |
if not slot then |
||
− | slot = require( ' |
+ | slot = require( 'Modulo:Inventory slot' ).slot |
end |
end |
||
table.insert( invImages, slot{ image, link = 'none' } ) |
table.insert( invImages, slot{ image, link = 'none' } ) |
Versione delle 10:39, 18 nov 2020
Questa è la pagina di documentazione e verrà essere trascritta sulla pagina module. Vedi Template:Documentazione per più informazioni
Questo modulo implementa {{infobox}}
. Il modulo dovrebbe essere invocato generalmente sulle pagine dei tmeplate, al posto che usando il template infobox.
Gli argomenti genitori sono automaticamente uniti con gli argomenti passati direttamente (il secondo sovrascrivendo il primo) e tutti gli argomenti sono normalizzati per tagliare gli spazi bianchi e impostare gli argomenti vuoti su nil
.
Dependencies
- Modulo:Animate (Quando si usano immagini animate)
- Modulo:Inventory slot (Quando si usano invimages)
- Modulo:ProcessArgs
Vedi anche
{{Blocco}}
{{Entità}}
{{Pozione}}
{{Fase di sviluppo}}
{{Oggetto}}
{{Oggetto entità}}
{{Modifica}}
{{Persona}}
{{Profilo}}
{{Programma}}
{{Strumento di terze parti}}
local p = {}
function p.infobox( f )
local args = require( 'Modulo: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( '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( 'Modulo: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( 'Modulo:InvSprite' ).ids
local invAliases = mw.loadData( 'Modulo:Inventory slot/Aliases' )
for k, v in ipairs( invImgCount ) do
local image = args['invimage' .. v]
if image == 'title' then
if invIds[title] or invAliases[title] 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( 'Modulo: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 animated-container">' .. 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