« Module:Site officiel » : différence entre les versions

Une page de Wikipédia, l'encyclopédie libre.
Contenu supprimé Contenu ajouté
Zolo (discuter | contributions)
petite correction, apparemment les espaces Lua sont par défaut des  " ?
Zolo (discuter | contributions)
texte moins bizarre lorsque les valeurs viennent de Wikidata, et qu'il y en a plusieurs
Ligne 31 : Ligne 31 :
-- si pas d'URL, essayer Wikidata
-- si pas d'URL, essayer Wikidata
if not url and args.wikidata ~= 'non' then
if not url and args.wikidata ~= 'non' then
local val = Wikidata.formatAndCat{property = 'P856', displayformat = 'weblink', showntext = titre, showlang=true}
local links = Wikidata.getClaims{property = 'P856'}
if links and #links > 1 then -- s'il y a plusieurs liens, essayer de faire un truc un peu potable
if val then
return "Sites officiels : " .. Wikidata.formatAndCat{claims = links, property = 'P856', displayformat = 'weblink', showlang = true}
return val
end
if links then
return Wikidata.formatAndCat{claims = links, property = 'P856', displayformat = 'weblink', showntext = titre, showlang = true}
end
end
end
end

Version du 29 mars 2015 à 23:33

 Documentation[voir] [modifier] [historique] [purger]

Ce module est utilisé par le modèle {{Site officiel}}.

local Lien = { }

local Outils = require( 'Module:Outils' )
local Wikidata = require( 'Module:Wikidata' ) 
local Commun = require( 'Module:Biblio/Commun' )

local function caterreur(param)
	if mw.title.getCurrentTitle().namespace == 0 then
		return '[[Catégorie:Page du modèle Site officiel comportant une erreur|' .. string.upper(param or '?') .. ']]'
	else
		return ''
	end
end

function Lien.siteOfficiel( frame )
	local oldargs = Outils.extractArgs( frame )
	local args = {}
	for i, j in pairs(oldargs) do
		if j ~= '' then args[i] = j end
	end

	local titre = args['titre'] or args['title'] or 'Site officiel'
	local langue = args['langue']
	local url = args['url'] or args[2] or args[1]
	local erreurs = '' -- les messages d'erreurs sont ajoutés ici

	if (not langue) and (args[2]) then
		langue = args[1] 
	end
	
	-- si pas d'URL, essayer Wikidata
	if not url and args.wikidata ~= 'non' then
		local links = Wikidata.getClaims{property = 'P856'}
		if links and #links > 1 then -- s'il y a plusieurs liens, essayer de faire un truc un peu potable
			return "Sites officiels : " .. Wikidata.formatAndCat{claims = links, property = 'P856', displayformat = 'weblink', showlang = true}
		end
		if links then
			return  Wikidata.formatAndCat{claims = links, property = 'P856', displayformat = 'weblink', showntext = titre, showlang = true}
		end
	end
	
	-- si toujours pas, ajouter les catégories d'erreur et sortir
	if not url then
		erreurs = erreurs .. caterreur('url')
		return erreurs
	end

	-- nettoyage de l'URL
	url = string.gsub ( string.gsub ( url, '%[', '%%5B' ), '%]', '%%5D' )
	if not ( string.match( url, '^http' ) or string.match( url, '^//' ) ) then
			url = 'http://' .. url
	end
	
	-- formatage de la langue
	local indicLangue, codeLangue, erreurLangue = '', nil, nil -- langue telle qu'affichée dans le rendu final
	if langue then
		indicLangue, codeLangue, erreurLangue = Commun.indicationDeLangue2 ( args, validArg, langue )
		if erreurLangue then
			erreurs = erreurs .. caterreur('langue')
		end
	end

	return indicLangue .. ' [' .. url .. ' ' .. titre .. ']' .. erreurs
end

return Lien