Module:Navcards
From Halopedia, the Halo wiki
Documentation for this module may be created at ModuleDoc:Navcards
local mArguments --initialize lazily
local getArgNums = require('Module:Common').getArgNums
local p = {}
--Implements {{navcards}} from the frame
function p.navcards(frame)
mArguments = require('Module:Arguments2')
return p._navcards(mArguments.getArgs(frame), frame)
end
function p._navcards(args, frame)
if not args then
return 'Missing arguments'
end
local html = mw.html.create('div'):addClass('template-navcards')
local content = mw.html.create('div'):addClass('template-navcards-content')
local thumbWidth = args['thumbwidth'] or 240
html:css('--tg-navcards-aspect-ratio', args['aspectratio'] or '1')
content:css('grid-template-columns', string.format('repeat(auto-fit, minmax(%spx, 1fr))', thumbWidth * 2 / 3))
if args['header'] then
local divider = frame:expandTemplate { title = 'Section divider', args = { args['header'] } }
html:tag('div'):addClass('template-navcards-header')
:wikitext(divider)
:done()
end
local cardCount = 0
for i, _ in ipairs(getArgNums('page', args)) do
local num = tostring(i)
if not args['page' .. num] then return end
local navcard = mw.html.create('div'):addClass('template-navcard')
local image = mw.html.create('div'):addClass('template-navcard-image')
if args['image' .. num] then
image:wikitext(string.format('[[File:%s|%spx|link=]]', args['image' .. num], thumbWidth*2))
end
local text = mw.html.create('div'):addClass('template-navcard-text')
text:tag('div'):addClass('template-navcard-title')
:wikitext(args['title' .. num] or args['page' .. num])
:done()
if args['caption' .. num] then
text:tag('div'):addClass('template-navcard-caption')
:wikitext(args['caption' .. num])
end
navcard:node(image)
navcard:node(text)
navcard:tag('div'):addClass('template-navcard-link')
:wikitext(string.format('[[%s]]', args['page' .. num]))
content:node(navcard)
cardCount = cardCount + 1
end
html:addClass('template-navcards--count-' .. cardCount)
html:node(content)
return frame:extensionTag {
name = 'templatestyles', args = { src = 'TemplateStyle:Navcards.css' }
} .. tostring(html)
end
return p