انتقل إلى المحتوى

وحدة:مواقع التواصل الاجتماعي

صفحة محمية جزئيًّا (سماح للمحررين)
من ويكيبيديا، الموسوعة الحرة

local p = {}

local getArgs = require('Module:Arguments').getArgs
local sideBox = require('Module:Side box')._main
local wikibase = mw.wikibase

-- دالة لجلب الرابط من القيم المحلية أو ويكي بيانات
local function getSocialMediaLink(entity, property, baseUrl, siteName, icon, userValue, pageTitle)
    -- استخدام القيم المحلية إذا تم توفيرها
    if userValue and userValue ~= "" then
        return string.format('[[ملف:%s|15بك]] [%s%s %s على %s]', icon, baseUrl, userValue, pageTitle, siteName)
    end

    -- إذا لم تكن هناك قيمة محلية، جلب القيمة من ويكي بيانات
    if entity and entity.claims and entity.claims[property] then
        local claims = entity.claims[property]
        for _, claim in pairs(claims) do
            if claim.mainsnak and claim.mainsnak.datavalue then
                local id = claim.mainsnak.datavalue.value
                return string.format('[[ملف:%s|15بك]] [%s%s %s على %s]', icon, baseUrl, id, pageTitle, siteName)
            end
        end
    end
    return nil
end

-- الدالة الرئيسية لإنشاء صندوق الروابط الاجتماعية
function p.main(frame)
    local args = getArgs(frame)
    local entity = wikibase.getEntityObject()
    
    -- إذا لم يتم العثور على كيان ويكي بيانات، إرجاع رسالة خطأ
    if not entity then
        entity = nil  -- في حالة عدم وجود كيان، نتأكد من أن الوحدة لا تتعطل
    end

    local links = {}

    -- استخدام الوسيط "عنوان" أو اسم الصفحة الافتراضي
    local pageTitle = args["عنوان"] or args["العنوان"] or mw.title.getCurrentTitle().text

    -- قائمة المواقع الاجتماعية مع الخصائص الخاصة بها في ويكي بيانات والأيقونات الخاصة بها
