Jump to content

Module:Navigation header

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Harej (talk | contribs) at 04:15, 7 May 2023 (Undid revision 1153570669 by Harej (talk)). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

local p = {}

-- Import the standard icons module
local standardIcons = require('Module:Standard icons')

function p.getIcon(key)
    local iconTable = standardIcons.getIconTable()
    return iconTable[key] or key
end

function p.navigationHeader(frame)
    local parentFrame = frame:getParent()
    local icon = {}
    local label = {}
    local itemType = {}
    local i = 1

    while parentFrame.args["icon" .. i] or parentFrame.args["type" .. i] or parentFrame.args["label" .. i] do
        icon[i] = parentFrame.args["icon" .. i] or p.getIcon(parentFrame.args["type" .. i])
        label[i] = parentFrame.args["label" .. i] or ""
        itemType[i] = parentFrame.args["type" .. i] or ""
        i = i + 1
    end

    local output = {}
    output[#output + 1] = '<div class="navigation-header"><div role="navigation" class="navigation-header-tabs">'
    output[#output + 1] = '<ul>'

    -- Add leadtab if leadtab-label is defined
    local leadtabLabel = parentFrame.args["leadtab-label"]
    if leadtabLabel then
        local leadtabIcon = parentFrame.args["leadtab-icon"]
        if leadtabIcon then
            output[#output + 1] = string.format(
                '<li id="leadtab"><div class="navigation-header-icon">[[File:%s|x18px|link=]]</div>&nbsp;%s</li>',
                leadtabIcon,
                leadtabLabel
            )
        else
            output[#output + 1] = string.format(
                '<li id="leadtab">%s</li>',
                leadtabLabel
            )
        end
    end

    for j = 1, #icon do
        output[#output + 1] = string.format(
            '<li id="%s"><div class="navigation-header-icon">[[File:%s|x18px|link=]]</div>&nbsp;%s</li>',
            itemType[j],
            icon[j],
            label[j]
        )
    end

    output[#output + 1] = '</ul>'
    output[#output + 1] = '</div></div>'

    return table.concat(output, '\n')
end

return p