Module:Galbox: Difference between revisions
Jump to navigation
Jump to search
Want an adless experience? Log in or Create an account.
(match expanded {{Main}} in the case that it's in a transcluded page) |
(add AoL, LttP, LA to staging. gonna do all four before going live) |
||
Line 40: | Line 40: | ||
-- override | -- override | ||
function Galbox:renderContent() | function Galbox:renderContent() | ||
local listing = Listing._parseListing( self.categories[1] == 'The Legend of Zelda' and self.subject .. '/Staging' or self.subject ) | local listing = Listing._parseListing( (self.categories[1] == 'The Legend of Zelda' or self.categories[1] == 'The Adventure of Link' or self.categories[1] == 'A Link to the Past' or self.categories[1] == 'Link\'s Awakening') and self.subject .. '/Staging' or self.subject ) | ||
-- test if there are no sections at all | -- test if there are no sections at all |
Revision as of 00:02, July 28, 2020
Documentation for this module may be created at Module:Galbox/doc
local Args = require( 'Module:Args' ) local Gallery = require( 'Module:Gallery' ).Gallery local Listing = require( 'Module:Listing' ) local Tabs = require( 'Module:Tabs' ).Tabs function buildGallery( sections ) local gallery = Gallery.new{ widths = '62px', heights = '62px' } for _, section in ipairs( sections ) do local mainTemplate = section.summary:match( '%{%{Main|(.-)}}' ) -- !!!! This may break if Template:Main is modified !!!! local expandedMainTemplate = section.summary:match( 'Main article: %[%[(.-)]]' ) local link = mainTemplate and mw.text.split( mainTemplate, '|' )[1] or expandedMainTemplate and mw.text.split( expandedMainTemplate, '|' )[1] for file in section.summary:gmatch( '%[%[File:(.-)]]' ) do local fileParts = mw.text.split( file, '|' ) local fileName = fileParts[1] local fileCaption = fileParts[#fileParts] ~= 'right' and fileParts[#fileParts] -- TODO need to be smarter about this. for now, assuming the last item is either 'right' or the caption gallery:addFile( fileName or 'No Image.png', '[[' .. (link or section.name) .. '|' .. (fileCaption or section.name) .. ']]', { link = section.name, alt = fileCaption or section.name } ) end end return gallery:render() end local Navbox = Listing.Navbox local Galbox = setmetatable( {}, Navbox ) Galbox.__index = Galbox function Galbox.new( args ) local obj = Navbox.new( args ) return setmetatable( obj, Galbox ) end -- override function Galbox:renderContent() local listing = Listing._parseListing( (self.categories[1] == 'The Legend of Zelda' or self.categories[1] == 'The Adventure of Link' or self.categories[1] == 'A Link to the Past' or self.categories[1] == 'Link\'s Awakening') and self.subject .. '/Staging' or self.subject ) -- test if there are no sections at all if not #listing.sections then return '' end -- build default gallery for top-level items local defaultGallery if #listing.topLevelLeaves > 0 then defaultGallery = buildGallery( listing.topLevelLeaves ) end -- build tabs for nested items if #listing.groups > 0 then local tabs = Tabs.new() -- add a tab for the default gallery if defaultGallery then tabs:addTabTopWithContent{ contentId = 'General', content = defaultGallery } end for index, group in ipairs( listing.groups ) do tabs:addTabTopWithContent{ contentId = group.name, content = buildGallery( group.sections ) } end return tabs:render() end -- if #listing.groups > 0 return defaultGallery end -- function Galbox:renderContent() local p = {} function p.main( frame ) local galbox = Galbox.new( Args.fromFrame( frame ) ) return galbox:render() end -- for use in the debug console: -- =p.main(p.debugframe) p.debugframe = { args = {}, getParent = function() return { args = { [1] = "The Legend of Zelda", [2] = "Characters", } } end } return p