Wiki - KEONHACAI COPA

Mô đun:Lockbox

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

Mô-đun này truyền tải các bản mẫu có tên được đặt làm tham số để kích hoạt khóa theo tầng.

Sử dụng[sửa mã nguồn]

{{#invoke:lockbox|lock|silent=1
 | X1
 | X2
 | X3
 | ...
}}

Xem thêm[sửa mã nguồn]

local export = {}

-- XXX: OUTRAGEOUS ABUSE OF SCRIBUNTO API
-- Generates a transclusion without incrementing the "expensive function" count
local generate_transclusion
do 
	local mock_title = mw.title.new(mw.title.getCurrentTitle().id)
	local getContent = mock_title.getContent
	function generate_transclusion(title)
		local full_text = type(title) == 'table' and title.fullText or title
		rawset(mock_title, 'fullText', full_text)
		getContent(mock_title)
	end
end

local function make_wikitext_warning(msg)
	return string.format('<strong class="warning">Cảnh báo: %s.</strong>', msg)
end

function export.lock(frame)
	local warnings, transclusion_list = {}, {}
	
	-- Check if the transcluding page is cascade-protected.
	--
	-- Only pages transcluded from a cascade-protected page appear in
	-- CASCADINGSOURCES, so normally we would not be able to tell if the lockbox
	-- itself is cascade-protected. To work around this, we generate a
	-- transclusion from the lockbox to itself, so that it will have an entry
	-- for itself in CASCADINGSOURCES.
	--
	-- We cannot generate this transclusion using the title object for the
	-- parent title (the lockbox), as if the lockbox is transcluded on another
	-- page, we will generate a transclusion *from* the lockbox *to* that page
	-- as well, and the page will be cascade-protected. Instead we generate it
	-- with the title object for the current title.
	--
	-- When the current title is the parent title (i.e. we are rendering the
	-- lockbox page), this creates the required entry in the link table in the
	-- database. When the current title is the grandparent title or up (i.e. we
	-- are rendering a page transcluding the lockbox), transclusions are only
	-- created from the page itself, not from the lockbox, and it is not
	-- cascade-protected.
	-- 
	-- This creates an extaneous self-transclusion for all pages using the
	-- module, but we treat that as a necessary evil.
	--
	-- XXX: there seems to be no way to check for cascading protection using a
	-- Scribunto API, so we have to use frame:preprocess with the
	-- CASCADINGSOURCES parser function.
	do
		mw.title.getCurrentTitle():getContent() -- Generate self-transclusion
		local parent_title = frame:getParent():getTitle()
		if frame:preprocess('{{CASCADINGSOURCES:' .. parent_title .. '}}') == '' then
			warnings[#warnings + 1] = make_wikitext_warning(string.format(
				'Trang "%s" không được khóa theo tầng',
				parent_title
			))
		end
	end

	-- Generate transclusions to the templates, and build the output list.
	for i, item in ipairs(frame.args) do
		item = mw.text.trim(item)
		local title = mw.title.new(item)
		if title then
			local ns = title.namespace
			local prefixed_text = title.prefixedText
			if ns == 0 then
				-- The item had no namespace text. If the item starts with a
				-- colon, assume it is a mainspace page. Otherwise, assume it is
				-- a template.
				if item:sub(1, 1) == ':' then
					generate_transclusion(title)
					table.insert(transclusion_list, '* [[' .. prefixed_text .. ']]')
				else
					generate_transclusion('Bản mẫu:' .. prefixed_text)
					table.insert(transclusion_list, '* [[Bản mẫu:' .. prefixed_text .. ']]')
				end
			elseif ns == 6 or ns == 14 then -- File or Category namespace
				generate_transclusion(title)
				table.insert(transclusion_list, '* [[:' .. prefixed_text .. ']]')
			else
				generate_transclusion(title)
				table.insert(transclusion_list, '* [[' .. prefixed_text .. ']]')
			end
		else
			warnings[#warnings + 1] = make_wikitext_warning(string.format(
				'Sai tiêu đề "%s" trong biến số #%d',
				item,
				i
			))
		end
	end

	if frame.args.silent then
		return ''
	else
		-- If there were any warnings, show them at the top. Then show the list
		-- of transcluded pages.
		local ret = ''
		if #warnings > 0 then
			if #warnings > 1 then
				for i, warning in ipairs(warnings) do
					warnings[i] = '* ' .. warning
				end
			end
			ret = ret .. table.concat(warnings, '\n') .. '\n\n'
		end
		return ret .. table.concat(transclusion_list, '\n')
	end
end

return export
Wiki - Keonhacai copa chuyên cung cấp kiến thức thể thao, keonhacai tỷ lệ kèo, bóng đá, khoa học, kiến thức hằng ngày được chúng tôi cập nhật mỗi ngày mà bạn có thể tìm kiếm tại đây có nguồn bài viết: https://vi.wikipedia.org/wiki/M%C3%B4_%C4%91un:Lockbox