local socialMediaProperties = {
    {
        property = 'P2013',
        baseUrl = 'https://www.facebook.com/',
        siteName = 'فيسبوك',
        icon = '2023 Facebook icon.svg',
        userValue = args["فيس بوك"] or args["فيسبوك"]
    },
    {
        property = 'P2002',
        baseUrl = 'https://twitter.com/',
        siteName = 'إكس (تويتر)',
        icon = 'X logo 2023.svg',
        userValue = args["إكس"] or args["تويتر"]
    },
    {
        property = 'P2397',
        baseUrl = 'https://www.youtube.com/channel/',
        siteName = 'يوتيوب',
        icon = 'YouTube full-color icon (2024).svg',
        userValue = args["يوتيوب"]
    },
    {
        property = 'P2003',
        baseUrl = 'https://www.instagram.com/',
        siteName = 'إنستغرام',
        icon = 'Instagram logo 2022.svg',
        userValue = args["إنستغرام"] or args["انستقرام"]
    },
    {
        property = 'P11892',
        baseUrl = 'https://www.threads.net/@',
        siteName = 'ثريدز',
        icon = 'Threads (app).svg',
        userValue = args["ثريدز"]
    },
    {
        property = 'P3267',
        baseUrl = 'https://www.flickr.com/people/',
        siteName = 'فليكر',
        icon = 'Flickr logo - SuperTinyIcons.svg',
        userValue = args["فليكر"]
    },
    {
        property = 'P6634',
        baseUrl = 'https://www.linkedin.com/in/',
        siteName = 'لينكد إن',
        icon = 'LinkedIn icon.svg',
        userValue = args["لينكد إن"] or args["لينكد ان"]
    },
    {
        property = 'P3040',
        baseUrl = 'https://soundcloud.com/',
        siteName = 'ساوند كلاود',
        icon = 'Antu soundcloud.svg',
        userValue = args["ساوند كلاود"] or args["ساوندكلاود"]
    },
    {
        property = 'P3265',
        baseUrl = 'https://myspace.com/',
        siteName = 'ماي سبيس',
        icon = 'Myspace.svg',
        userValue = args["ماي سبيس"] or args["مي سبيس"]
    },
    {
        property = 'P3836',
        baseUrl = 'https://www.pinterest.com/',
        siteName = 'بنترست',
        icon = 'Pinterest.svg',
        userValue = args["بنترست"]
    },
    {
        property = 'P3185',
        baseUrl = 'https://vk.com/',
        siteName = 'فكونتاكتي',
        icon = 'VK Compact Logo (2021-present).svg',
        userValue = args["فكونتاكتي"]
    },
    {
        property = 'P3789',
        baseUrl = 'https://t.me/',
        siteName = 'تيليغرام',
        icon = 'Telegram 2019 Logo.svg',
        userValue = args["تيليغرام"] or args["تيليجرام"] or args["تلغرام"] or args["تلجرام"]
    },
    {
        property = 'P3943',
        baseUrl = 'https://$1.tumblr.com/',
        siteName = 'تمبلر',
        icon = 'Cib-tumblr (CoreUI Icons v1.0.0).svg',
        userValue = args["تمبلر"]
    },
    {
        property = 'P1902',
        baseUrl = 'https://open.spotify.com/artist/',
        siteName = 'سبوتيفاي',
        icon = 'Spotify logo without text.svg',
        userValue = args["سبوتيفاي"]
    },
    {
        property = 'P2373',
        baseUrl = 'https://genius.com/artists/',
        siteName = 'جينيس',
        icon = 'Genius-Wordmark.svg',
        userValue = args["جينيس"] or args["جينياس"]
    },
    {
        property = 'P2984',
        baseUrl = 'https://www.snapchat.com/add/',
        siteName = 'سناب شات',
        icon = 'Yellow App icon.svg',
        userValue = args["سناب شات"] or args["سناب تشات"]
    },
    {
        property = 'P7085',
        baseUrl = 'https://www.tiktok.com/@',
        siteName = 'تيك توك',
        icon = 'Ionicons logo-tiktok.svg',
        userValue = args["تيك توك"] or args["تيكتوك"]
    },
    {
        property = 'P10885',
        baseUrl = 'https://play.anghami.com/artist/',
        siteName = 'أنغامي',
        icon = 'Anghami logo Arabic.png',
        userValue = args["أنغامي"]
    },
    {
        property = 'P5917',
        baseUrl = 'https://www.shazam.com/artist/-/',
        siteName = 'شازام',
        icon = 'Shazam icon.svg',
        userValue = args["شازام"] or args["شازم"]
    },
    {
        property = 'P4033',
        baseUrl = 'https://wikidata-externalid-url.toolforge.org/?p=4033&id=',
        siteName = 'ماستدون',
        icon = 'Mastodon logotype (simple) new hue.svg',
        userValue = args["ماستدون"] or args["ماستودون"]
    },
    {
        property = 'P2722',
        baseUrl = 'https://www.deezer.com/artist/',
        siteName = 'فنان ديزر',
        icon = 'Deezer logo, 2023.svg',
        userValue = args["فنان ديزر"]
    },
    {
        property = 'P2963',
        baseUrl = 'https://www.goodreads.com/author/show/',
        siteName = 'جود ريدز',
        icon = 'Goodreads logo - SuperTinyIcons.svg',
        userValue = args["جود ريدز"]
    },
    {
        property = 'P2850',
        baseUrl = 'https://music.apple.com/us/artist/',
        siteName = 'فنان آي تيونز',
        icon = 'Apple Music icon.svg',
        userValue = args["فنان آي تيونز"]
    },
}

    -- بناء الروابط لكل موقع اجتماعي مع الأيقونة
    for _, social in ipairs(socialMediaProperties) do
        local link = getSocialMediaLink(entity, social.property, social.baseUrl, social.siteName, social.icon, social.userValue, pageTitle)
        if link then
            table.insert(links, link)
        end
    end

    -- إنشاء العنوان باستخدام "عنوان" أو اسم الصفحة
    local heading = string.format("'''%s''' على [[وسائل تواصل اجتماعي|مواقع التواصل الاجتماعي]]:", pageTitle)

    -- إذا كانت هناك روابط، عرضها داخل صندوق
    if #links > 0 then
        -- استخدام <hr> لإضافة فاصل بين العنوان والروابط
        local content = heading .. "<hr>" .. table.concat(links, '<br>')
        return sideBox({
            role = 'navigation',
            class = 'social-links-box social-links plainlinks',
            text = content
        })
    else
        return "لم يتم العثور على روابط لمواقع التواصل الاجتماعي."
    end
end

return p