<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.moltenaether.com/w/index.php?action=history&amp;feed=atom&amp;title=Module%3AAuthority_control</id>
	<title>Module:Authority control - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.moltenaether.com/w/index.php?action=history&amp;feed=atom&amp;title=Module%3AAuthority_control"/>
	<link rel="alternate" type="text/html" href="https://wiki.moltenaether.com/w/index.php?title=Module:Authority_control&amp;action=history"/>
	<updated>2026-04-21T00:55:47Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://wiki.moltenaether.com/w/index.php?title=Module:Authority_control&amp;diff=18147&amp;oldid=prev</id>
		<title>Cyclops: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://wiki.moltenaether.com/w/index.php?title=Module:Authority_control&amp;diff=18147&amp;oldid=prev"/>
		<updated>2023-05-22T19:58:22Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:58, 22 May 2023&lt;/td&gt;
				&lt;/tr&gt;
&lt;!-- diff cache key buwiki:diff::1.12:old-18146:rev-18147 --&gt;
&lt;/table&gt;</summary>
		<author><name>Cyclops</name></author>
	</entry>
	<entry>
		<id>https://wiki.moltenaether.com/w/index.php?title=Module:Authority_control&amp;diff=18146&amp;oldid=prev</id>
		<title>wikipedia&gt;MSGJ: only check for additional items when additional=auto, add sitelinks to labels</title>
		<link rel="alternate" type="text/html" href="https://wiki.moltenaether.com/w/index.php?title=Module:Authority_control&amp;diff=18146&amp;oldid=prev"/>
		<updated>2023-05-16T11:07:20Z</updated>

		<summary type="html">&lt;p&gt;only check for additional items when additional=auto, add sitelinks to labels&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require('strict')&lt;br /&gt;
local p = {}&lt;br /&gt;
local configfile = 'Module:Authority control/config' -- default configuation module&lt;br /&gt;
local arg = mw.getCurrentFrame().args.config&lt;br /&gt;
if arg and arg~='' then&lt;br /&gt;
	configfile = 'Module:Authority control/config/' .. arg&lt;br /&gt;
end&lt;br /&gt;
local config&lt;br /&gt;
if mw.title.new(configfile).exists then&lt;br /&gt;
	config = mw.loadData(configfile)&lt;br /&gt;
else&lt;br /&gt;
	return error('Invalid configuration file',0)&lt;br /&gt;
