Module:Navigation: Difference between revisions
From PC Gaming Shelter
No edit summary |
No edit summary |
||
| (40 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
local p = {} | local p = {} | ||
local function | local function renderRow(label, image, target, model) | ||
local defaultTarget = label | |||
if not target then | |||
target = defaultTarget | |||
end | |||
local cardClass = 'navthumb' | |||
if image ~= '' and model == '1' then | |||
cardClass = 'navthumb p-3' | |||
end | |||
local labelClass = 'navthumb-label' | |||
if image ~= '' and model == '0' then | |||
labelClass = 'navthumb-label h-100 with-icon' | |||
end | |||
local html = mw.html.create() | local html = mw.html.create() | ||
html:tag('div') | local card = html:tag('div'):addClass(cardClass) | ||
:tag('div'):attr('data-bg', | if image ~= '' and model == '1' then | ||
card:tag('div'):addClass('navthumb-image'):attr({ | |||
['data-bg'] = image, | |||
}):done() | |||
end | |||
if image ~= '' and model == '0' then | |||
card:tag('div'):addClass(labelClass):attr({ | |||
['data-bg'] = image, | |||
}):css({ | |||
['background-size'] = 'contain', | |||
['background-repeat'] = 'no-repeat', | |||
-- ['padding-left'] = '30px', | |||
}):wikitext(string.format('[[%s|%s]]', target, label)):done() | |||
else | |||
card:tag('div'):addClass(labelClass):wikitext(string.format('[[%s|%s]]', target, label)):done() | |||
end | |||
return html | return html | ||
| Line 16: | Line 42: | ||
local args = frame:getParent().args or {} | local args = frame:getParent().args or {} | ||
local title = args[1] or args['title'] or 'Navigate' | local title = args[1] or args['title'] or 'Navigate' | ||
local showThumbs = args['show thumbs'] or '1' | |||
local freeText = args['free text'] or nil | |||
local footer = args['footer'] or nil | |||
local html = mw.html.create() | local html = mw.html.create() | ||
html:tag('div'):addClass('card bg- | local card = html:tag('div'):addClass('card bg-transparent thumbwall mb-3') | ||
local header = card:tag('div'):addClass('card-header border-bottom-0'):wikitext(title):done() | |||
local body = card:tag('div'):addClass('card-body pt-2') | |||
local i = 1 | local i = 1 | ||
while args['label' .. i] do | while args['label' .. i] do | ||
local label = args['label' .. i] | local label = args['label' .. i] | ||
local imageUrl = '' | |||
local image = args['image' .. i] or '' | local image = args['image' .. i] or '' | ||
if image and image ~= '' then | |||
imageUrl = frame:preprocess( | |||
string.format('{{filepath:{{PAGENAME:%s}}}}', image) | |||
) | |||
end | |||
local target = args['target' .. i] or label | local target = args['target' .. i] or label | ||
body:node(renderRow(label, imageUrl, target, showThumbs)) | |||
i = i + 1 | i = i + 1 | ||
end | end | ||
if freeText then | |||
body:node(freeText) | |||
end | |||
if footer then | |||
card:tag('div'):addClass('card-footer'):wikitext(footer) | |||
end | |||
return html | |||
end | |||
return p | |||
Latest revision as of 09:16, 20 June 2026
Documentation for this module may be created at Module:Navigation/doc
local p = {}
local function renderRow(label, image, target, model)
local defaultTarget = label
if not target then
target = defaultTarget
end
local cardClass = 'navthumb'
if image ~= '' and model == '1' then
cardClass = 'navthumb p-3'
end
local labelClass = 'navthumb-label'
if image ~= '' and model == '0' then
labelClass = 'navthumb-label h-100 with-icon'
end
local html = mw.html.create()
local card = html:tag('div'):addClass(cardClass)
if image ~= '' and model == '1' then
card:tag('div'):addClass('navthumb-image'):attr({
['data-bg'] = image,
}):done()
end
if image ~= '' and model == '0' then
card:tag('div'):addClass(labelClass):attr({
['data-bg'] = image,
}):css({
['background-size'] = 'contain',
['background-repeat'] = 'no-repeat',
-- ['padding-left'] = '30px',
}):wikitext(string.format('[[%s|%s]]', target, label)):done()
else
card:tag('div'):addClass(labelClass):wikitext(string.format('[[%s|%s]]', target, label)):done()
end
return html
end
function p.data(frame)
local args = frame:getParent().args or {}
local title = args[1] or args['title'] or 'Navigate'
local showThumbs = args['show thumbs'] or '1'
local freeText = args['free text'] or nil
local footer = args['footer'] or nil
local html = mw.html.create()
local card = html:tag('div'):addClass('card bg-transparent thumbwall mb-3')
local header = card:tag('div'):addClass('card-header border-bottom-0'):wikitext(title):done()
local body = card:tag('div'):addClass('card-body pt-2')
local i = 1
while args['label' .. i] do
local label = args['label' .. i]
local imageUrl = ''
local image = args['image' .. i] or ''
if image and image ~= '' then
imageUrl = frame:preprocess(
string.format('{{filepath:{{PAGENAME:%s}}}}', image)
)
end
local target = args['target' .. i] or label
body:node(renderRow(label, imageUrl, target, showThumbs))
i = i + 1
end
if freeText then
body:node(freeText)
end
if footer then
card:tag('div'):addClass('card-footer'):wikitext(footer)
end
return html
end
return p
