Aller au contenu

Module:Infobox/Fonctions/Bac à sable

Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 9 mars 2020 à 21:21 et modifiée en dernier par Orlodrim (discuter | contributions). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

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

Cette page définit un module d'infobox.


-- Fonctions communes à diverses infobox
local localdata = require( 'Module:Infobox/Localdata' )
local wikidata = require( 'Module:Wikidata' )
local item = localdata.item
local p = {}

--[[
Crée un bloc titre

Paramètres
  icon :
  style :
  subtitleparam :
  subtitlequery :
  italic : indique si le titre de l'infobox doit être mis en italique.
  setdisplaytitle : indique si le titre de l'article doit être mis en forme comme celui de l'infobox.

Le paramètres doivent être passés via une table. La syntaxe avec les arguments positionnels est obsolète.

TODO: Migrer tous les appels vers la syntaxe avec table.
--]]
function p.title(args_or_icon, style, subtitleparam, subtitlequery)
	local args
	if type( args_or_icon ) == 'table' then
		args = args_or_icon
	else
		args = {
			icon = args_or_icon,
			style = style,
			subtitleparam = subtitleparam,
			subtitlequery = subtitlequery,
		}
	end
	return {
		type = 'title',
		value = function()
			local yesno = require( 'Module:Yesno' )
			local text = (
				localdata['nom'] or localdata['association_nom'] or localdata['nom_think'] or
				localdata['acronymelaboratoire'] or
				( wikidata.getLabel(localdata.item) and
				  mw.language.getContentLanguage():ucfirst( wikidata.getLabel(localdata.item) ) ) or
				mw.title.getCurrentTitle().text
			)
			if yesno(args.italic) then
				text = '<div class="italique">' .. text .. '</div>'
			end
			if yesno(args.setdisplaytitle) then
				text = text .. require( 'Module:Formatage du titre' ).setDisplayTitle{ args = {
					italic = args.italic,
					options = 'noreplace',
				} }
			end
			return text
		end,
		subtitle = function() return localdata[args.subtitleparam] end,
		wikidatasubtitle = args.subtitlequery,
		icon = args.icon,
		style = args.style,
	}
end

function p.mainimage(args, defaultimage)
	if type( args ) ~= 'table' then
		args = { cat = args, defaultimage = defaultimage }
	end
	return {
		type = 'images',
		imageparameters =  {'image', 'photo', 'Photo'},
		defaultimages = args.defaultimage,
		defaultimagelink = 'Aide:Insérer une image',
		sizeparameter = 'taille image',
		uprightparameter = 'upright',
		defaultupright = args.upright,
		defaultsize = 	args.size,
		maintenancecat = args.cat or 'Article à illustrer',
		captionparameter = {'légende', 'légende image', 'Légende'},
		altparameter = args.altparameter or 'alternative image',
		defaultalt = args.alt,
		defaultimagealt = args.defaultimagealt,
		wikidata = args.wikidata or {property = {'P18'}},
		numval = 1,
	}
end

function p.interior(upright)
	return {
		type = 'images',
		imageparameters =  {'intérieur', 'interior'},
	--	defaultimage = {},
	--	maintenancecat =
		captionparameter = 'légende intérieur',
		property = 'P5775',
		defaultupright = upright or '1',
		uprightparameter = 'upright intérieur',
		sizeparameter = 'taille intérieur',
		numval = 1,
	}
end

function p.logo(upright)
	return {
		type = 'images',
		imageparameters =  {'logo', 'association_logo'},
	--	defaultimage = {},
	--	maintenancecat =
		captionparameter = 'légende logo',
		property = 'P154',
		defaultupright = upright or '0.6',
		uprightparameter = 'upright logo',
		sizeparameter = 'taille logo',
		numval = 1,
	}
end

function p.blason(upright)
	return {
		type = 'images',
		imageparameters =  {'blason', 'sceau'},
	--	defaultimage = {},
	--	maintenancecat =
		captionparameter = {'légende blason', 'légende sceau'},
		property = {'P94', 'P158'},
		defaultupright = upright or '0.8',
		uprightparameter = {'upright blason', 'upright sceau'},
		sizeparameter = {'taille blason', 'taille sceau'},
		numval = 1,
	}
end

function p.flag(upright, id)
	local drapeau = wikidata.formatStatements{entity = id, property = 'P163', defaultlink = '-'}
	return {
		type = 'images',
		imageparameters =  {'drapeau'},
	--	defaultimage = {},
	--	maintenancecat =
		captionparameter = drapeau or 'légende drapeau',
		property = 'P41',
		defaultupright = upright or '1',
		uprightparameter = 'upright drapeau',
		sizeparameter = 'taille drapeau',
		numval = 1,
	}