end&lt;br /&gt;
local title = mw.title.getCurrentTitle()&lt;br /&gt;
local namespace = title.namespace&lt;br /&gt;
local testcases = title.subpageText == config.i18n.testcases&lt;br /&gt;
&lt;br /&gt;
local function needsAttention(sortkey)&lt;br /&gt;
	return '[[' .. config.i18n.category .. ':' .. config.i18n.attentioncat .. '|' .. sortkey .. title.text .. ']]'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function addCat(cat,sortkey)&lt;br /&gt;
	if cat and cat ~= '' and (namespace == 0 or namespace == 14 or testcases) then&lt;br /&gt;
		local redlinkcat = ''&lt;br /&gt;
		if testcases == false and mw.title.new(cat, 14).exists == false then&lt;br /&gt;
			redlinkcat = needsAttention('N')&lt;br /&gt;
		end&lt;br /&gt;
		if sortkey then&lt;br /&gt;
			cat = '[[' .. config.i18n.category .. ':'..cat..'|' .. sortkey .. title.text .. ']]'&lt;br /&gt;
		else&lt;br /&gt;
			cat = '[[' .. config.i18n.category .. ':'..cat..']]'&lt;br /&gt;
		end&lt;br /&gt;
		cat = cat .. redlinkcat&lt;br /&gt;
		return cat&lt;br /&gt;
	else&lt;br /&gt;
		return ''&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getCatForId(id,faulty)&lt;br /&gt;
	local cat = config.i18n.Articles_with .. ' '&lt;br /&gt;
	if faulty then cat = cat .. config.i18n.faulty .. ' ' end&lt;br /&gt;
	cat = cat .. id .. ' ' .. config.i18n.identifiers&lt;br /&gt;
	return addCat(cat)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getIdsFromWikidata(qid,property)&lt;br /&gt;
	local function getquals(statement,qualid)&lt;br /&gt;
		if statement.qualifiers and statement.qualifiers['P'..qualid] then&lt;br /&gt;
			return mw.wikibase.renderSnak(statement.qualifiers['P'..qualid][1])&lt;br /&gt;
		else&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local ids = {}&lt;br /&gt;
	if qid then&lt;br /&gt;
		for _, statement in ipairs(mw.wikibase.getBestStatements(qid,property)) do&lt;br /&gt;
			if statement.mainsnak.datavalue then&lt;br /&gt;
				local val = statement.mainsnak.datavalue.value&lt;br /&gt;
				if val then&lt;br /&gt;
					local namedas = getquals(statement,1810) or getquals(statement,742) or ''&lt;br /&gt;
					table.insert(ids,{id=val,name=namedas})&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return ids&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local _makelink = function(conf,val,nextid,qid) --validate values and create a link&lt;br /&gt;
	local function tooltip(text,label)&lt;br /&gt;
		if label and label~='' then&lt;br /&gt;
			return mw.getCurrentFrame():expandTemplate{title = &amp;quot;Tooltip&amp;quot;, args = {text,label}}&lt;br /&gt;
		else&lt;br /&gt;
			return text&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local link&lt;br /&gt;
	if nextid==1 then&lt;br /&gt;
		if conf.prefix then&lt;br /&gt;
			link = '*' .. conf.prefix .. '\n**'&lt;br /&gt;
		else&lt;br /&gt;
			link = '*'&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		link = '\n**'&lt;br /&gt;
	end&lt;br /&gt;
	local valid_value = false&lt;br /&gt;
	if conf.customlink then -- use function to validate and generate link&lt;br /&gt;
		local label = nextid&amp;gt;1 and nextid&lt;br /&gt;
		local newlink= require(config.auxiliary)[conf.customlink](val.id,label)&lt;br /&gt;
		if newlink then&lt;br /&gt;
			link = link .. newlink&lt;br /&gt;
			valid_value = true&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		if conf.pattern then -- use pattern to determine validity if defined&lt;br /&gt;
			valid_value = string.match(val.id,'^'..conf.pattern..'$')&lt;br /&gt;
		elseif conf.patterns then&lt;br /&gt;
			for _,pattern in ipairs(conf.patterns) do&lt;br /&gt;
				valid_value = val.id:match('^'..pattern..'$')&lt;br /&gt;
				if valid_value then break end&lt;br /&gt;
			end&lt;br /&gt;
		elseif conf.valid then -- otherwise use function to determine validity&lt;br /&gt;
			valid_value = require(config.auxiliary)[conf.valid](val.id)&lt;br /&gt;
		else -- no validation possible&lt;br /&gt;
			valid_value = val.id&lt;br /&gt;
		end&lt;br /&gt;
		if valid_value then&lt;br /&gt;
			local newlink&lt;br /&gt;
			local label = conf.label&lt;br /&gt;
			if not label or nextid&amp;gt;1 then&lt;br /&gt;
				label = tostring(nextid)&lt;br /&gt;
			end&lt;br /&gt;
			if conf.link then&lt;br /&gt;
				valid_value = valid_value:gsub('%%', '%%%%')&lt;br /&gt;
				newlink = '[' .. mw.ustring.gsub(conf.link,'%$1',valid_value) .. ' ' .. label .. ']'&lt;br /&gt;
			else&lt;br /&gt;
				newlink = valid_value&lt;br /&gt;
			end&lt;br /&gt;
			link = link .. '&amp;lt;span class=&amp;quot;uid&amp;quot;&amp;gt;'..tooltip(newlink,val.name)..'&amp;lt;/span&amp;gt;'&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if valid_value then&lt;br /&gt;
		link = link .. getCatForId(conf.category or conf[1])&lt;br /&gt;
	else&lt;br /&gt;
		--local preview = require(&amp;quot;Module:If preview&amp;quot;)&lt;br /&gt;
		local wdlink = qid and '[[:wikidata:' .. qid .. '#P' .. conf.property .. ']]' or ''&lt;br /&gt;
		link = link .. '[[File:' .. config.i18n.warningicon .. '|20px|frameless|link=' .. wdlink .. '|' .. config.i18n.The .. ' ' .. conf[1] .. ' ' .. config.i18n.identifier .. ' ' .. val.id .. ' ' .. config.i18n.isnotvalid .. '.]]'&lt;br /&gt;
		if conf.errorcat then&lt;br /&gt;
			link = link .. addCat(conf.errorcat)&lt;br /&gt;
		else&lt;br /&gt;
			link = link .. getCatForId(conf.category or conf[1],true)&lt;br /&gt;
		end&lt;br /&gt;
		link = link .. addCat(config.i18n.allfaultycat,conf[1])-- .. preview._warning({'The '..conf[1]..' id '..val..' is not valid.'})&lt;br /&gt;
	end&lt;br /&gt;
	return link&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[==========================================================================]]&lt;br /&gt;
