روابط اشتراك التقويم لتطبيقات التقويم الخارجية

لقد أضفنا علامة تبويب التقويم (Calendar) جديدة إلى تفضيلات المستخدم تتيح لك الاشتراك في خلاصات Discourse في تطبيقات التقويم الخارجية مثل تقويم Google (Google Calendar) وتقويم Apple (Apple Calendar) وMicrosoft Outlook.

:down_arrow:

كيف يعمل

انتقل إلى علامة التبويب التفضيلات (Preferences) ← التقويم (Calendar) وانقر على إنشاء عناوين URL للاشتراك (Generate Subscription URLs). ستحصل على أزرار اشتراك بنقرة واحدة لـ:

  • تقويم Google (Google Calendar) - يفتح تقويم Google مع تعبئة الخلاصات مسبقًا
  • Microsoft Outlook - يفتح مربع حوار اشتراك الويب في Outlook
  • تقويم Apple (Apple Calendar) - يشغل تطبيق التقويم الأصلي عبر webcal://
  • نسخ عنوان URL (Copy URL) - لأي تطبيق تقويم آخر يدعم خلاصات ICS

الخلاصات المتاحة

متاحة دائمًا:

  • تذكيرات الإشارات المرجعية (Bookmarked Reminders) - إشاراتك المرجعية التي تحتوي على تواريخ تذكير

مع تفعيل إضافة discourse-calendar:

  • جميع الأحداث (All Events) - جميع أحداث المنتدى
  • أحداثي (My Events) - الأحداث التي ستحضرها أو تهتم بها

لمطوري الإضافات (Plugin Developers)

يمكن للإضافات (Plugins) تسجيل خلاصات ICS إضافية باستخدام واجهة برمجة التطبيقات الجديدة register_calendar_subscription_feed. تظهر الخلاصات المسجلة بهذه الطريقة تلقائيًا في علامة تبويب تفضيلات التقويم عند تمكين الإضافة.

الأمان (Security)

تستخدم عناوين URL للاشتراك مفاتيح API للمستخدم محددة النطاق ومقيدة بالوصول للقراءة فقط بتنسيق ICS. المفاتيح محدودة بمعدل، وتُعرض عناوين URL مرة واحدة فقط عند الإنشاء — يمكن للمستخدمين إعادة إنشائها في أي وقت، مما يؤدي إلى إلغاء صلاحية العناوين القديمة.

25 إعجابًا

شكراً @Falco، ولكن كيف نزيل الخيارات الخاصة بالشركات؟ أجد أنه من المسيء لمجتمعي أن يضطر لرؤية إعلانات للخدمات الاحتكارية.

إعجاب واحد (1)

يمكنك إخفاؤه باستخدام CSS.

إعجابَين (2)

شكراً جزيلاً على هذا التنفيذ - سيزيد هذا من قابلية استخدام إضافة التقويم/الأحداث للعديد من المجتمعات!

لدي نفس الاعتراض الذي أبداه @hellekin: نحن في بيئة مفتوحة المصدر داخل Discourse. في مجتمعنا، لا أحد يستخدم تقويم جوجل (Google Calendar) أو مايكروسوفت (Microsoft). إذا احتاج المستخدمون إلى رابط لهذه الخدمات الخاصة، فيجب عليهم اتخاذ القرار بأنفسهم، وليس التطبيق. لذلك، أفضل أن يتم اختيار نوع خدمة التقويم الخارجية عند خطوة إنشاء روابط الاشتراك (على سبيل المثال، باستخدام بعض مربعات الاختيار)، وليس لاحقاً.

إعجاب واحد (1)

تحسين “التصفية”

لدينا العديد من المجتمعات على مثيل (instance) ديسكورس الخاص بنا. وهي مفصولة بأذونات المجموعات وبعض المستخدمين أعضاء في أكثر من مجتمع واحد. سيكون من الملائم تصفية عنوان URL لـ “Discourse Calendar - All Events” لعرض إدخالات تقويم مجتمع معين فقط. مثال على عنوان URL

https://discourse.example.com/discourse-post-event/events.ics?user_api_key=c2aa22d800dd473b62d199d796742382&group=[groupname]

باستخدام هذا التحسين، سيكون من الممكن مشاركة أحداث ديسكورس لمجتمع معين (!) على موقعه الخاص، على سبيل المثال، باستخدام إضافة ووردبريس “ICS calendar”.

