وحدة:مواقع التواصل الاجتماعي
يمكن إنشاء صفحة توثيق الوحدة في وحدة:مواقع التواصل الاجتماعي/شرح
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 (2017).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