跳转到内容

模組:Pages with authority control identifiers

维基百科,自由的百科全书

这是本页的一个历史版本,由Shizhao留言 | 贡献2018年9月14日 (五) 13:43 建立内容为“require('Module:No globals') local p = {} local ac_conf = require('Module:Authority control').conf local currentTitle = mw.title.getCurrentTitle()…”的新页面)编辑。这可能和当前版本存在着巨大的差异。

(差异) ←上一修订 | 最后版本 (差异) | 下一修订→ (差异)
require('Module:No globals')

local p = {}
local ac_conf = require('Module:Authority control').conf
local currentTitle = mw.title.getCurrentTitle()
local title = currentTitle.text
local isCat = (currentTitle.namespace == 14)

local function whichTOC( frame )
	local pageCount = mw.site.stats.pagesInCategory(title, 'pages')
	if pageCount >= 5000 then
		return frame:expandTemplate{ title = 'Large category TOC' }
	elseif pageCount > 400 then
		return frame:expandTemplate{ title = 'Category TOC', args = { align = 'center' } }
	end
	return ''
end

--For use in [[Category:Pages with authority control information]],
--   i.e. on [[Category:Pages with VIAF identifiers]]
local function pages( frame, id )
	for _, conf in pairs( ac_conf ) do
		if conf[1] == id or (conf[1] == 'MBA' and id == 'MusicBrainz') then
			local link = conf[2] --not used locally yet
			local txCatMore = frame:expandTemplate{ title = 'Cat more', args = {'Wikipedia:Authority control'} }
			local txWPCat = frame:expandTemplate{ title = 'Wikipedia category' }
			local outString = txCatMore..txWPCat..'\n'..
					'[[Category:Pages with authority control information|'..id..']]'
			return outString
		end
	end
	return ''
end

--For use in [[Category:Miscellaneous pages with authority control information]],
--   i.e. on [[Category:Miscellaneous pages with VIAF identifiers]]
local function misc( frame, id )
	for _, conf in pairs( ac_conf ) do
		if conf[1] == id or (conf[1] == 'MBA' and id == 'MusicBrainz') then
			local link = conf[2]
			local txCatExplain = frame:expandTemplate{ title = 'Category explanation', 
					args = { 'pages, other than main user pages or Wikipedia articles, using {{[[Template:Authority control|Authority control]]}} with '..link..' identifiers.' } }
			local txCatMore = frame:expandTemplate{ title = 'Cat more', args = {'Wikipedia:Authority control'} }
			local txEmptyCat = frame:expandTemplate{ title = 'Possibly empty category' }
			local txWPCat = frame:expandTemplate{ title = 'Wikipedia category', args = { hidden = 'yes', tracking = 'yes' } }
			local txTOC = whichTOC( frame )
			local outString = txCatExplain..txCatMore..txEmptyCat..txWPCat..txTOC..'\n'..
					'Pages in this category should only be added by [[Module:Authority control]].'..
					'[[Category:Pages with '..id..' identifiers]]'..
					'[[Category:Miscellaneous pages with authority control information|'..id..']]'
			return outString
		end
	end
	return ''
end

--For use in [[Category:User pages with authority control information]],
--   i.e. on [[Category:User pages with VIAF identifiers]]
local function user( frame, id )
	for _, conf in pairs( ac_conf ) do
		if conf[1] == id or (conf[1] == 'MBA' and id == 'MusicBrainz') then
			local link = conf[2] --not used locally yet
			local txCatMore = frame:expandTemplate{ title = 'Cat more', args = {'Wikipedia:Authority control'} }
			local txEmptyCat = frame:expandTemplate{ title = 'Possibly empty category' }
			local txWPCat = frame:expandTemplate{ title = 'Wikipedia category', args = { hidden = 'yes', tracking = 'yes' } }
			local txTOC = whichTOC( frame )
			local outString = txCatMore..txEmptyCat..txWPCat..txTOC..'\n'..
					'Pages in this category should only be added by [[Module:Authority control]].'..
					'[[Category:Pages with '..id..' identifiers]]'..
					'[[Category:User pages with authority control information|'..id..']]'
			return outString
		end
	end
	return ''
end

--For use in [[Category:Wikipedia articles with authority control information]],
--   i.e. on [[Category:Wikipedia articles with VIAF identifiers]]
local function wp( frame, id )
	for _, conf in pairs( ac_conf ) do
		if conf[1] == id or (conf[1] == 'MBA' and id == 'MusicBrainz') then
			local link = conf[2]
			local txCatExplain = frame:expandTemplate{ title = 'Category explanation', args = {'articles with '..link..' identifiers. Please do not add [[Wikipedia:Categorization#Subcategorization|subcategories]].'} }
			local txCatMore = frame:expandTemplate{ title = 'Cat more', args = {'Wikipedia:Authority control'} }
			local txEmptyCat = frame:expandTemplate{ title = 'Possibly empty category' }
			local txWPCat = frame:expandTemplate{ title = 'Wikipedia category', args = { hidden = 'yes', tracking = 'yes' } }
			local txTOC = whichTOC( frame )
			local outString = txCatExplain..txCatMore..txEmptyCat..txWPCat..txTOC..'\n'..
					'Pages in this category should only be added by [[Module:Authority control]].'..
					'[[Category:Pages with '..id..' identifiers]]'..
					'[[Category:Wikipedia articles with authority control information|'..id..']]'
			return outString
		end
	end
	return ''
end

--For use in [[Category:Wikipedia articles with faulty authority control information]],
--   i.e. on [[Category:Wikipedia articles with faulty authority control identifiers (VIAF)]]
local function wpfaulty( frame, id )
	for _, conf in pairs( ac_conf ) do
		if conf[1] == id or (conf[1] == 'MBA' and id == 'MusicBrainz') then
			local link = conf[2] --not used locally yet
			local param = conf[3]
			local txCatMore = frame:expandTemplate{ title = 'Cat more', args = {'Wikipedia:Authority control', 'd:Property:P'..param} }
			local txEmptyCat = frame:expandTemplate{ title = 'Possibly empty category' }
			local txWPCat = frame:expandTemplate{ title = 'Wikipedia category', args = { hidden = 'yes', tracking = 'yes' } }
			local txDirtyCat = frame:expandTemplate{ title = 'Polluted category' }
			local txTOC = whichTOC( frame )
			local outString = txCatMore..txEmptyCat..txWPCat..txDirtyCat..txTOC..'\n'..
					'Pages in this category should only be added by [[Module:Authority control]].'..
					'[[Category:Pages with '..id..' identifiers]]'..
					'[[Category:Wikipedia articles with faulty authority control information]]'
			return outString
		end
	end
	return ''
end

--Main/external call
function p.autoDetect( frame )
	if isCat then
		local pagesID    = mw.ustring.match(title, 'Pages with ([%w%.%-]+) identifiers')
		local miscID     = mw.ustring.match(title, 'Miscellaneous pages with ([%w%.%-]+) identifiers')
		local userID     = mw.ustring.match(title, 'User pages with ([%w%.%-]+) identifiers')
		local wpID       = mw.ustring.match(title, 'Wikipedia articles with ([%w%.%-]+) identifiers')
		local wpfaultyID = mw.ustring.match(title, 'Wikipedia articles with faulty authority control identifiers %(([%w%.%-]+)%)')

		if     pagesID    then return pages( frame, pagesID )
		elseif miscID     then return misc( frame, miscID )
		elseif userID     then return user( frame, userID )
		elseif wpID       then return wp( frame, wpID )
		elseif wpfaultyID then return wpfaulty( frame, wpfaultyID )
		end
	end
	return ''
end

return p