Ugrás a tartalomhoz

Modul:Navbar

Ellenőrzött
Ez a lap műszaki védett
A Wikipédiából, a szabad enciklopédiából

Navbar[mi ez?] • [dokumentáció: mutat, szerkeszt] • [tesztek: létrehozás]

Ez a modul az {{m-v-sz}}(?) sablon megvalósítása Luában. Elsődleges célja, hogy sablonszöveg mellett modulokban is könnyen el lehessen helyezni a navigációs hivatkozásokat.

require('strict')
local p = {}

local i18n = {
	mini	= {'m', 'v', 'sz'},
	plain	= {'megtekintés', 'vita', 'szerkesztés'},
	normal	= {'megnézi', 'vitatja', 'szerkeszti'}, -- a sablont
	title	= {'Mutasd ezt a sablont', 'A sablon vitalapja', 'A sablon szerkesztése'}
}

local getArgs

function p._navbar(args)
	local titleText = args[1] or (':' .. mw.getCurrentFrame():getParent():getTitle())
	local title = mw.title.new(mw.text.trim(titleText), 'Sablon');
	if not title then
		error(string.format('Érvénytelen név: „%s”', titleText))
	end

	local talkpage = title.talkPageTitle and title.talkPageTitle:fullUrl() or nil;
	local fontstyle = args['betűstílus'] or args.fontstyle
	local style = args['stílus'] or args.style
	local text
	if args.mini then
		text = i18n.mini
	elseif args.plain then
		text = i18n.plain
	else
		text = i18n.normal
	end

	local div = mw.html.create():tag('div')
	div
		:addClass('navbar')
		:addClass('noprint')
		:addClass('hlist')
		:addClass('plainlinks')
		-- <ul> gets out if <span>, so we have to work it around
		:css('display', args.nodiv and 'inline')
		:cssText(fontstyle)
		:css('font-size', 'xx-small')
		:cssText(style)

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

	div:wikitext(mw.getCurrentFrame():extensionTag('templatestyles', '', {src = 'hlist/styles.css'}))

	-- Internal link for Special:WhatLinksHere
	div
		:tag('span')
		:css('display', 'none')
		:wikitext(string.format('[[%s]]', title.fullText))

	local ul = div:tag('ul');

	ul
		:css('display', 'inline')
		:tag('li')
			:addClass('nv-view')
			:wikitext('[' .. title:fullUrl() .. ' ')
			:tag('span')
				:attr('title', i18n.title[1])
				:cssText(fontstyle)
				:wikitext(text[1])
				:done()
			:wikitext(']')
			:done()
		:wikitext(' ')
		:tag('li')
			:addClass('nv-talk')
			:wikitext(talkpage and '[' .. talkpage .. ' ')
			:tag('span')
				:attr('title', i18n.title[2])
				:cssText(fontstyle)
				:wikitext(text[2])
				:done()
			:wikitext(talkpage and ']')
			:done()
		:wikitext(' ')
		:tag('li')
			:addClass('nv-edit')
			:wikitext('[' .. title:fullUrl('action=edit') .. ' ')
			:tag('span')
				:attr('title', i18n.title[3])
				:cssText(fontstyle)
				:wikitext(text[3])
				:done()
			:wikitext(']');

	if not (args.mini or args.plain) then
		div
			:tag('span')
				:css('word-spacing', 0)
				:cssText(fontstyle)
				:wikitext(' a sablont');
	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