Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.
Revision as of 03:08, 23 February 2025 by Prd (talk | contribs) (Created page with "local p = {} local standardIcons = require('Module:Standard icons') local shortcut = require('Module:Shortcut') local function getIcon(key) local iconTable = standardIcons.getIconTable() return iconTable[key] or key end function p._main(args) local icon = {} local label = {} local itemType = {} do local i = 1 while args["icon" .. i] or args["type" .. i] or args["label" .. i] do icon[i] = args["icon" .. i] or getIcon(args["type" .. i]) label[i] = args...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Implements Template:Navigation header.

Functions

main

main(frame: table) -> string

Takes a frame object containing the template's arguments and generates a navigation header.

frame: A table containing the arguments passed to the module.

Returns: A string representing the generated HTML for the navigation header.

_main

_main(args: table) -> string

Takes an args object containing another module's arguments into this module and does the same as above.



local p = {}

local standardIcons = require('Module:Standard icons')
local shortcut = require('Module:Shortcut')

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

function p._main(args)
	local icon = {}
	local label = {}
	local itemType = {}
	
	do
		local i = 1
		while args["icon" .. i] or args["type" .. i] or args["label" .. i] do
			icon[i] = args["icon" .. i] or getIcon(args["type" .. i])
			label[i] = args["label" .. i] or ""
			itemType[i] = args["type" .. i] or ""
			i = i + 1
		end
	end


	local theme = args["theme"] or "blue-theme"
	if theme ~= "gray-theme" and theme ~= "blue-theme" then
		theme = "blue-theme"
	end

	local output = {}
	output[#output + 1] = string.format('<div class="navigation-header %s"><div role="navigation" class="navigation-header-tabs">', theme)

	local shortcutParam = args["shortcut"]
	if shortcutParam then
		local shortcutBox = shortcut._main({shortcutParam})
		output[#output + 1] = string.format('<div class="navigation-header-shortcut">%s</div>', shortcutBox)
	end

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

	-- Add leadtab if leadtab-label is defined
	local leadtabLabel = args["leadtab-label"]
	if leadtabLabel then
		local leadtabIcon = 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 mw.getCurrentFrame():extensionTag{
		name = 'templatestyles', args = { src = 'Module:Navigation header/styles.css' }
	} .. table.concat(output, '\n')
end

function p.main(frame)
	return p._main(frame:getParent().args)
end

return p