Jump to content

Module:Page tabs

Permanently protected module
From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Mr. Stradivarius (talk | contribs) at 13:01, 20 December 2013 (make it slightly more efficient). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

-- This module implements {{Page tabs}}.

local getArgs = require('Module:Arguments').getArgs
local htmlBuilder = require('Module:HtmlBuilder')
local yesno = require('Module:Yesno')

local p = {}

function p.main(frame)
	local args = getArgs(frame)
	return p._main(args)
end

function p._main(args)
	local makeTab = p.makeTab
	if not args[1] then
		return '<strong class="error">Error: no arguments provided</strong>'
	end
	local root = htmlBuilder.create()
	root.wikitext(yesno(args.NOTOC) and '__NOTOC__')
	local troot = root.tag('table')
	troot
		.css('background', args.Background or '#f8fcff')
		.css('text-align', 'center')
		.css('width', '100%')
		.css('border', '0')
		.css('border-spacing', '0')
		.css('border-collapse', 'collapse')
		.css('valign', 'top')
	local trow = troot.tag('tr')
	for i, link in ipairs(args) do
		if tonumber(args.This) == i then
			trow.wikitext(makeTab(link, true))
		else
			trow.wikitext(makeTab(link))
		end
	end
	trow.tag('td')
		.css('border-bottom', '2px solid #a3b1bf')
		.css('width', '3000px')
		.wikitext('&nbsp;')
		
	return tostring(root)
end

function p.makeTab(link, this)
	local root = htmlBuilder.create()
	root.tag('td')
		.css('padding', '0.5em')
		.css('background-color', this and 'white' or '#cee0f2')
		.cssText(not this and 'font-size:90%')
		.css('line-height', '0.95em')
		.css('border', 'solid 2px #a3b1bf')
		.cssText(this and 'border-bottom:0')
		.cssText(this and 'font-weight:bold')
		.css('white-space', 'nowrap')
		.css('width', '20px')
		.wikitext(link)
		.done()
	.tag('td')
		.css('border-bottom', '2px solid #a3b1bf')
		.css('width', '3px')
		.wikitext('&nbsp;')
	return tostring(root)
end

return p