Mô đun:Lua banner - Wikiwand
For faster navigation, this Iframe is preloading the Wikiwand page for Mô đun:Lua banner.

Mô đun:Lua banner

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

Mô đun này thực hiện bản mẫu ((lua)).

Cách sử dụng từ wikitext

This module cannot be used directly from wikitext. It can only be used through the ((lua)) template. Please see the template page for documentation.

Cách sử dụng từ Mô đun Lua

To use this module from other Lua modules, first load the module.

local mLuaBanner = require('Mô đun:Lua banner')

You can then generate a side box using the _main function.


The args variable should be a table containing the arguments to pass to the module. To see the different arguments that can be specified and how they affect the module output, please refer to the ((lua)) template documentation.

-- Mô đun này thực hiện bản mẫu ((lua)).
local yesno = require('Mô đun:Yesno')
local mList = require('Mô đun:List')
local mTableTools = require('Mô đun:TableTools')
local mMessageBox = require('Mô đun:Message box')

local p = {}

function p.main(frame)
	local origArgs = frame:getParent().args
	local args = {}
	for k, v in pairs(origArgs) do
		v = v:match('^%s*(.-)%s*$')
		if v ~= '' then
			args[k] = v
	return p._main(args)

function p._main(args)
	local modules = mTableTools.compressSparseArray(args)
	local box = p.renderBox(modules)
	local trackingCategories = p.renderTrackingCategories(args, modules)
	return box .. trackingCategories

function p.renderBox(modules)
	local boxArgs = {}
	if #modules < 1 then
		boxArgs.text = '<strong class="error">Lỗi: không có mô đun nào được gọi ra</strong>'
		local moduleLinks = {}
		for i, module in ipairs(modules) do
			moduleLinks[i] = string.format('[[:%s]]', module)
			local maybeSandbox = mw.title.new(module .. '/sandbox')
			if maybeSandbox.exists then
				moduleLinks[i] = moduleLinks[i] .. string.format(' ([[:%s|chỗ thử]])', maybeSandbox.fullText)
		local moduleList = mList.makeList('bulleted', moduleLinks)
		local title = mw.title.getCurrentTitle()
		if title.subpageText == "doc" then
			title = title.basePageTitle
		if title.contentModel == "Scribunto" then
			boxArgs.text = 'Mô đun này phụ thuộc vào các mô đun sau:' .. moduleList
			boxArgs.text = 'Bản mẫu này sử dụng [[:en:Wikipedia:Lua|Lua]]:\n' .. moduleList
	boxArgs.type = 'notice'
	boxArgs.small = true
	boxArgs.image = '[[Tập tin:Lua-logo-nolabel.svg|30px|alt=|link=]]'
	return mMessageBox.main('mbox', boxArgs)

function p.renderTrackingCategories(args, modules, titleObj)
	if yesno(args.nocat) then
		return ''

	local cats = {}

	-- Error category
	if #modules < 1 then
		cats[#cats + 1] = 'Bản mẫu Lua có lỗi'

	-- Lua templates category
	titleObj = titleObj or mw.title.getCurrentTitle()
	local subpageBlacklist = {
		doc = true,
		sandbox = true,
		sandbox2 = true,
		testcases = true
	if not subpageBlacklist[titleObj.subpageText] then
		local protCatName
		if titleObj.namespace == 10 then
			local category = args.category
			if not category then
				local categories = {
					['Mô đun:String'] = 'Bản mẫu dựa trên ngôn ngữ Lua String',
					['Mô đun:Math'] = 'Bản mẫu dựa trên ngôn ngữ Lua Math',
					['Mô đun:BaseConvert'] = 'Bản mẫu dựa trên ngôn ngữ mô đun Lua BaseConvert',
					['Mô đun:Citation'] = 'Bản mẫu chú thích dựa trên ngôn ngữ Lua'
				categories['Mô đun:Citation/CS1'] = categories['Mô đun:Citation']
				category = modules[1] and categories[modules[1]]
				category = category or 'Bản mẫu dựa trên ngôn ngữ Lua'
			cats[#cats + 1] = category
			protCatName = "Bản mẫu sử dụng mô đun Lua được bảo vệ"
		elseif titleObj.namespace == 828 then
			protCatName = "Mô đun phụ thuộc vào mô đun được bảo vệ"
		if not args.noprotcat and protCatName then
			local protLevels = {
				autoconfirmed = 1,
				extendedconfirmed = 2,
				templateeditor = 3,
				sysop = 4
			local currentProt
			if titleObj.id ~= 0 then
				-- id is 0 (page does not exist) if am previewing before creating a template.
				currentProt = titleObj.protectionLevels["edit"][1]
			if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end
			for i, module in ipairs(modules) do
				if module ~= "WP:libraryUtil" then
					local moduleProt = mw.title.new(module).protectionLevels["edit"][1]
					if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end
					if moduleProt < currentProt then
						cats[#cats + 1] = protCatName
	for i, cat in ipairs(cats) do
		cats[i] = string.format('[[Thể loại:%s]]', cat)
	return table.concat(cats)

return p
{{bottomLinkPreText}} {{bottomLinkText}}
Mô đun:Lua banner
Listen to this article