Module:Interprojet

From Wikipedia

Documentation for this module may be created at Module:Interprojet/doc

local p = {}

local sites = { -- préfixe interwiki, liste des paramètres, label et id du site (pour Wikidata)
	{ 'w', { 'Wikipedia', 'w', 'wAutore' }, 'Wikipédia', 'frwiki' },
	{ 'q', { 'Wikiquote', 'q' }, 'Wikiquote', 'frwikiquote' },
	{ 'b', { 'Wikibooks', 'b' }, 'Wikibooks', 'frwikibooks' },
	{ 'commons', { 'commons', 'Commons', 'CommonsAutore' }, 'Commons', 'commonswiki' },
	{ 'd', { 'Wikidata', 'd' }, 'Wikidata', 'wikidatawiki' },
	{ 'wikispecies', { 'wikispecies', 'WikiSpecies' }, 'Wikispecies', 'wikispecieswiki' },
	{ 'n', { 'WikiNews', 'n' }, 'Wikinews', 'frwikinews' },
	{ 'v', { 'Wikiversity', 'v' }, 'Wikiversité', 'frwikiversity' },
	{ 'm', { 'm', 'meta' }, 'Meta', 'metawiki' },
	{ 'wikt', { 'WikTionary', 'wikt' }, 'Wiktionnaire', 'frwiktionary' },
	{ 'voy', { 'Wikivoyage', 'voy' }, 'Wikivoyage', 'frwikivoyage' }
}

function p.interprojet( frame )
	local frame = frame:getParent()
	local item = mw.wikibase.getEntityObject()

	local content = mw.html.create( 'div' )
		:attr( 'id', 'interProject' )
		:addClass( 'ws-noexport' )
		:css( 'display', 'none' )
		:css( 'speak', 'none' );

	for _, site in pairs( sites ) do
		local val = ''
		for _, param in pairs( site[2] ) do
			if val == '' and frame.args[param] ~= nil then
				val = frame.args[param]
			end
		end
		if val == '' and item ~= nil then
			if site[4] == 'wikidatawiki' then
				val = item.id or ''
			else
				val = item:getSitelink( site[4] ) or ''
			end
		end

		if val ~= '' then
			content:wikitext( '[[' .. site[1] .. ':' .. val .. '|' .. site[3] .. ']]\n\n' )
		end
	end

	return content:done()
end

return p