end

function p.sign(upright)
	return {
		type = 'images',
		imageparameters =  {'signalisation'},
	--	defaultimage = {},
	--	maintenancecat =
		captionparameter = 'légende signalisation',
		property = 'P14',
		defaultupright = upright or '0.4',
		uprightparameter = 'upright signalisation',
		sizeparameter = 'taille signalisation',
		numval = 1,
	}
end

function p.icon(upright)
	return {
		type = 'images',
		imageparameters =  {'icône'},
	--	defaultimage = {},
	--	maintenancecat =
		captionparameter = 'légende icône',
		property = 'P2910',
		defaultupright = upright or '0.4',
		uprightparameter = 'upright icône',
		sizeparameter = 'taille icône',
		numval = 1,
	}
end

function p.bathymetricmap(upright)
	return {
		type = 'images',
		imageparameters =  {'carte bathymétrique'},
	--	defaultimage = {},
	--	maintenancecat =
		captionparameter = 'légende carte bathymétrique',
		property = 'P207',
		defaultupright = upright or '1',
		uprightparameter = 'upright carte bathymétrique',
		sizeparameter = 'taille carte bathymétrique',
		numval = 1,
	}
end

function p.routemap(upright)
	return {
		type = 'images',
		imageparameters =  {'tracé'},
	--	defaultimage = {},
	--	maintenancecat =
		captionparameter = 'légende tracé',
		property = 'P15',
		defaultupright = upright or '1',
		uprightparameter = 'upright tracé',
		sizeparameter = 'taille tracé',
		numval = 1,
	}
end

-- Liens externes
function p.website(localparam) -- texte libre [http://example.org example.org] ou url seule localparam est désigne le paramètre utilisé historiquement dans le modèle pour le site web (legacy)
	return { 
		type = 'mixed',
		label = '[[Site web]]', 
		plurallabel = '[[Site web|Sites web]]',
		wikidata = function()
				local values, num = wikidata.formatAndCat {
					entity = localdata.item,
					displayformat = 'weblink',
					conjtype = '<br />',
					property = 'P856',
					isinlang = 'fr',
					rank = 'valid',
					excludespecial = true, -- excludespecial car il peut y avoir marqué "aucune valeur" pour le français, mais y avoir un site en anglais
					returnnumberofvalues = true,
				}
				if not values then
					values, num = wikidata.formatAndCat {
						entity = localdata.item,
						displayformat = 'weblink',
						conjtype = '<br />',
						property = 'P856',
						showlang = true,
						excludespecial = true,
						returnnumberofvalues = true,
					}
				end
				return values, num
			end,
		value = 
			function()
				local siteurl = localdata[localparam] or localdata['site web'] or localdata['site_web'] or localdata['site officiel'] or localdata['site internet'] or localdata['web']
				local sitename = localdata['nom site']
				if siteurl then
					if siteurl:find("url") then
					return siteurl
				else
					return require("Module:Weblink").makelink(siteurl, sitename)
					end
				end
			end,
	}
end

-- Son, prononciation
function p.selectSound(prop)
	-- priorité au français
	if wikidata.getClaims{entity = localdata.item, property = prop, qualifier = {'P407'}, qualifiervalue  = {'Q150'} } then
		return {property = prop, qualifier = {'P407'}, qualifiervalue  = {'Q150'} }
	end
	return {property = prop}
end

function p.prononciation()
	return {
		type		     = 'images',
		style            = {['padding-top'] = '25px'},
		defaultcaption   = 'Prononciation',
		captionparameter = 'légende prononciation',
		value		     = 'prononciation',
		defaultsize      = '280',
		wikidata         = p.selectSound('P443'),
		numval           = 1,
	}
end

-- Fonctions de géolocalisation
function p.country(default)
	local coordfunctions = require 'Module:Infobox/Fonctions/Géolocalisation'
	return coordfunctions.country(default)	
end

function p.geoloc(params)
	local coordfunctions = require 'Module:Infobox/Fonctions/Géolocalisation'
	return coordfunctions.geoloc(params)	
end

function p.coordinates(params)
	local coordfunctions = require 'Module:Infobox/Fonctions/Géolocalisation'
	return coordfunctions.coordinates(params)
end

function p.locationmap(params)
	local coordfunctions = require 'Module:Infobox/Fonctions/Géolocalisation'
	return coordfunctions.locationmap(params)	
end

return p