مودول:ب.ص.م/أدوات


-- أدوات مشتركة لبناء قوالب infobox
local localdata = require( 'وحدة:ب.ص.م/بيانات' )
local wikidata = require( 'Module:Wikidata2' )
local p = {}

function p.title(icon, style, subtitleparam, subtitlequery)
	return {
		type = 'title',
		value = function() 
			if(localdata.item) then
			return localdata['اسم'] or localdata['الاسم'] or localdata['name'] 
				or wikidata.getLabel(localdata.item.id) and mw.language.getContentLanguage():ucfirst( wikidata.getLabel(localdata.item.id) )
				or mw.title.getCurrentTitle().text
			else
				return localdata['اسم'] or localdata['الاسم']  or localdata['name']
				or mw.title.getCurrentTitle().text
			end
		end,
		subtitle = function() return localdata[subtitleparam] end,
		wikidatasubtitle = subtitlequery,
		icon = icon,
		style = style,
	}
end

function p.mainimage(args, defaultimage)
	if type( args ) ~= 'table' then
		args = { cat = args, defaultimage = defaultimage }
	end
	return {
		type = 'images',
		imageparameters = args.imageparameters or {'image','صورة','الصورة'},
		defaultimages = args.defaultimage,
		defaultimagelink = 'ويكيبيديا:صور',
		sizeparameter = {'حجم الصورة','حجم_الصورة','عرض_الصورة'},
		uprightparameter = 'upright',
		defaultupright = args.upright,
		defaultsize = 	args.size,
		maintenancecat = args.cat or 'مقالات تحتاج إلى صور',
		captionparameter = args.captionparameter or  {'تعليق', 'تعليق_الصورة','تعليق الصورة','عنوان_الصورة','عنوان الصورة','caption','image_caption'},
		defaultcaption = args.defaultcaption,
		altparameter = args.altparameter or 'بديل الصورة' or 'image_alt',
		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 interior',
		sizeparameter = 'size interior',
		numval = 1,
	}
end

function p.logo(upright)
	return {
		type = 'images',
		imageparameters =  {'شعار','الشعار','logo'},
	--	defaultimage = {},
	--	maintenancecat =
		captionparameter = {'تعليق الشعار','تعليق_الشعار','logo_caption'},
		defaultcaption = 'الشعار',
		property = 'P154',
		defaultupright = upright or '0.6',
		uprightparameter = 'upright logo',
		sizeparameter = {'حجم الشعار','عرض_الشعار'},
		numval = 1,
	}
end

function p.blason(upright)
	return {
		type = 'images',
		imageparameters =  {'blason','درع','الدرع'},
	--	defaultimage = {},
	--	maintenancecat =
		captionparameter = 'تعليق الدرع',
		defaultcaption = 'الدرع',
		property = 'P94',
		defaultupright = upright or '0.3',
		uprightparameter = 'upright blason',
		sizeparameter = 'حجم الدرع',
		numval = 1,
	}
end

function p.flag(upright)
	return {
		type = 'images',
		imageparameters =  {'علم','flag'},
	--	defaultimage = {},
	--	maintenancecat =
		captionparameter = 'تعليق العلم',
		property = 'P41',
		defaultupright = upright or '0.6',
		defaultcaption = 'العلم',
		uprightparameter = 'upright drapeau',
		sizeparameter = {'حجم العلم','flag_size'},
		numval = 1,
	}
end

function p.sign(upright)
	return {
		type = 'images',
		imageparameters =  {'لافتة'},
	--	defaultimage = {},
	--	maintenancecat =
		captionparameter = 'تعليق اللافتة',
		property = 'P14',
		defaultupright = upright or '0.4',
		uprightparameter = 'upright signalisation',
		sizeparameter = 'حجم اللافتة',
		numval = 1,
	}
end

function p.icon(upright)
	return {
		type = 'images',
		imageparameters =  {'icône','icon','أيقونة'},
	--	defaultimage = {},
	--	maintenancecat =
		captionparameter = {'légende icône','تعليق أيقونة'},
		property = 'P2910',
		defaultupright = upright or '0.4',
		uprightparameter = 'upright icon',
		sizeparameter = 'icon_size',
		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 = 'routemap_upright',
		sizeparameter = 'routemap_size',
		numval = 1,
	}
end

function p.bathymetricmap(upright)
	return {
		type = 'images',
		imageparameters =  {'خريطة قياس الأعماق'},
	--	defaultimage = {},
	--	maintenancecat =
		captionparameter = 'تعليق خريطة قياس الأعماق',
		property = 'P207',
		defaultupright = upright or '1',
		uprightparameter = 'upright carte bathymétrique',
		sizeparameter = 'حجم خريطة قياس الأعماق',
		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 = 'موقع الويب', 
		plurallabel = 'مواقع الويب',
		wikidata = function()
				local values, num = require("Module:Wikidata/fr").formatAndCat {
					entity = localdata.item,
					displayformat = 'weblink',
					conjtype = '<br />',conjunction = "<br />", separator = "<br />",
					property = 'P856',
					isinlang = 'ar',
					qual1 = 'P407',
					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 = require("Module:Wikidata/fr").formatAndCat {
						entity = localdata.item,
						displayformat = 'weblink',
						conjtype = '<br />', conjunction = "<br />", separator = "<br />",
						property = 'P856',
						qual1 = 'P407',
						rank = 'best',
						showlang = true,
						excludespecial = true,
						returnnumberofvalues = true,
					}
				end
				return values, num
			end,
		value = 
			function()
				local siteurl = localdata[localparam] or localdata['موقع ويب'] or localdata['موقع_ويب'] or localdata['موقع'] or localdata['url'] or localdata['website']
				local sitename = localdata['اسم الموقع']
				return require("Module:Weblink").makelink(siteurl, sitename)
			end,
	}
end

-- Son, prononciation
function p.selectSound(prop)
	-- priorité au Arabe Q13955 / français Q150
	if wikidata.formatStatementsFromLua{entity = item, property = prop, preferqualifier = 'P407', preferqualifiervalue  = 'Q13955' ,raw = 'true'} then
		return {property = prop, preferqualifier = 'P407' , preferqualifiervalue  = 'Q13955' }
	end
	return {property = prop}
end

function p.prononciation()
	return {
		type		     = 'images',
		style            = {['padding-top'] = '25px'},
		defaultcaption   = 'التهجئة',
		captionparameter = 'تعليق التهجئة',
		value		     = 'تهجئة',
		defaultsize      = '280',
		wikidata         = p.selectSound('P443'),
		numval           = 1,
	}
end

-- Fonctions de géolocalisation
function p.country(default)
    local coordfunctions  = require 'وحدة:ب.ص.م/أدوات/موقع جغرافي'
	return coordfunctions.country(default)	
end

function p.geoloc(params)
    local coordfunctions  = require 'وحدة:ب.ص.م/أدوات/موقع جغرافي'
	return coordfunctions.geoloc(params)	
end

function p.coordinates(params)
    local coordfunctions  = require 'وحدة:ب.ص.م/أدوات/موقع جغرافي'
	return coordfunctions.coordinates(params)
end

function p.locationmap(params)
    local coordfunctions  = require 'وحدة:ب.ص.م/أدوات/موقع جغرافي'
	return coordfunctions.locationmap(params)	
end

return p