إعجابَين (2)

اقتراح تحسين صغير آخر: إذا كنت تريد الاشتراك في أحداث Discourse على عميلين مختلفين (على سبيل المثال، Thunderbird على جهازين)، فأنت بحاجة إلى نسخ عنوان URL مرتين. ولكن يتم عرض عنوان URL مرة واحدة فقط حاليًا. إذا أضفت عميلاً ثانيًا، فعليك إعادة إنشاء عناوين URL وتفقد العناوين الأولى.

إعجاب واحد (1)

ألا يعمل الخلاص الذي ينشئه مستخدم في إحدى تلك المجموعات بهذه الطريقة بالفعل؟ هل اختبرته؟

أنت تحتاج فقط للنسخ مرة واحدة، ثم اللصق في البرنامجين اللذين تحتاجهما.
وإذا نسيت برنامجًا، يمكنك إعادة الإنشاء بنقرة واحدة.

إعجابَين (2)

هذا رائع جدًا. قد تكون فكرة التغذية الإخبارية هي أيضًا إضافة (plugin) عمليات البحث المحفوظة.

[quote=“Falco, post:7, topic:398902”]تحتاج إلى النسخ مرة واحدة فقط، ثم اللصق في العميلين اللذين تحتاجهما.

وإذا نسيت عميلاً، يمكنك إعادة الإنشاء بنقرة واحدة.

[/quote]

أفهم، ولكن النقطة التي أثيرها هي عملية إعادة الإنشاء المطلوبة بعد عرض عناوين URL لأول مرة.

إذا استخدمت رابط التقويم على جهازين مختلفين، فمن المحتمل ألا يكونا متاحين للإعداد في نفس الوقت. سأصل إلى ملفي الشخصي في ديسكورس (Discourse) من الجهاز الأول ثم لاحقًا مرة أخرى من الجهاز الثاني. سيكون من الأفضل عرض عنوان URL القديم مرة أخرى وإلغاء صلاحيته فقط بناءً على طلب صريح.

إذا كنت عضوًا في مجتمعين مختلفين (ومجموعات الأذونات الخاصة بهما)، فإن “https://discourse.example.com/discourse-post-event/events.ics” يعرض أحداث كلا المجتمعين. هذا صحيح حتى الآن. ولكن قد يكون لكل مجتمع موقعه الإلكتروني الخاص. إذا كنت أرغب في مشاركة الأحداث من Discourse على مواقعهم الإلكترونية، فسأرغب فقط في رؤية أحداث “المجتمع أ” وليس “المجتمع ب”. والعكس صحيح.

إعجاب واحد (1)

أنا أستخدم هذا مع تقويم Google، وهو رائع حقًا!

غير أن التغييرات على الفعاليات لا تبدو وكأنها تُنقل إلى هنا، سواء كانت تعديلات أو حذفًا.

إليك تضمين تقويم Google:

وهذا هو التقويم على موقعي، حيث يمكنك رؤية أنني قمت بحذف الفعالية التجريبية رقم 5 ونقلت الفعالية التجريبية الرابعة:

https://spokes.nz/upcoming-events/month/2026/3/1

هل لديك أي فكرة عن سبب عدم ظهور مزامنتها مع Google؟

إعجاب واحد (1)

يُجلب Google Calendar التحديثات مرتين في اليوم في المتوسط، لذا قد يستغرق الأمر بضع ساعات حتى تنعكس التغييرات.

إعجابَين (2)

أجل، لقد تم المزامنة الآن.

هذا خبر جيد جدًا. لا تتوقع أن يتم دفع التغييرات في اللحظة الأخيرة أو التواصل بشأنها تلقائيًا!

هل الأمر مشابه للخدمات الأخرى؟

إعجاب واحد (1)

إذا كنت تتحدث عن خدمات التقويم لدى موفري الخدمات الآخرين، فإن المبدأ نفسه ينطبق: مزامنة من مرة إلى مرتين يوميًا. في ذلك الوقت، لم أجد حلاً لزيادة عدد عمليات المزامنة. لاحقًا، أدركت أن هذا أمر طبيعي تمامًا بالنظر إلى عدد التقويمات التي يتم مزامنتها حول العالم :rofl: أعتقد أنه يضع هذا الحد لتجنب إغراق خوادمهم!

ربما أكون مخطئًا.

إعجابَين (2)

