وحدة:مواقع التواصل الاجتماعي
المظهر
صُنّفت هذه الوحدة على أنها محمية. تصل الوحدة لهذه المرحلة عندما تستخدم في صفحات كثيرة جدًا. فيجب أن تحمى بسبب أن عمليات التخريب أو الأخطاء تطال الكثير من الصفحات. كما هناك تعديلات غير مجدية تتم على هذه الوحدات تكون عبارة عن حركات صبيانية تسبب تعب للخادم. |
الاستخدام
{{#استدعاء:مواقع التواصل الاجتماعي|main}}
تستخدم هذه الوحدة في {{مواقع التواصل الاجتماعي}} وتعمل على جلب مواقع التواصل الإجتماعي في المقالات حسب الوسائط المحلية أو عن طريق خواص ويكي بيانات.
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