--[[                                   Main                                   ]]&lt;br /&gt;
--[[==========================================================================]]&lt;br /&gt;
function p.authorityControl(frame)&lt;br /&gt;
	local function resolveQID(qid)&lt;br /&gt;
		if qid then&lt;br /&gt;
			qid = 'Q'..mw.ustring.gsub(qid, '^[Qq]', '')&lt;br /&gt;
			if mw.wikibase.isValidEntityId(qid) and mw.wikibase.entityExists(qid) then&lt;br /&gt;
				local sitelink = mw.wikibase.getSitelink(qid)&lt;br /&gt;
				if sitelink then&lt;br /&gt;
					return mw.wikibase.getEntityIdForTitle(sitelink) or mw.wikibase.getEntity(qid).id&lt;br /&gt;
				end&lt;br /&gt;
				return mw.wikibase.getEntity(qid).id&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local conf = config.config&lt;br /&gt;
	local parentArgs = frame:getParent().args&lt;br /&gt;
	local auxCats = ''&lt;br /&gt;
	local rct = false -- boolean to track if there are any links to be returned&lt;br /&gt;
	local qid,topic&lt;br /&gt;
	if namespace == 0 then&lt;br /&gt;
		qid = mw.wikibase.getEntityIdForCurrentPage()&lt;br /&gt;
	end&lt;br /&gt;
	if qid then -- article is connected to Wikidata item&lt;br /&gt;
		if parentArgs.qid and (resolveQID(parentArgs.qid) ~= qid) then -- non-matching qid parameter&lt;br /&gt;
			auxCats = auxCats .. needsAttention('D')&lt;br /&gt;
		end&lt;br /&gt;
	else -- page is not connected to any Wikidata item&lt;br /&gt;
		qid = resolveQID(parentArgs.qid) -- check qid parameter if no wikidata item is connected&lt;br /&gt;
		if qid then -- qid parameter is valid, set topic to display&lt;br /&gt;
			topic = mw.wikibase.getLabel(qid)&lt;br /&gt;
			if topic then&lt;br /&gt;
				if mw.ustring.lower(title.subpageText) == mw.ustring.lower(topic) then -- suppress topic display if subpagename equals topic up to case change&lt;br /&gt;
					topic = nil&lt;br /&gt;
				end&lt;br /&gt;
				if topic and mw.wikibase.getSitelink(qid) then -- make wikilink to article&lt;br /&gt;
					topic = '[[' .. mw.wikibase.getSitelink(qid) .. '|' .. topic .. ']]'&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				auxCats = auxCats .. needsAttention('L')&lt;br /&gt;
			end&lt;br /&gt;
		elseif parentArgs.qid and parentArgs.qid~='' then -- invalid qid has been supplied, add to tracking cat&lt;br /&gt;
			auxCats = auxCats .. needsAttention('Q')&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local qids = {} -- setup any additional QIDs&lt;br /&gt;
	if parentArgs.additional=='auto' and qid then  -- check P527 for parts to add additional qids&lt;br /&gt;
		local checkparts = function(property)&lt;br /&gt;
			local parts = mw.wikibase.getBestStatements(qid,property)&lt;br /&gt;
			if parts then&lt;br /&gt;
				for _,part in ipairs(parts) do&lt;br /&gt;
					if part.mainsnak.datavalue and part.mainsnak.datavalue.value.id then&lt;br /&gt;
						local resolvedqid = resolveQID(part.mainsnak.datavalue.value.id)&lt;br /&gt;
						if resolvedqid then&lt;br /&gt;
							table.insert(qids,resolvedqid)&lt;br /&gt;
		end end end end end&lt;br /&gt;
		for _,part in ipairs(config.auto_additional) do&lt;br /&gt;
			checkparts('P'..tostring(part))&lt;br /&gt;
		end&lt;br /&gt;
	elseif parentArgs.additional and parentArgs.additional ~= '' then&lt;br /&gt;
		for _,v in ipairs(mw.text.split(parentArgs.additional,&amp;quot;%s*,%s*&amp;quot;)) do&lt;br /&gt;
			v = resolveQID(v)&lt;br /&gt;
			if v then&lt;br /&gt;
				if v == qid then -- duplicate of qid parameter&lt;br /&gt;
					auxCats = auxCats .. needsAttention('R')&lt;br /&gt;
				end&lt;br /&gt;
				table.insert(qids,v)&lt;br /&gt;
			else -- invalid QID specified&lt;br /&gt;
				auxCats = auxCats .. needsAttention('A')&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local sections = {}&lt;br /&gt;
	local localparams = false&lt;br /&gt;
	local numsections = 0&lt;br /&gt;
	for _,_ in ipairs(config.sections) do numsections = numsections + 1 end&lt;br /&gt;
	for _ = 1,#qids+numsections do table.insert(sections,{}) end&lt;br /&gt;
	local qslink = '' -- setup link to add using QuickStatements&lt;br /&gt;
