Module:IconNav

From MENACE Official Wiki
Revision as of 14:06, 27 February 2026 by DCello (talk | contribs)

Documentation for this module may be created at Module:IconNav/doc

local p = {}

function p.main(frame)
    local args = frame:getParent().args
    local icons = {}
    local links = {}
    
    -- Collect all icon/link pairs
    local i = 1
    while args['icon' .. i] do
        table.insert(icons, args['icon' .. i])
        table.insert(links, args['link' .. i])
        i = i + 1
    end
    
    -- Get header parameters
    local headerText = args['header']
    local leftImage = args['leftImage']
    local rightImage = args['rightImage']
    
    -- Build icon row
    local iconRow = '| '
    for j, icon in ipairs(icons) do
        if j > 1 then iconRow = iconRow .. ' || ' end
        iconRow = iconRow .. '[[File:' .. icon .. '.png|link=' .. links[j] .. '|124px]]'
    end
    
    -- Build link row
    local linkRow = '| '
    for j, link in ipairs(links) do
        if j > 1 then linkRow = linkRow .. ' || ' end
        linkRow = linkRow .. '[[' .. link .. ']]'
    end
    
    local result = ''
    
    -- Only include header section if headerText or images are provided
	-- Determine if header should be shown
	local hasHeader =
	    (headerText and headerText ~= '') or
	    (leftImage and leftImage ~= '') or
	    (rightImage and rightImage ~= '')
	
	if hasHeader then
	    local headerLine = ''
	
	    if leftImage and leftImage ~= '' then
	        headerLine = headerLine .. '[[File:' .. leftImage .. '|15px|link=]] '
	    end
	    if headerText and headerText ~= '' then
	        headerLine = headerLine .. '\'\'\'' .. headerText .. '\'\'\''
	    end
	    if rightImage and rightImage ~= '' then
	        headerLine = headerLine .. ' [[File:' .. rightImage .. '|15px|link=]]'
	    end
	
	    result = result .. '{| class="gridBG" align="center" style="background-color:#; width: 95%; height: 50px; border: 1px solid white; color: white; border-left: none; border-right: none; border-top: none;"\n'
	    result = result .. '| class="hides hidem" style="font-size: 125%; text-align: center;" | <center><big>' .. headerLine .. '</big></center>\n'
	    result = result .. '|}\n'
	end

    result = result .. '<center>\n'
    result = result .. '{| style="width: 95%; text-align: center;"\n'
    
    if headerText or leftImage or rightImage then
        result = result .. '|-\n'
        result = result .. '| style="height: 20px;" |\n'
    end
    
    result = result .. '|-\n'
    result = result .. iconRow .. '\n'
    result = result .. '|-\n'
    result = result .. linkRow .. '\n'
    result = result .. '|}\n'
    result = result .. '</center>'
    
    return result
end

return p