Saltar para o conteúdo

Módulo:Navbar

Wikisource, a biblioteca livre
Documentação do módulo[ver] [editar] [histórico] [purgar]

Implementa a predefinição {{navbar}}. Consulte a documentação da predefinição para instruções de uso.

É um dos módulos que servem de requisito ao Módulo:Navbox.

local p = {}

local getArgs
local ul

function p.addItem (mini, full, link, descrip, args, url)
	local l
	if url then
		l = {'[', '', ']'}
	else
		l = {'[[', '|', ']]'}
	end
	ul:tag('li')
		:addClass('nv-'..full)
		:wikitext(l[1] .. link .. l[2])
		:tag(args.mini and 'abbr' or 'span')
			:attr('title', descrip..' esta predefinição')
			:cssText(args.fontstyle or args['fonteestilo'])
			:wikitext(args.mini and mini or full)
			:done()
		:wikitext(l[3])
end

function p.brackets (position, c, args, div)
	if args.brackets or args['parênteses retos'] or args['colchetes'] then
		div
			:tag('span')
				:css('margin-'..position, '-0.125em')
				:cssText(args.fontstyle or args['fonteestilo'])
				:wikitext(c)
	end
end

function p._navbar(args)
	local show = {true, true, true, false, false, false}
	local titleArg = 1
	
	if args.collapsible or args['flexível'] then
		titleArg = 2
		if not args.plain or not args.simples then args.mini = 1 end
		if args.fontcolor then
			if args.fontstyle then
				args.fontstyle = 'color:' .. args.fontcolor .. ';'
			else
				args['fonteestilo'] = 'color:' .. args['fontecor'] .. ';'
			end
		elseif args['fontecor'] then
			if args.fontstyle then
				args.fontstyle = 'color:' .. args['fontecor'] .. ';'
			else
				args['fonteestilo'] = 'color:' .. args['fontecor'] .. ';'
			end
		end
		if args.style then
			args.style = 'float:left; text-align:left'
		else
			args.estilo = 'float:left; text-align:left'
		end
	end
	
	if args.template then
		titleArg = 'template'
		show = {true, false, false, false, false, false}
		local index = {d = 2, e = 3, h = 4, m = 5, vi = 6, discutir = 2, editar = 3, hist = 4, mover = 5, vigiar = 6}
		for k, v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do
			local num = index[v]
			if num then show[num] = true end
		end
	elseif args['predefinição'] then
		titleArg = 'predefinição'
		show = {true, false, false, false, false, false}
		local index = {d = 2, e = 3, h = 4, m = 5, vi = 6, discutir = 2, editar = 3, hist = 4, mover = 5, vigiar = 6}
		for k, v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do
			local num = index[v]
			if num then show[num] = true end
		end
	end
	
	if args.noedit then show[3] = false end
	if args['nãoeditar'] then show[3] = false end

	local titleText = args[titleArg] or (':' .. mw.getCurrentFrame():getParent():getTitle())
	local title = mw.title.new(mw.text.trim(titleText), 'Predefinição')
	if not title then
		error('Título inválido ' .. titleText)
	end
	local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or ''
	
	local div = mw.html.create():tag('div')
	div
		:addClass('plainlinks')
		:addClass('hlist')
		:addClass('navbar')
		:cssText(args.style or args.estilo)

	if args.mini then div:addClass('mini') end

	if not (args.mini or args.plain or args.simples) then
		div
			:tag('span')
				:css('word-spacing', 0)
				:cssText(args.fontstyle or args['fonteestilo'])
				:wikitext(args.text or args.texto or 'Esta caixa:')
				:wikitext(' ')
	end
	
	p.brackets('right', '[ ', args, div)
	
	ul = div:tag('ul')
	if show[1] then p.addItem('v', 'ver', title.fullText, 'Ver', args) end
	if show[2] then p.addItem('d', 'discutir', talkpage, 'Discutir', args) end
	if show[3] then p.addItem('e', 'editar', title:fullUrl('action=edit'), 'Editar', args, true) end
	if show[4] then p.addItem('h', 'hist', title:fullUrl('action=history'), 'Histórico de', args, true) end
	if show[5] then
		local move = mw.title.new ('Special:Movepage')
		p.addItem('m', 'mover', move:fullUrl('target='..title.fullText), 'Mover', args, true) end
	if show[6] then p.addItem('vi', 'vigiar', title:fullUrl('action=watch'), 'Vigiar', args, true) end
	
	p.brackets('left', ' ]', args, div)
	
	if args.collapsible or args['flexível'] then
		div
			:done()
		:tag('div')
			:css('font-size', '114%')
			:css('margin', args.mini and '0 4em' or '0 7em')
			:cssText(args.fontstyle or args['fonteestilo'])
			:wikitext(args[1])
	end

	return tostring(div:done())
end

function p.navbar(frame)
	if not getArgs then
		getArgs = require('Module:Arguments').getArgs
	end
	return p._navbar(getArgs(frame))
end

return p
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy