Module:Inventory slot: Difference between revisions

m minetip only pays attention to top level titles or next level link titles, so we need to add the title on the top level for it to override the default of the link title. It also should null the title if "title=none" is set, as otherwise it displays blank
Actually, we were just using an old version of minetip. Updated to support an even newer version of minetip. Now passes along idData to the main sprite function rather than using the base function, so this gets its tracking categories.
Line 50: Line 50:
local modIds = {}
local modIds = {}
local animated = args[1]:find( ';' )
local animated = args[1]:find( ';' )
local pageName = mw.title.getCurrentTitle().subpageText
local pageName = mw.title.getCurrentTitle().text
local imgClass = args.imgclass
local imgClass = args.imgclass
local numStyle = args.numstyle
local numStyle = args.numstyle
Line 81: Line 81:
( item or body ):tag( 'br' )
( item or body ):tag( 'br' )
else
else
local category
local parts = p.getParts( frame, args.mod )
local parts = p.getParts( frame, args.mod )
local tooltipTitle = parts.title
local title = parts.title or mw.text.trim( args.title or '' )
local mod = parts.mod
local mod = parts.mod
local name = parts.name
local name = parts.name
local num = parts.num
local num = parts.num
local tooltipDesc = parts.text
local description = parts.text
local img, spriteImg
local img, idData
if mod then
if mod then
if not modIds[mod] and mw.title.new( 'Module:InvSprite/Mods/' .. mod .. '/IDs' ).exists then
local modData = modIds[mod]
modIds[mod] = mw.loadData( 'Module:InvSprite/Mods/' .. mod .. '/IDs' )
if not modData and mw.title.new( 'Module:InvSprite/Mods/' .. mod .. '/IDs' ).exists then
modData = mw.loadData( 'Module:InvSprite/Mods/' .. mod .. '/IDs' )
modIds[mod] = modData
end
end
if modIds[mod] and modIds[mod][name] then
if modData and modData[name] then
spriteImg = modIds[mod][name].pos
idData = modData[name]
else
else
img = name .. ' (' .. mod .. ')'
img = name .. ' (' .. mod .. ')'
end
end
elseif ids[name] then
elseif ids[name] then
spriteImg = ids[name].pos
idData = ids[name]
else
else
img = name
img = name
Line 106: Line 109:
local link = args.link or ''
local link = args.link or ''
if link == '' then
if link == '' then
if name == pageName then
if mod then
link = 'none'
elseif mod then
link = 'Mods/' .. mod .. '/' .. name
link = 'Mods/' .. mod .. '/' .. name
else
else
link = name
link = name
end
end
elseif link:lower() == 'none' then
link = nil
end
if link == pageName then
link = nil
end
end
local title = args.title or ''
local formattedTitle
local plainTitle
if title == '' then
if title == '' then
if tooltipTitle then
plainTitle = name
title = tooltipTitle:gsub( '&[0-9a-fk-or]', '' )
elseif title:lower() ~= 'none' then
plainTitle = title:gsub( '\\\\', '\' ):gsub( '\\&', '&' )
local formatPattern = '&[0-9a-fk-or]'
if plainTitle:match( formatPattern ) then
formattedTitle = title
plainTitle = plainTitle:gsub( formatPattern, '' )
end
end
if mw.text.trim( title ) == '' and ( link:lower() == 'none' or link ~= name ) then
title = name
plainTitle:gsub( '\', '\\' ):gsub( '&', '&' )
end
elseif link then
end
if img then
formattedTitle = ''
if link:lower() == 'none' then
link = nil
end
if title == '' then
title = nil
elseif title:lower() == 'none' then
if link then
title = ''
else
else
title = nil
plainTitle = ''
end
end
end
end
if img and ( title == '' or not link ) or not img then
item:attr{
item:attr{ title = title }
['data-minetip-title'] = formattedTitle,
end
['data-minetip-text'] = description
if not tooltipTitle and title == '' then
}
item:attr{ ['data-minetip-title'] = 0 }
else
item:attr{
['data-minetip-title'] = tooltipTitle,
['data-minetip-text'] = tooltipDesc
}
end
if img then
if img then
item:addClass( 'invslot-item-image' )
item:addClass( 'invslot-item-image' )
:wikitext( '[[File:Grid ', img, '.png|32x32px|link=', link or '', '|', title or '', ']]' )
:wikitext( '[[File:Grid ', img, '.png|32x32px|link=', link or '', '|', plainTitle or '', ']]' )
else
else
if not sprite then
if not sprite then
sprite = require( [[Module:Sprite]] ).base
sprite = require( [[Module:Sprite]] ).sprite
end
end
local image
local image
Line 164: Line 162:
item:wikitext( '[[', link, '|' )
item:wikitext( '[[', link, '|' )
end
end
item:wikitext( sprite{
local image, spriteCat = sprite{
pos = spriteImg, title = title,
iddata = idData, title = plainTitle,
image = image, settings = 'InvSprite'
image = image, settings = 'InvSprite'
} )
}
item:wikitext( image )
category = spriteCat
end
end
Line 177: Line 177:
:tag( 'span' )
:tag( 'span' )
:addClass( 'invslot-stacksize' )
:addClass( 'invslot-stacksize' )
:attr{ title = title }
:attr{ title = plainTitle }
:wikitext( num )
:wikitext( num )
if numStyle then
if numStyle then
Line 187: Line 187:
end
end
if spriteImg and link then
if idData and link then
item:wikitext( ']]' )
item:wikitext( ']]' )
end
end
item:wikitext( category )
end
end