ماڈیول:معلومات/آلات

Documentation icon دستاویز
-- Credits:-- Original from fr:Module:Infobox/Fonctions-- forked by وهراني @urwiki (ur:ماڈیول:معلومات/آلات)-- Version: 20240123-- أدوات مشتركة لبناء قوالب infoboxlocal localdata = require("ماڈیول:معلومات/مواد")local item = localdata.itemlocal 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})endlocal getValue = localdata.getValuegeneric.FormatNumVal = FormatNumValgeneric.description["title"] = "وضع لبنة «العنوان» وتحوي اسما مشارا إليه أو اسم المقالة.";function generic.title(args)    return {        type = "title",        suggested = true,        value = {"اسم","نام","title","name"},        wikidata = function()            return (args and localdata.getValue(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.getValue(args.subtitleparam)        end,        wikidatasubtitle = args and args.subtitlequery,        icon = args and args.icon,        style = args and args.style,        metadata = {description = "عنوان أو اسم المقالة", option = "", type = "",         }    }endgeneric.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",         }    }endgeneric.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",         }    }endgeneric.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",        }    }endgeneric.blason = generic.coat_of_armsgeneric.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",        }    }endgeneric.sceau = generic.sealgeneric.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",        }    }endgeneric.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",        }    }endgeneric.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",        }    }endgeneric.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",        }    }endgeneric.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",        }    }endgeneric.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 = "Q1617", -- for urdu 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",        }    }endgeneric.description["blog"] = "إضافة موقع المدونة";function generic.blog(params)    if not params then        params = {}    endreturn 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 = "Q1617", -- for urdu        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 paramsendgeneric.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)endgeneric.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 = {"أبعاد","الأبعاد","dimensions","dim"},        wikidata = function(item)            return getDimensions({                item = item.id,                diameter = localdata.getValue("diameter") or localdata.getValue("قطر"),                height = localdata.getValue("height") or localdata.getValue("ارتفاع"),                draft = localdata.getValue("draft") or localdata.getValue("عمق تحت خط الماء"),                clearance = localdata.getValue("clearance") or localdata.getValue("مسافة تحتية"),                width = localdata.getValue("width") or localdata.getValue("beam") or localdata.getValue("عرض"),                length = localdata.getValue("length") or getValue("horizontal depth") or localdata.getValue("طول") or                    localdata.getValue("عمق أفقي"),                span = localdata.getValue("span") or localdata.getValue("بين الركائز"),                thickness = localdata.getValue("thickness") or localdata.getValue("سمك")            })        end,        metadata = {description = "قيم الأبعاد (طول- عرض - عمق - قطر - ارتفاع - سمك ...) بوحدات القياس",option = "", type = "",        }    }endgeneric.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&nbsp;$0$R0 $1$2$3$5",            rowsubformat1 = "<small>($1)</small>",            rowsubformat2 = "<small><br />, عن عمل ''«$2»''</small>",            rowsubformat3 = "<small><br />&nbsp;تمنحها  $3</small>",            rowsubformat4 = "[[file:$4|30px|link=]]",            rowsubformat5 = "<small><br />منحت لـ $5</small>"        },        metadata = {description = "الجوائز الملحوظة فقط والتي لا تمنح ألقاب.",option = "", type = "string",        }    }endgeneric.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)endgeneric.description["geoloc"] = "إضافة خريطة الموقع التفاعلية";function generic.geoloc(params)    if not params then        params = {}    end    if (localdata.getValue("خريطة الموقع") == "-") then        return nil    end    local params2     params.id = params.id or (localdata.item and localdata.item.id)    local geotype = "Point"    if params.id then      if(#(mw.wikibase.getBestStatements(params.id, "P3896")) > 0) then         local commons2 = mw.wikibase.getBestStatements(params.id, "P3896")        commons2 = commons2[1]["mainsnak"]["datavalue"]["value"]        params2 = {geotype2 = 'page', commons2= commons2, id2 = params.id, stroke2 = "#FF0000"}      elseif(#(mw.wikibase.getBestStatements(params.id, "P402")) > 0) then        geotype = "geoshape"        params2 = {geotype2 = 'geoline', id2 = params.id, stroke2 = "#FF0000"}      end    end    return {        type = "map",        latitude = {"دائرة عرض", "دائرة العرض", "latitude"},        longitude = {"خط طول", "خط الطول", "longitude"},        pointtype = params.pointtype,        maptype = params.type,        globe = localdata.globe or localdata.getValue("كوكب") or params.globe,        marker = params.marker,        markercolor = params.markercolor,        shapecolor = params.shapecolor,        markersize = params.markersize,        markersymbol = params.markersymbol,        default_zoom = localdata.getValue("zoom") or localdata.getValue("تكبير") or params.default_zoom,        ids = params.ids ,        id = params.id,        geotype = params.geotype or geotype,        params = params2,        --debug = 1,        metadata = {description = "",option = "", type = "",        }    }endgeneric.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",        }    }endgeneric.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",        }    }endgeneric.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",        }    }endgeneric.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 = "",         }    }endgeneric.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 = "",         }    }endgeneric.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=' <small>($1)</small>',rowformat = '$0$R0$1', showDate = 'true', conjunction = '<br />'},},metadata = {description = "المنظمات والهيئات التي انتسب إليها.",option = "", type = "",}}}endreturn generic