&lt;br /&gt;
	-- check which identifiers to show/suppress in template&lt;br /&gt;
	local show = {} -- setup list&lt;br /&gt;
	local showall = true&lt;br /&gt;
	local function stripP(pid)&lt;br /&gt;
		if pid:match(&amp;quot;^[Pp]%d+$&amp;quot;) then&lt;br /&gt;
			pid = mw.ustring.gsub(pid,'[Pp]','') --strip P from property number&lt;br /&gt;
		end&lt;br /&gt;
		if pid:match(&amp;quot;^%d+$&amp;quot;) then&lt;br /&gt;
			return tonumber(pid)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local function addshowlist(list)&lt;br /&gt;
		if list and list ~= '' then&lt;br /&gt;
			for _,v in ipairs(mw.text.split(string.lower(list),&amp;quot;%s*,%s*&amp;quot;)) do&lt;br /&gt;
				local vprop = stripP(v)&lt;br /&gt;
				if vprop then -- e.g. show=P214 to show one particular property&lt;br /&gt;
					show[vprop] = true&lt;br /&gt;
				else -- e.g. show=arts to use whitelist&lt;br /&gt;
					if config.whitelists[v] then&lt;br /&gt;
						for _,w in ipairs(config.whitelists[v].properties) do&lt;br /&gt;
							show[w] = true&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			showall = false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	addshowlist(frame.args.show) -- check show= parameter on wrapper template&lt;br /&gt;
	addshowlist(parentArgs.show or parentArgs.country) -- check show parameter on article template&lt;br /&gt;
	if parentArgs.suppress then&lt;br /&gt;
		local suppresslist = mw.text.split(parentArgs.suppress,&amp;quot;%s*,%s*&amp;quot;) -- split parameter by comma&lt;br /&gt;
		for _,v in ipairs(suppresslist) do&lt;br /&gt;
			v = stripP(string.upper(v))&lt;br /&gt;
			if v then&lt;br /&gt;
				show[v] = false&lt;br /&gt;
				auxCats = auxCats .. '[[' .. config.i18n.category .. ':' .. config.i18n.suppressedcat .. ']]'&lt;br /&gt;
			else&lt;br /&gt;
				auxCats = auxCats .. needsAttention('P')&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local function makeSections(qid,addit)&lt;br /&gt;
		local tval = {}&lt;br /&gt;
		local function parameter_is_used(property)&lt;br /&gt;
			local used = false&lt;br /&gt;
			if property then&lt;br /&gt;
				if tval[property] then&lt;br /&gt;
					if tval[property][1] then&lt;br /&gt;
						used = true&lt;br /&gt;
					end&lt;br /&gt;
				elseif tval[property] == false then -- property has been manually suppressed&lt;br /&gt;
					used = true&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			return used&lt;br /&gt;
		end&lt;br /&gt;
		for _, params in ipairs(conf) do&lt;br /&gt;
			tval[params.property] = getIdsFromWikidata(qid, 'P' .. params.property) -- setup table for values with property number as key&lt;br /&gt;
			local showb = true&lt;br /&gt;
			if (show[params.property] == nil) and (show[string.upper(params[1])] == nil ) then&lt;br /&gt;
				showb = showall -- if not specified then depends on showall&lt;br /&gt;
			elseif (show[params.property] == false) or (show[string.upper(params[1])] == false) then -- if either are false then id will be suppressed&lt;br /&gt;
				showb = false&lt;br /&gt;
			end&lt;br /&gt;
			if not showb then&lt;br /&gt;
				tval[params.property] = false -- indicates the identifier is suppressed&lt;br /&gt;
			elseif not addit then&lt;br /&gt;
				local val = parentArgs[mw.ustring.lower(params[1])] or parentArgs[params[1]]&lt;br /&gt;
				if val and val~='' then -- add local parameter to list if not already in&lt;br /&gt;
					localparams = true&lt;br /&gt;
					local bnew = true&lt;br /&gt;
					for _, w in pairs(tval[params.property]) do&lt;br /&gt;
						if val == w.id then&lt;br /&gt;
							bnew = false&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
					if bnew then -- add new value to table&lt;br /&gt;
						if qid then&lt;br /&gt;
							qslink = qslink .. '%7C%7C' .. qid .. '%7CP' .. params.property .. '%7C%22' .. mw.uri.encode(val,&amp;quot;PATH&amp;quot;) .. '%22%7CS143%7CQ328'&lt;br /&gt;
						end&lt;br /&gt;
						table.insert(tval[params.property],{id=val,name=''})&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			local suppress = false&lt;br /&gt;
			if params.suppressedbyproperty then&lt;br /&gt;
				for _,sc in ipairs(params.suppressedbyproperty) do&lt;br /&gt;
					if parameter_is_used(sc) then&lt;br /&gt;
						suppress = true&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if tval[params.property] ~= false and not suppress then&lt;br /&gt;
				local tlinks = {} -- setup table for links&lt;br /&gt;
				local nextIdVal = 1&lt;br /&gt;
				local row = ''&lt;br /&gt;
				for _,val in ipairs(tval[params.property]) do&lt;br /&gt;
					local link = _makelink(params,val,nextIdVal,qid)&lt;br /&gt;
					row = row .. link&lt;br /&gt;
					table.insert(tlinks,link)&lt;br /&gt;
					nextIdVal = nextIdVal + 1&lt;br /&gt;
				end&lt;br /&gt;
				if nextIdVal&amp;gt;=2 then&lt;br /&gt;
					row = row .. '\n'&lt;br /&gt;
					table.insert(sections[addit or params.section],row)&lt;br /&gt;
					rct = true&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local function pencil(qid)&lt;br /&gt;
		if not qid then&lt;br /&gt;
			return ''&lt;br /&gt;
		end&lt;br /&gt;
		local args = { pid = 'identifiers' } -- #target the list of identifiers&lt;br /&gt;
		args.qid = qid&lt;br /&gt;
		return require('Module:EditAtWikidata')._showMessage(args)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	makeSections(qid,false)&lt;br /&gt;
	for c = 1,#qids do&lt;br /&gt;
		makeSections(qids[c],numsections+c)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--configure Navbox&lt;br /&gt;
	local outString = ''&lt;br /&gt;
	if rct or localparams then -- there is at least one link to display&lt;br /&gt;
		local Navbox = require('Module:Navbox')&lt;br /&gt;
		local sect,lastsect = 0,0&lt;br /&gt;
		local navboxArgs = {&lt;br /&gt;
			name  = 'Authority control',&lt;br /&gt;
			navboxclass = 'authority-control',&lt;br /&gt;
			bodyclass = 'hlist',&lt;br /&gt;
			state = parentArgs.state or config.i18n.autocollapse,&lt;br /&gt;
			navbar = 'off'&lt;br /&gt;
		}&lt;br /&gt;
		for c=1,numsections+#qids do&lt;br /&gt;
			if #sections[c] ~= 0 then -- section is non-empty&lt;br /&gt;
				sect = sect + 1&lt;br /&gt;
				lastsect = c&lt;br /&gt;
				local sectname&lt;br /&gt;
				if c &amp;lt;= numsections then -- regular section&lt;br /&gt;
					sectname = config.sections[c].name&lt;br /&gt;
				else -- section from additional qid&lt;br /&gt;
					local qid = qids[c-numsections]&lt;br /&gt;
					local label,sitelink = mw.wikibase.getLabel(qid), mw.wikibase.getSitelink(qid)&lt;br /&gt;
					if label then&lt;br /&gt;
						if sitelink then -- make wikilink to article&lt;br /&gt;
							sectname = '[[' .. sitelink .. '|' .. label .. ']]'&lt;br /&gt;
						else&lt;br /&gt;
							sectname = label&lt;br /&gt;
						end&lt;br /&gt;
					else&lt;br /&gt;
						sectname = qid&lt;br /&gt;
						auxCats = auxCats .. needsAttention('L')&lt;br /&gt;
					end&lt;br /&gt;
					sectname = sectname .. pencil(qid)&lt;br /&gt;
				end&lt;br /&gt;
				navboxArgs['group' .. c] = sectname&lt;br /&gt;
				navboxArgs['list' .. c] = table.concat(sections[c])&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if localparams then&lt;br /&gt;
			lastsect = lastsect + 1&lt;br /&gt;
			sect = sect + 1&lt;br /&gt;
			navboxArgs['group' .. lastsect] = config.i18n.warning&lt;br /&gt;
			local warning = frame:expandTemplate{title = config.i18n.errortemplate, args = {config.i18n.localparams}}&lt;br /&gt;
			if qslink ~= '' then&lt;br /&gt;
				warning = warning .. ' ' .. config.i18n.movetowd .. '&amp;lt;span class=&amp;quot;qs autoconfirmed-show&amp;quot;&amp;gt;&amp;amp;#32;[[File:Commons to Wikidata QuickStatements.svg|20px|link=https://quickstatements.toolforge.org/#/v1=' .. qslink .. '|' .. config.i18n.addtowd .. ']]&amp;lt;/span&amp;gt;'&lt;br /&gt;
			elseif not qid then&lt;br /&gt;
				if namespace == 0 then&lt;br /&gt;
					warning = warning .. ' ' .. config.i18n.connecttowd&lt;br /&gt;
				elseif namespace==14 or namespace==2 or namespace==118 then&lt;br /&gt;
					warning = warning .. ' ' .. config.i18n.qidcode&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			navboxArgs['list' .. lastsect] = warning&lt;br /&gt;
		end&lt;br /&gt;
		if topic then -- display in expanded form with topic&lt;br /&gt;
			navboxArgs.title = config.i18n.aclink .. ' &amp;amp;ndash; ' .. topic .. pencil(qid)&lt;br /&gt;
		elseif sect == 1 then -- special display when only one section&lt;br /&gt;
			if lastsect &amp;lt;= numsections then&lt;br /&gt;
				if config.sections[lastsect].hidelabelwhenalone then -- no special label when only general or other IDs are present&lt;br /&gt;
					navboxArgs['group' .. lastsect] = config.i18n.aclink .. pencil(qid)&lt;br /&gt;
				else -- other regular section&lt;br /&gt;
					navboxArgs['group' .. lastsect] = config.i18n.aclink .. ': ' .. navboxArgs['group' .. lastsect] .. pencil(qid)&lt;br /&gt;
				end&lt;br /&gt;
			else -- section from additional qid&lt;br /&gt;
				navboxArgs['group' .. lastsect] = config.i18n.aclink .. ': ' .. navboxArgs['group' .. lastsect]&lt;br /&gt;
			end&lt;br /&gt;
		else -- add title to navbox&lt;br /&gt;
			navboxArgs.title = config.i18n.aclink .. pencil(qid)&lt;br /&gt;
		end&lt;br /&gt;
		outString = Navbox._navbox(navboxArgs)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if parentArgs.state then&lt;br /&gt;
		if (parentArgs.state ~= config.i18n.collapsed) and (parentArgs.state ~= config.i18n.expanded) and (parentArgs.state ~= config.i18n.autocollapse) then --invalid state parameter&lt;br /&gt;
			auxCats = auxCats .. needsAttention('S')&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if testcases then&lt;br /&gt;
		auxCats = mw.ustring.gsub(auxCats, '(%[%[)(' .. config.i18n.category .. ')', '%1:%2') --for easier checking&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--out&lt;br /&gt;
	outString = outString..auxCats&lt;br /&gt;
	if namespace ~= 0 then&lt;br /&gt;
		outString = mw.ustring.gsub(outString,'(%[%[)(' .. config.i18n.category .. ':' .. config.i18n.Articles .. ')([^%|%]]+)%|?[^%|%]]*(%]%])','%1:%2%3%4')&lt;br /&gt;
		outString = mw.ustring.gsub(outString,'(%[%[)(' .. config.i18n.category .. ':' .. config.i18n.All_articles .. ')([^%|%]]+)%|?[^%|%]]*(%]%])','%1:%2%3%4')&lt;br /&gt;
	end&lt;br /&gt;
	local check = require('Module:Check for unknown parameters')._check&lt;br /&gt;
	local sortkey&lt;br /&gt;
	if namespace == 0 then&lt;br /&gt;
		sortkey = '*' .. title.text&lt;br /&gt;
	else&lt;br /&gt;
		sortkey = title.fullText&lt;br /&gt;
	end&lt;br /&gt;
	outString = outString .. check({&lt;br /&gt;
		['unknown'] = '[[' .. config.i18n.category .. ':' .. config.i18n.pageswithparams .. '|' .. sortkey .. ']]',&lt;br /&gt;
		['preview'] = config.i18n.previewwarning, 'show', 'country', 'suppress', 'additional', 'qid', 'state'&lt;br /&gt;
		}, parentArgs)&lt;br /&gt;
	return outString&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.makelink = function(conf,val,nextid,qid)&lt;br /&gt;
	return _makelink(conf,val,nextid,qid)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>wikipedia&gt;MSGJ</name></author>
	</entry>
</feed>