Jump to content
Menú alternativo
Alternar el menú de preferencias
Menú alternativo personal
No has accedido
Tu dirección IP será visible si haces alguna edición

La documentación para este módulo puede ser creada en Módulo:Portal navigation/doc

local p = {}
local getArgs = require('Module:Arguments').getArgs

local SKINVERT = 'skin-invert-image'
-- possible refactor for this: collect all tabs/icons into one array you can
-- iterate through. would also allow warning about unused args.

function p._main(args)
	local container = mw.html.create('div')
		:addClass('portal-navigation')

	local header = container
		:tag('div')
		:addClass('portal-navigation-header')
		:css({
			['color'] = args.header_text_color,
			['background-color'] = args.header_background_color,
			['border-bottom-color'] = args.header_border_color,
		})
	if not args.noinvert then
		header:addClass(SKINVERT)
	end

	header:tag('span')
		:addClass('portal-navigation-portalicon')
		:wikitext(args.portalicon)
	header:tag('span')
		:addClass('portal-navigation-portalname')
		:wikitext(args.portalname)

	local nav = container:tag('ul')
		:addClass('portal-navigation-body')
		:addClass(SKINVERT)

	local i = 1
	local activetab = tonumber(args.active)
	while true do
		local tab = args['tab' .. i]
		local icon = args['icon' .. i]
		if not tab then break end

		local item = nav:tag('li'):addClass('portal-navigation-item')
		if i == activetab then
			item:addClass('active-tab')
		end

		if icon then
			item:tag('span')
				:addClass('portal-navigation-tabicon')
				:wikitext(icon)
		end

		item:tag('span')
			:addClass('portal-navigation-tabname')
			:wikitext(tab)

		i = i + 1
	end

	return container
end

function p.main(frame)
	return tostring(p._main(getArgs(frame))) .. frame:extensionTag('templatestyles', '', {
		src = 'Module:Portal navigation/styles.css',
	})
end

return p