Mô đun:Navbar

Tài liệu mô đun[xem] [sửa] [lịch sử] [làm mới]

Đây là Lua thực hiện của {{Thanh điều hướng}}. Nó được sử dụng trong Mô đun: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..' bản mẫu này')
			:cssText(args.fontstyle)
			:wikitext(args.mini and mini or full)
			:done()
		:wikitext(l[3])
end

function p.brackets (position, c, args, div)
	if args.brackets then
		div
			:tag('span')
				:css('margin-'..position, '-0.125em')
				:cssText(args.fontstyle)
				:wikitext(c)
	end
end

function p._navbar(args)
	local show = {true, true, true, false, false, false}
	local titleArg = 1
	
	if args.collapsible then
		titleArg = 2
		if not args.plain then args.mini = 1 end
		if args.fontcolor then
			args.fontstyle = 'color:' .. args.fontcolor .. ';'
		end
		args.style = 'float:left; text-align:left'
	end
	
	if args.template then
		titleArg = 'template'
		show = {true, false, false, false, false, false}
		local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6, talk = 2, edit = 3, hist = 4, move = 5, watch = 6}
		for k,v in ipairs(require ('Mô đun: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
	
	local titleText = args[titleArg] or (':' .. mw.getCurrentFrame():getParent():getTitle())
	local title = mw.title.new(mw.text.trim(titleText), 'Template')
	if not title then
		error('Tiêu đề ' .. titleText .. ' không hợp lệ')
	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)

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

	if not (args.mini or args.plain) then
		div
			:tag('span')
				:css('word-spacing', 0)
				:cssText(args.fontstyle)
				:wikitext(args.text or 'Hộp này:')
				:wikitext(' ')
	end
	
	p.brackets('right', '[ ', args, div)
	
	ul = div:tag('ul')
	if show[1] then p.addItem('x', 'xem', title.fullText, 'Xem', args) end
	if show[2] then p.addItem('t', 'thảo luận', talkpage, 'Thảo luận', args) end
	if show[3] then p.addItem('s', 'sửa', title:fullUrl('action=edit'), 'Sửa', args, true) end
	if show[4] then p.addItem('l', 'sử', title:fullUrl('action=history'), 'Lịch sử của', args, true) end
	if show[5] then
		local move = mw.title.new ('Đặc_biệt:Di_chuyển')
		p.addItem('d', 'di chuyển', move:fullUrl('target='..title.fullText), 'Di chuyển', args, true) end
	if show[6] then p.addItem('td', 'theo dõi', title:fullUrl('action=watch'), 'Theo dõi', args, true) end
	
	p.brackets('left', ' ]', args, div)
	
	if args.collapsible then
		div
			:done()
		:tag('div')
			:css('font-size', '114%')
			:css('margin', args.mini and '0 4em' or '0 7em')
			:cssText(args.fontstyle)
			:wikitext(args[1])
	end

	return tostring(div:done())
end

function p.navbar(frame)
	if not getArgs then
		getArgs = require('Mô đun:Arguments').getArgs
	end
	return p._navbar(getArgs(frame))
end

return p
Chúng tôi bán
Bài viết liên quan
Polumnia Omnia - Lời oán than của kẻ ngu muội
Polumnia Omnia - Lời oán than của kẻ ngu muội
Đây là bản dịch lời của bài [Polumnia Omnia], cũng là bản nhạc nền chủ đạo cho giai đoạn 2 của Boss "Shouki no Kami, Kẻ Hoang Đàng".
Sự thật về Biểu tượng Ông Công, Ông Táo
Sự thật về Biểu tượng Ông Công, Ông Táo
Cứ mỗi năm nhằm ngày 23 tháng Chạp, những người con Việt lại sửa soạn mâm cơm "cúng ông Công, ông Táo"
Story Quest là 1 happy ending đối với Furina
Story Quest là 1 happy ending đối với Furina
Dạo gần đây nhiều tranh cãi đi quá xa liên quan đến Story Quest của Furina quá, mình muốn chia sẻ một góc nhìn khác rằng Story Quest là 1 happy ending đối với Furina.
Thuật toán A* - Thuật toán tìm đường đi ngắn nhất giữa hai điểm bất kì được Google Maps sử dụng
Thuật toán A* - Thuật toán tìm đường đi ngắn nhất giữa hai điểm bất kì được Google Maps sử dụng
Đây là thuật toán mình được học và tìm hiểu trong môn Nhập môn trí tuệ nhân tạo, mình thấy thuật toán này được áp dụng trong thực tế rất nhiều