Module:Site officiel

.mw-parser-output .documentation-modele{background-color:#ecfcf4}.mw-parser-output .documentation-module{background-color:#ecf0fc}.mw-parser-output .documentati

Module:Site officiel

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

local Lien = { }

local Verif = require "Module:Correction syntaxique"
local defaultLang = 'fr'

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 templateargs = frame:getParent().args
	local args = {}
	for k, v in pairs(templateargs) do
		if type(k) == 'number' then
			v = mw.text.trim(v)
		end
		if v ~= '' then
			args[k] = v
		end
	end
	local nocaturl = args.nocaturl

	local erreurs = '' -- les messages d'erreurs sont ajoutés ici

	local erreursarguments = Verif.verif(args, {'titre', 'title', 1, 2, 'langue', 'lang', 'url', 'wikidata', 'entity', 'id', 'nocaturl'}, '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
	local id = args.id or args.entity or args.wikidata
	if url and url:sub(1, 1) == 'Q' then
		id = url
		url = nil
	end

	-- génération de l'ancre
	local ancre = ''
	if not args['titre'] and not args['title'] then
		if id then
			ancre = 'id="site_officiel_' .. id .. '" '
		else
			ancre = 'id="site_officiel" '
		end
	end

	-- si pas d'URL, essayer Wikidata, et si ça marche, sortir de ce module
	if not url and (id ~= '-') then
		local Wikidata = require "Module:Wikidata"
		local isinlang = defaultLang
		local links = Wikidata.getClaims{entity = id, property = 'P856', excludespecial = true, isinlang = isinlang}
		if not links then
			links = Wikidata.getClaims{entity = id, property = 'P856', excludespecial = true}
			isinlang = null
		end
		local Weblink = require 'Module:Weblink'
		local statementformat = function(statement, args)
			if statement.mainsnak.snaktype == 'value' then
				local value = statement.mainsnak.datavalue.value
				local title = Wikidata.getFormattedQualifiers(statement, {'P1476'}, {isinlang = 'fr'})
				if not title then
					title = Wikidata.getFormattedQualifiers(statement, {'P1476'})
				end
				if not title then
					title = args.text
				end
				return Weblink.makelink(value, title)
			else
				return Wikidata.formatSnak( statement.mainsnak, args )
			end
		end
		if links and (#links > 1) then
			return '<cite class="ouvrage" ' .. ancre .. 'style="font-style: normal;">' .. "Sites officiels : " .. Wikidata.formatAndCat{claims = links, property = 'P856', displayformat = 'weblink', showlang = true, excludespecial = true, isinlang = isinlang, statementformat = statementformat} .. '</cite>' .. erreurs
		elseif links then
			if not (titre == titredefaut) then
				statementformat = nil
			end
			return '<cite class="ouvrage" ' .. ancre .. 'style="font-style: normal;">' .. Wikidata.formatAndCat{claims = links, property = 'P856', displayformat = 'weblink', showlang = true, text = titre, isinlang = isinlang, statementformat = statementformat} .. '</cite>' .. erreurs
		end
	end

	-- si toujours pas, ajouter les catégories d'erreur et sortir
	if not url then
		if not nocaturl then
			erreurs = erreurs .. caterreur('url')
		end
		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('class="error"', nil, true) then
				erreurs = erreurs .. caterreur('langue')
			end
		end
	end

	return '<cite class="ouvrage" ' .. ancre .. 'style="font-style: normal;">' .. indicLangue .. '[' .. url .. ' ' .. titre .. ']' .. '</cite>' .. erreurs
end

return Lien

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.