Module:Site officiel
Apparence
local Lien = { }
local Outils = require "Module:Outils"
local Verif = require "Module:Correction syntaxique"
local defaultLang = 'fr'
local maxLang = 3
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
maxLang = args.maxLang or maxLang
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')
if erreursarguments then
erreurs = erreurs .. erreursarguments
end
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 Wikidata = require "Module:Wikidata"
local isinlang = defaultLang
local links = Wikidata.getClaims{entity = args.wikidata, property = 'P856', excludespecial = true, isinlang = isinlang}
if not links then
links = Wikidata.getClaims{entity = args.wikidata, property = 'P856', excludespecial = true}
isinlang = null
end
if links and (#links > 1) then
if titre == titredefaut then
titre = nil
end
return '<cite class="ouvrage" id="site_officiel" style="font-style: normal;">' .. "Sites officiels : " .. Wikidata.formatAndCat{claims = links, property = 'P856', displayformat = 'weblink', showlang = true, excludespecial = true, isinlang = isinlang, maxLang = maxLang} .. '</cite>' .. erreurs
elseif links then
return '<cite class="ouvrage" id="site_officiel" style="font-style: normal;">' .. Wikidata.formatAndCat{claims = links, property = 'P856', displayformat = 'weblink', showlang = true, text = titre, isinlang = isinlang, maxLang = maxLang} .. '</cite>' .. erreurs
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 = url:gsub( '%[', '%%5B' ):gsub( '%]', '%%5D' )
if not ( url:match( '^http' ) or url:match( '^//' ) ) then
url = 'http://' .. url
end
-- formatage de la langue
local indicLangue = '' -- langue telle qu'affichée dans le rendu final
if langue then
if langue ~= 'fr' then
local Langue = require "Module:Langue"
indicLangue = Langue.indicationMultilingue{ langue } .. ' '
if indicLangue:find('langue non reconnue') then
erreurs = erreurs .. caterreur('langue')
end
end
end
return '<cite class="ouvrage" id="site_officiel" style="font-style: normal;">' .. indicLangue .. '[' .. url .. ' ' .. titre .. ']' .. '</cite>' .. erreurs
end
return Lien