ملاحظات بعد اختبارات حقيقية مباشرة:

الخلفية: مثيل Discourse الخاص بنا مشترك بين مجموعات/مجتمعات مستخدمين متعددة، ولكل منها مجموعات أذونات منفصلة. لدينا فئة رئيسية لكل من هذه المجموعات. هذه الفئة مرئية للعامة، ويتم دمج محتواها في فيديفري (Discourse ActivityPub). كما تعرض تقويمًا عامًا. مثال (https://forum.netzwissen.de/c/meshcore-str/84):

Pasted image 20260401075142.png

يعرض التقويم الأحداث من المنشورات في الفئة الرئيسية وكذلك من الفئات الفرعية. لا تظهر منشورات الأحداث في الفئات الفرعية (التي تكون مرئية فقط عند “تسجيل الدخول” مع مجموعة أذونات المجتمع) في التقويم الرئيسي للمستخدمين المجهولين (غير المسجلين). مثالي - هذه هي الوظيفة المتوقعة!

أرى شرطين سيجعلان رابط تقويم ICS «كاملاً من حيث الميزات». نستخدم رابط تقويم ICS الجديد لمشاركة الأحداث المنشأة في Discourse على المواقع العامة للمجتمعات (نظام إدارة المحتوى: WordPress).

  1. يجب أن تكون الأحداث المعروضة في ملف ICS «قابلة للفلترة» حسب المجتمع/مجموعة الأذونات. الصيغة المقترحة:
[ics_calendar url="https://discourse.example.com/discourse-post-event/events.ics?user_api_key=[xxxx];group=[discourse_group_id]"]

  1. يجب أن يعرض ملف ICS فقط الأحداث ذات الحالة «عام». لا ينبغي عمومًا نشر الأحداث ذات الحالة «خاص» أو «مستقل» في ملف ICS. ملاحظة: لم أختبر بعد ما إذا كان هذا مُنفّذًا بالفعل…
إعجاب واحد (1)

هذا إضافة رائعة! :clap:

للأسف، على الرغم من تفعيل مكون الإضافات الخاص بال التقويم (وقد استخدمناه بانتظام)، فإن اشتراك “الإشارات المرجعية” فقط هو الذي يتم إنشاؤه عند توليد الروابط الخاصة بمستخدمي. هل لديكم أي أفكار حول سبب حدوث ذلك؟

أتفق أيضًا مع @Thomas_Rother على أنه ينبغي إظهار روابط الاشتراك حتى يتم إلغاؤها أو إعادة توليدها. تتغير الأجهزة والتطبيقات مع مرور الوقت، وإعادة الاشتراك على جميع الأجهزة لمجرد الرغبة في إضافة جهاز واحد إضافي أمر ممل ويبدو غير ضروري. ربما يمكن جعل ذلك خيارًا في إعدادات المكون الإضافي، اعتمادًا على حساسية بيانات الأحداث.

إعجاب واحد (1)

يجب تفعيل إعداد “تفعيل حدث منشور Discourse” ليظهر.

إعجاب واحد (1)

نستخدم أحداث المنشورات منذ سنوات:

هل يمكن أن تكون المشكلة مرتبطة بالتثبيتات التي كانت تستخدم الإضافة المنفصلة سابقًا؟ لقد جربت أيضًا إلغاء تنشيط الإضافة ثم إعادة تنشيطها، لكن ذلك لم يحل المشكلة.

إعجاب واحد (1)

لقد جئت هنا أبحث عن هذه الميزة بالتحديد، لذا أنا سعيد جدًا بتطبيقها!

أتفق مع ملاحظات @hellekin و@Thomas_Rother بشأن الروابط المؤسسية. إذا أمكن جعلها اختيارية، فسيكون ذلك رائعًا. يستخدم الكثيرون Discourse لأنهم يؤمنون بالسيادة الرقمية، لذا فإن ظهور هذه الشعارات ليس مناسبًا.

الأهم من ذلك هو إمكانية اكتشاف الميزة. فهي مخفية ضمن تفضيلات المستخدم، لكن سيكون من الرائع جدًا عرضها مباشرة في شريط تنسيق التقويم. انقر على “الأحداث القادمة” ثم ستجد رابطًا للاشتراك، وهذا سيكون مثاليًا. :1st_place_medal:

إعجابَين (2)

لديك الحل هنا

إعجاب واحد (1)