PC Gaming Shelter
An archive dedicated to preserving PC Gaming history and more

Module:Navigation: Difference between revisions

From PC Gaming Shelter
No edit summary
No edit summary
 
(27 intermediate revisions by the same user not shown)
Line 1: Line 1:
local p = {}
local p = {}


local function renderRow(label, image, target)
local function renderRow(label, image, target, model)
-- local label, image, target = label, image, target
local defaultTarget = label
local defaultTarget = label
if not target then
if not target then
target = defaultTarget
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
end
     local html = mw.html.create()
     local html = mw.html.create()
     html:tag('div'):addClass('navthumb')
     local card = html:tag('div'):addClass(cardClass)
         :tag('div'):addClass('navthumb-image'):attr({
    if image ~= '' and model == '1' then
         card:tag('div'):addClass('navthumb-image'):attr({
         ['data-bg'] = image,
         ['data-bg'] = image,
         }):done()
         }):done()
        :tag('div'):addClass('navthumb-label'):wikitext(string.format('[[%s|%s]]', target, label)):done()
    end
    :done()
    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 22: 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()
   local card = html:tag('div'):addClass('card bg-dark thumbwall mb-3')
   local card = html:tag('div'):addClass('card bg-transparent thumbwall mb-3')
   local header = card:tag('div'):addClass('card-header'):wikitext(title):done()
   local header = card:tag('div'):addClass('card-header border-bottom-0'):wikitext(title):done()
   local body = card:tag('div'):addClass('card-body')
   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 ''
local imageUrl = ''
if image and image ~= '' then
if image and image ~= '' then
imageUrl = frame:preprocess(
imageUrl = frame:preprocess(
Line 38: Line 62:
)
)
end
end
local target = args['target' .. i] or label
local target = args['target' .. i] or label
         body:node(renderRow(label, imageUrl, target))
         body:node(renderRow(label, imageUrl, target, showThumbs))
     i = i + 1
     i = i + 1
end
end
 
  return html
if freeText then
    body:node(freeText)
end
if footer then
    card:tag('div'):addClass('card-footer'):wikitext(footer)
end
return html
end
end


return p
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