Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

Jump to content

Module:Navigation header

From Wikipedia, the free encyclopedia

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" and theme ~= "teal-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>'

	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