وحدة:بطاقة/أدوات
وحدات فرعية
في نطاق وحدة:
نقاش الوحدة:
-- Credits:
-- Original from fr:Module:Infobox/Fonctions
-- forked by وهراني @arwiki (ar:وحدة:بطاقة/أدوات)
-- Version: 20230705
-- أدوات مشتركة لبناء قوالب infobox
local localdata = require("وحدة:بطاقة/بيانات")
local item = localdata.item
local generic = {}
generic.description = {}
local xmath = require("Module:Math")
function FormatNumVal(value)
value = tonumber(value)
if value == 0 then
return value
end
if (math.abs(value) > 1E15) then
return xmath.round({precision = 3, value = value / 1E15}) .. " [[كوادريليون|بليار]]"
elseif (math.abs(value) > 1E12) then
return xmath.round({precision = 3, value = value / 1E12}) .. " [[تريليون]]"
elseif (math.abs(value) > 1E9) then
return xmath.round({precision = 3, value = value / 1E9}) .. " [[بليون]]"
elseif (math.abs(value) > 1E6) then
return xmath.round({precision = 3, value = value / 1E6}) .. " [[مليون]]"
end
return xmath.round({precision = 3, value = value})
end
local function getValue(val, params)
if type(val) == "string" then
return localdata[val]
elseif type(val) == "function" then
return val(localdata, localdata.item, params)
elseif type(val) == "table" then
for i, j in pairs(val) do -- في حال وجود قيم لأكثر من وسيط : أخذ بعين الاعتبار أول قيمة
if localdata[j] then
return localdata[j]
end
end
end
end
generic.FormatNumVal = FormatNumVal
generic.description["title"] = "وضع لبنة «العنوان» وتحوي اسما مشارا إليه أو اسم المقالة.";
function generic.title(args)
return {
type = "title",
suggested = true,
value = {"اسم","الاسم","title","name"},
wikidata = function()
return (args and localdata[args.titleparam]) or
(type(localdata.item) == "table" and type(localdata.item.id) == "string" and
mw.wikibase.label(localdata.item.id) and
mw.language.getContentLanguage():ucfirst(mw.wikibase.label(localdata.item.id))) or
mw.title.getCurrentTitle().text
end,
subtitle = function()
return args and localdata[args.subtitleparam]
end,
wikidatasubtitle = args and args.subtitlequery,
icon = args and args.icon,
style = args and args.style,
metadata = {
description = "عنوان أو اسم المقالة",
option = "",
type = "",
}
}
end
generic.description["mainimage"] = " وضع لبنة «صورة» وتعرض صورة من المدخلات أو ويكي بيانات";
function generic.mainimage(params)
if type(params) ~= "table" then
params = {}
end
return {
type = "images",
suggested = true,
wikidata = params.wikidata or {property = "P18"},
imageparameters = params.imageparameters or {"صورة", "الصورة", "Image", "image"},
defaultimage = params.defaultimage,
maintenancecat = params.maintenancecat or params.cat or "مقالات تحتاج إلى صور",
sizeparameter = params.sizeparameter or {"حجم الصورة", "حجم_الصورة", "عرض_الصورة"},
uprightparameter = params.uprightparameter or "upright",
defaultupright = params.upright,
defaultsize = params.size,
captionparameter = params.captionparameter or
{
"تعليق",
"تعليق_الصورة",
"تعليق الصورة",
"عنوان_الصورة",
"عنوان الصورة",
"التعليق",
"caption",
"image_caption",
"Caption"
},
altparameter = params.altparameter or "بديل الصورة" or "image_alt",
defaultalt = params.alt,
defaultimagealt = params.defaultimagealt,
numval = 1,
metadata = {
description = " صورة تناسب الموضوع (ضع اسم الملف فقط دون السابقة «ملف:» أو «File:»).",
example = "abc.jpg",
option = "suggested",
type = "wiki-file-name",
}
}
end
generic.description["logo"] = "وضع لبنة «الشعار المرسوم» وتعرض صورة الشعار.";
function generic.logo(params)
if not params then
params = {}
end
return {
type = "images",
wikidata = params.wikidata or {property = "P154"},
imageparameters = params.imageparameters or {"شعار", "الشعار", "logo"},
defaultimage = params.defaultimage,
maintenancecat = params.maintenancecat,
captionparameter = params.captionparameter or {"تعليق الشعار", "تعليق_الشعار"},
defaultupright = params.upright or upright or "0.6",
uprightparameter = params.uprightparameter or "upright logo",
sizeparameter = params.sizeparameter or {"حجم الشعار", "عرض_الشعار"},
numval = 1,
defaultcaption = 'الشعار',
metadata = {
description = "صورة للشعار (ضع اسم الملف فقط دون السابقة «ملف:» أو «File:»)",
example = "abc_logo.jpg",
option = "suggested",
type = "wiki-file-name",
}
}
end
generic.description["coat_of_arms"] = "إضافة صورة شعار النبالة";
function generic.coat_of_arms(params)
if not params then
params = {}
end
return {
type = "images",
wikidata = params.wikidata or {property = {"P94"}},
imageparameters = params.imageparameters
or {"شعار_النبالة", "coat_of_arms"},
defaultimage = params.defaultimage,
maintenancecat = params.maintenancecat,
captionparameter = params.captionparameter or
{"تعليق نبالة", "coat_of_arms_caption"},
defaultupright = params.upright or upright or "0.8",
uprightparameter = params.uprightparameter or {"upright coa"},
sizeparameter = params.sizeparameter or {"coa_size"},
numval = 1,
defaultcaption = 'شعار النبالة',
metadata = {
description = "صورة لشعار النبالة (ضع اسم الملف فقط دون السابقة «ملف:» أو «File:»)",
example = "abc_coat.jpg",
option = "",
type = "wiki-file-name",
}
}
end
generic.blason = generic.coat_of_arms
generic.description["seal"] = "إضافة صورة الختم";
function generic.seal(params)
if not params then
params = {}
end
return {
type = "images",
wikidata = params.wikidata or {property = {"P158"}},
imageparameters = params.imageparameters
or { "ختم", "seal"},
defaultimage = params.defaultimage,
maintenancecat = params.maintenancecat,
captionparameter = params.captionparameter or
{ "تعليق ختم", "seal_caption"},
defaultupright = params.upright or upright or "0.8",
uprightparameter = params.uprightparameter or { "upright seal"},
sizeparameter = params.sizeparameter or { "seal_size"},
numval = 1,
defaultcaption = 'الختم',
metadata = {
description = "صورة للختم (ضع اسم الملف فقط دون السابقة «ملف:» أو «File:»)",
example = "abc_seal.jpg",
option = "",
type = "wiki-file-name",
}
}
end
generic.sceau = generic.seal
generic.description["flag"] = "إضافة صورة العلم";
function generic.flag(params)
if not params then
params = {}
end
return {
type = "images",
suggested = true,
wikidata = params.wikidata or {property = "P41"},
imageparameters = params.imageparameters or {"العلم", "علم", "flag"},
defaultimage = params.defaultimage,
maintenancecat = params.maintenancecat,
captionparameter = params.captionparameter or "تعليق العلم",
defaultupright = params.upright or upright or "0.6",
uprightparameter = params.uprightparameter or "upright drapeau",
sizeparameter = params.sizeparameter or {"حجم العلم", "flag_size"},
numval = 1,
defaultcaption = 'العلم',
metadata = {
description = "صورة للعلم (ضع اسم الملف فقط دون السابقة «ملف:» أو «File:»)",
example = "abc_flag.jpg",
option = "",
type = "wiki-file-name",
}
}
end
generic.description["sign"] = "إضافة صورة لافتة";
function generic.sign(params)
if not params then
params = {}
end
return {
type = "images",
wikidata = params.wikidata or {property = "P14"},
imageparameters = params.imageparameters or {"لافتة"},
defaultimage = params.defaultimage,
maintenancecat = params.maintenancecat,
captionparameter = params.captionparameter or "تعليق اللافتة",
defaultupright = params.upright or upright or "0.4",
uprightparameter = params.uprightparameter or "upright signalisation",
sizeparameter = params.sizeparameter or "حجم اللافتة",
numval = 1,
metadata = {
description = "صورة اللافتة (ضع اسم الملف فقط دون السابقة «ملف:» أو «File:»)",
example = "abc.jpg",
option = "",
type = "wiki-file-name",
}
}
end
generic.description["icon"] = "إضافة صورة أيقونة";
function generic.icon(params)
if not params then
params = {}
end
return {
type = "images",
wikidata = params.wikidata or {property = "P2910"},
imageparameters = params.imageparameters or {"أيقونة", "icon"},
defaultimage = params.defaultimage,
maintenancecat = params.maintenancecat,
captionparameter = params.captionparameter or {"تعليق أيقونة"},
defaultupright = params.upright or upright or "0.4",
uprightparameter = params.uprightparameter or "upright icon",
sizeparameter = params.sizeparameter or "icon_size",
numval = 1,
metadata = {
description = "صورة الأيقونة (ضع اسم الملف فقط دون السابقة «ملف:» أو «File:»)",
example = "abc_icon.jpg",
option = "",
type = "wiki-file-name",
}
}
end
generic.description["scheme"] = "إضافة صورة مخطط";
function generic.scheme(params)
if not params then
params = {}
end
return {
type = "images",
wikidata = params.wikidata or {property = "P5555"},
imageparameters = params.imageparameters or {"مخطط", "scheme"},
captionparameter = params.captionparameter or "تعليق المخطط",
defaultupright = params.upright or upright,
uprightparameter = params.uprightparameter or "upright scheme",
sizeparameter = params.sizeparameter or "حجم المخطط",
numval = 1,
metadata = {
description = "صورة المخطط (ضع اسم الملف فقط دون السابقة «ملف:» أو «File:»)",
example = "abc_scheme.jpg",
option = "",
type = "wiki-file-name",
}
}
end
generic.description["planview"] = "إضافة صورة مسقط";
function generic.planview(params)
if not params then
params = {}
end
return {
type = "images",
wikidata = params.wikidata or {property = "P3311"},
imageparameters = params.imageparameters or {"مسقط", "planview"},
captionparameter = params.captionparameter or "تعليق المسقط",
defaultupright = params.upright,
uprightparameter = params.uprightparameter or "upright planview",
sizeparameter = params.sizeparameter or "حجم المسقط",
numval = 1,
metadata = {
description = "صورة المسقط (ضع اسم الملف فقط دون السابقة «ملف:» أو «File:»)",
example = "abc_planview.jpg",
option = "",
type = "wiki-file-name",
}
}
end
generic.description["bathymetricmap"] = "إضافة صورة خريطة قياس الأعماق";
function generic.bathymetricmap(params)
if not params then
params = {}
end
return {
type = "images",
wikidata = params.wikidata or {property = "P207"},
imageparameters = params.imageparameters or {"خريطة قياس الأعماق"},
defaultimage = params.defaultimage,
maintenancecat = params.maintenancecat,
captionparameter = params.captionparameter or "تعليق خريطة قياس الأعماق",
defaultupright = params.upright or upright or "1",
uprightparameter = params.uprightparameter or "upright bathymetricmap",
sizeparameter = params.sizeparameter or "حجم خريطة قياس الأعماق",
numval = 1,
metadata = {
description = "صورة خريطة قياس الأعماق (ضع اسم الملف فقط دون السابقة «ملف:» أو «File:»)",
example = "abc.jpg",
option = "",
type = "wiki-file-name",
}
}
end
-- روابط خارجية
generic.description["website"] = "إضافة موقع ويب";
function generic.website(params)
if not params then
params = {}
end
return {
type = "mixed",
suggested = true,
label = params.label or "موقع الويب",
plurallabel = params.plurallabel or "مواقع الويب",
value = params.value or {"موقع ويب", "موقع_ويب", "موقع", "url", "website"},
valueStyle = {["text-align"] = "left", ["direction"] = "ltr", ["font-size"] = "0.9em"},
wikidata = {
wikimod = "Wikidata.Ca",
property = params.property or "P856",
qualifier = "P407",
whitelist1 = "Q13955", -- for arabic website
qualifier2 = "P518", blacklist2 = "Q19778981", -- for Tor onion service
formatting = "table",
conjunction = "<br />",
rowformat = "$0$R0 $1",
rowsubformat1 = '<small><span class="languageicon" style="font-size:0.75em; font-weight:bold; color:#555;">($1)</span></small>',
colformat0 = "weblink",
colformat1 = "label"
},
wikidata2 = {
wikimod = "Wikidata.Ca",
property = params.property or "P856",
listrank = "bestrank",
qualifier = "P407", -- for other languages website
qualifier2 = "P518", blacklist2 = "Q19778981", -- for Tor onion service
formatting = "table",
conjunction = "<br />",
rowformat = "$0$R0 $1",
rowsubformat1 = '<small><span class="languageicon" style="font-size:0.75em; font-weight:bold; color:#555;">($1)</span></small>',
colformat0 = "weblink",
colformat1 = "label"
},
metadata = {
description = params.description or "فقط الموقع الرسمي على الويب (المواقع غير الرسمية تذكر في فقرة «وصلات خارجية»).",
option = "suggested",
type = "url",
}
}
end
generic.description["blog"] = "إضافة موقع المدونة";
function generic.blog(params)
if not params then
params = {}
end
return generic.website({
label = params.label or "[[مدونة|المدونة الرسمية]]",
value = params.value or {'مدونة','blog'},
property = params.property or 'P1581',
description = params.description or 'فقط المدونة الرسمية (المواقع غير الرسمية تذكر في فقرة «وصلات خارجية»).'
})
end
-- أصوات
generic.description["selectSound"] = "إضافة صوت";
function generic.selectSound(params)
if not params then
params = {}
end
params.type = "images"
params.style = params.style or {["padding-top"] = "25px"}
params.defaultcaption = "الصوت"
params.caption = params.captionparameter or "تعليق الصوت"
params.value = params.valueparameter or {"صوت", "sound"}
params.defaultsize = "280"
params.numval = params.numval or 1
params.wikidata = {
wikimod = "Wikidata.Ca",
property = params.property or "P51",
qualifier = "P407",
whitelist1 = "Q13955", -- for arabic
formatting = "table",
conjunction = "<br />",
rowformat = "$0"
}
params.wikidata2 = {
wikimod = "Wikidata.Ca",
property = params.property or "P51",
listrank = "bestrank",
qualifier = "P407", -- for other languages
formatting = "table",
conjunction = "<br />",
rowformat = "$0"
}
params.metadata = {
description = "ملف صوتي (ضع اسم الملف فقط دون السابقة «ملف:» أو «File:»)",
example = "abc.ogg",
option = "",
type = "wiki-file-name",
}
return params
end
generic.description["pronunciation"] = "إضافة ملف صوتي للتهجئة";
function generic.pronunciation(params)
if not params then
params = {}
end
params.property = "P443"
params.defaultcaption = "التهجئة"
params.captionparameter = params.captionparameter or "تعليق التهجئة"
params.value = params.valueparameter or {"تهجئة", "pronunciation"}
params.numval = 1
return generic.selectSound(params)
end
generic.description["dimensions"] = "إضافةالأبعاد";
function generic.dimensions(default)
local function getDimensions(args)
local Dimensionsfunction = require("Module:Dimensions").main
local noerr, data, nb
noerr, data = pcall(Dimensionsfunction, args)
if noerr then
return data
else
addMaintenanceCat("مقالات بها أخطاء مصدرها وحدة بطاقة")
mw.log("WD Query Error : " .. mw.dumpObject(data))
return '<span class="error">' .. (data) .. "</span>"
end
end
return {
type = "mixed",
label = "الأبعاد",
value = function()
return localdata["أبعاد"] or localdata["الأبعاد"] or localdata.dimensions or localdata.dim or
(type(localdata.item) == "table" and type(localdata.item.id) == "string" and
getDimensions(
{
item = localdata.item.id,
diameter = localdata.diameter or localdata["قطر"],
height = localdata.height or localdata["ارتفاع"],
draft = localdata.draft or localdata["عمق تحت خط الماء"],
clearance = localdata.clearance or localdata["مسافة تحتية"],
width = localdata.width or localdata.beam or localdata["عرض"],
length = localdata.length or localdata["horizontal depth"] or localdata["طول"] or
localdata["عمق أفقي"],
span = localdata.span or localdata["بين الركائز"],
thickness = localdata.thickness or localdata["سمك"]
}
))
end,
metadata = {
description = "قيم الأبعاد (طول- عرض - عمق - قطر - ارتفاع - سمك ...) بوحدات القياس",
option = "",
type = "",
}
}
end
generic.description["awards"] = "إضافة الجوائز";
function generic.awards(params)
return {
type = "row",
label = "الجوائز",
value = {"جوائز", "جائزة", "awards"},
wikidata = {
wikimod = "Wikidata.Ca",
property = "P166",
tablesort = "1",
sorting = "-1",
separator = "<br />",
qualifier = "P585",
qualifier2 = "P1686",
qualifier3 = "P1027",
qualifier4 = "P166/P2425",
qualifier5 = "P1346",
formatting = "table",
rowformat = "* $4 $0$R0 $1$2$3$5",
rowsubformat1 = "<small>($1)</small>",
rowsubformat2 = "<small><br />, عن عمل ''«$2»''</small>",
rowsubformat3 = "<small><br /> تمنحها $3</small>",
rowsubformat4 = "[[file:$4|30px|link=]]",
rowsubformat5 = "<small><br />منحت لـ $5</small>"
},
metadata = {
description = "الجوائز الملحوظة فقط والتي لا تمنح ألقاب.",
option = "",
type = "string",
}
}
end
generic.description["motto"] = "إضافة الشعار النصي";
function generic.motto(param)
return {
type = "row",
label = "الشعار النصي",
value = {"شعار_نصي", "motto", "motto_text"},
defaultvalue = getValue {param},
wikidata = {
wikimod = "Wikidata.Ca",
property = "P1451",
conjunction = "<br />",
formatting = "$text {{Language icon|NoCat=y|$language}}"
},
metadata = {
description = "شعار نصي (بالإنجليزية:motto) (وليس صورة)",
option = "",
type = "string",
}
}
end
-- أدوات تحديد الموقع الجغرافي
generic.description["country"] = "إضافة البلد";
function generic.country(default)
local building = require "وحدة:بطاقة/أدوات/مبنى"
return building.country(default)
end
generic.description["geoloc"] = "إضافة خريطة الموقع التفاعلية";
function generic.geoloc(params)
if not params then
params = {}
end
if (localdata["خريطة الموقع"] == "-") then
return nil
end
local params2
local id = (localdata.item and localdata.item.id)
local geotype = "Point"
if id and
(#(mw.wikibase.getBestStatements(id, "P3896")) > 0 or
#(mw.wikibase.getBestStatements(id, "P402")) > 0) then
geotype = "geoshape"
params2 = {geotype2 = 'geoline', id2 = params.id, stroke2 = "#FF0000"}
end
return {
type = "map",
latitude = {"دائرة عرض", "دائرة العرض", "latitude"},
longitude = {"خط طول", "خط الطول", "longitude"},
pointtype = params.pointtype,
maptype = params.type,
globe = localdata.globe or localdata["كوكب"] or params.globe,
marker = params.marker,
markercolor = params.markercolor,
shapecolor = params.shapecolor,
markersize = params.markersize,
markersymbol = params.markersymbol,
default_zoom = localdata["zoom"] or localdata["تكبير"] or params.default_zoom,
ids = params.ids ,
id = params.id,
geotype = params.geotype or geotype,
params = params2,
--debug = 1,
metadata = {
description = "",
option = "",
type = "",
}
}
end
generic.description["coordinates"] = "إضافة الإحداثيات";
function generic.coordinates(params)
if not params then
params = {}
end
return {
type = "mixed",
label = "الإحداثيات",
value = {"إحداثيات", "احداثيات", "coordinates"},
wikidata = {
wikimod = "Wikidata.Ca",
listrank = "bestrank",
property = "P625",
formatting = "{{coord|$lat|$lon|globe:$globe|format=dms}}"
},
metadata = {
description = "الإحداثيات الجغرافية",
option = "",
type = "string",
}
}
end
generic.description["locationmap"] = "إضافة خريطة الموقع";
function generic.locationmap(params)
if not params then
params = {}
end
return {
type = "images",
imageparameters = params.imageparameters or {"صورة خريطة"},
sizeparameter = params.sizeparameter or "حجم صورة خريطة",
captionparameter = params.captionparameter or {"تعليق صورة خريطة"},
defaultupright = params.upright or "1",
property = "P242",
numval = 1,
metadata = {
description = "صورة خريطة جغرافية (ضع اسم الملف فقط دون السابقة «ملف:» أو «File:»)",
example = "abc_map.jpg",
option = "",
type = "wiki-file-name",
}
}
end
generic.description["detailedmap"] = "إضافة خريطة مفصلة";
function generic.detailedmap(params)
if not params then
params = {}
end
return {
type = "images",
imageparameters = params.imageparameters or {"صورة خريطة مفصلة"},
sizeparameter = params.sizeparameter or "حجم صورة خريطة مفصلة",
captionparameter = params.captionparameter or {"تعليق صورة خريطة مفصلة"},
defaultupright = params.upright or "1",
defaultsize = params.defaultsize,
property = "P1621",
numval = 1,
metadata = {
description = "صورة خريطة جغرافية مفصلة (ضع اسم الملف فقط دون السابقة «ملف:» أو «File:»)",
example = "abc_map.jpg",
option = "",
type = "wiki-file-name",
}
}
end
generic.description["replaces"] = "حل محل";
function generic.replaces(params)
if not params then
params = {}
end
return {
type = "row",
label = "عوض",
value = {"عوض","replaces"},
wikidata= params.wikidata or {property = "P1398 OR P1365"},
metadata = {
description = "حل محل",
option = "",
type = "",
}
}
end
generic.description["replacedby"] = "حل مكانه";
function generic.replacedby(params)
if not params then
params = {}
end
return {
type = "row",
label = "حل مكانه",
value = {"حل مكانه","replaced_by"},
wikidata = params.wikidata or {property = "P167 OR P1366"},
metadata = {
description = "عوضه",
option = "",
type = "",
}
}
end
generic.description["memberof"] = "المنظمات والهيئات التي انتسب إليها."
function generic.memberof()
return {type = 'multi', rows = {
{
type = 'row',
label = 'عضو في',
value = {'عضو','عضو في','عضوية','member of','membre de'},
wikidata = {
wikimod = 'Wikidata.Ca', formatting='table',
property = 'P463', qualifier1='P2868' ,rowsubformat1=', $1',
rowformat = '$0$R0$1',
sorttype= 'chronological', showDate = 'true',
conjunction = '<br />'},
},
metadata = {
description = "المنظمات والهيئات التي انتسب إليها.",
option = "",
type = "",
}
}}
end
return generic