Aller au contenu

Module:Site officiel

Cette page fait l’objet d’une mesure de semi-protection étendue.
Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 23 février 2018 à 05:08 et modifiée en dernier par Od1n (discuter | contributions) (corrige utilisation de Module:Correction syntaxique, prévu pour utilisation dans modèle, ça fonctionne avec les clés et non les valeurs (refs 140507841, 140509470)). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

 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 Langue = require "Module:Langue"
local Verif = require "Module:Correction syntaxique"

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
		local trimmed = mw.text.trim(j)
		if trimmed ~= '' then
			args[i] = trimmed
		end
	end

	local erreurs -- les messages d'erreurs sont ajoutés ici
	local erreursarguments = Verif.verif(args, {titre='', title='', [1]='', [2]='', langue='', lang='', url='', wikidata=''}, 'Modèle Site officiel avec un paramètre inconnu‎')
	erreurs = erreursarguments or ''

	local titredefaut = 'Site officiel'
	local titre = args['titre'] or args['title'] or titredefaut
	local langue = args['langue'] or args['lang']
	local url = args['url'] or args[2] or args[1]


	if (not langue) and (args[2]) then
		langue = args[1]
	end
	
	-- si pas d'URL, essayer Wikidata, et si ça marche, sortir de ce module
	if not url and (args.wikidata ~= '-') then
		local links = Wikidata.getClaims{entity = args.wikidata, property = 'P856', excludespecial = true}
		if links and (#links > 1) then
			if titre == titredefaut then
				titre = nil
			end
			return "Sites officiels : " .. Wikidata.formatAndCat{claims = links, property = 'P856', displayformat = 'weblink', showlang = true, excludespecial = true}
		elseif links then
			return Wikidata.formatAndCat{claims = links, property = 'P856', displayformat = 'weblink', showlang = true, text = titre}
		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 = ''  -- langue telle qu'affichée dans le rendu final
	if langue then
		indicLangue = Langue.indicationMultilingue{ langue } .. ' '
	end

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

return Lien