| ملخص | يسمح للمستخدمين المصرح لهم بنسخ أحداث/مواضيع التقويم (التي تم إنشاؤها عبر Discourse Calendar and Events ) إلى فترة زمنية جديدة. يعمل على موضوع واحد أو سلسلة كاملة موسومة (على سبيل المثال، كل موضوع موسوم بـ `grand-prix`)، مع خطوة مراجعة لتحرير التواريخ المقترحة قبل التأكيد. | |
| رابط المستودع | GitHub - louking/discourse-event-duplicator: discourse plugin to duplicate events · GitHub | |
| دليل التثبيت | كيفية تثبيت الإضافات في Discourse |
ملخص
تم بناء هذه الإضافة لمجتمع نادي ركض يكون فيه تقويمهم متشابهًا إلى حد كبير بأحداث تتكرر كل عام في تواريخ مُزاحة. كان إعادة إنشاء موضوع كل حدث يدويًا في كل موسم يعني تكرار كتلة [event ...]، وتصحيح العنوان، والبحث عن تلك التي تم إعادة إنشاؤها بالفعل. كان ذلك شاقًا وعرضة للأخطاء. يقوم Event Duplicator بأتمتة العملية: اختر حدثًا مصدرًا، أو سلسلة كاملة موسومة منه، واحصل على تاريخ جديد مقترح، راجعه أو عدله، ثم أكد.
راجع docs/USAGE.md للحصول على دليل استخدام كامل موجّه للمستخدمين: من يمكنه استخدامها، نسخ سلسلة مقابل موضوع واحد، وكيفية عمل خطوة المراجعة.
الميزات
- نسخ السلسلة: اختر فئة ووسمًا أو أكثر (على سبيل المثال،
grand-prix،signature-race؛ يتم مطابقة النتائج باستخدام OR وإزالة التكرارات، لذا يظهر الموضوع الذي يحتوي على عدة وسوم مطابقة مرة واحدة فقط)، مع إمكانية تقييده بنطاق تاريخي للمصدر، ثم راجع تواريخ التكرار المقترحة قبل التأكيد. - نسخ حدث واحد: نفس سير عمل المراجعة والتأكيد لموضوع واحد في كل مرة، من قائمة إدارة ذلك الموضوع (أيقونة المفتاح).
- خطوة مراجعة قابلة للتحرير: تعرض كل صف تاريخ البدء الأصلي بجانب تاريخ جديد مقترح يمكنك تحريره (بدقة يومية)، بالإضافة إلى عنوان قابل للتحرير. يتم اشتقاق تاريخ الانتهاء تلقائيًا دائمًا من مدة الحدث المصدر الخاصة به، لذا لا يمكن أن يخرج عن المزامنة مع تاريخ البدء المُعدّل.
- استراتيجيتان قابلتان للتبديل لتزاحة التواريخ، يمكن اختيارهما لكل تشغيل مع قيمة افتراضية قابلة للتكوين:
- نفس التاريخ التقويمي: إزاحة للأمام بعدد الأشهر المُحدّد.
- يوم الأسبوع N من الشهر: الحفاظ على “السبت الثالث من الشهر” على سبيل المثال، حتى عندما تقع الإزاحة في شهر مختلف.
- مقدار إزاحة قابل للتكوين: إزاحة للأمام بعدد أي من الأشهر (12، أي سنة واحدة، بشكل افتراضي)، وليس سنويًا فقط. مفيد للتكرارات الشهرية أو ربع السنوية أو غيرها. يمكن تجاوزها لكل تشغيل، مع قيمة افتراضية على مستوى الموقع عبر إعداد جديد (أدناه).
- وضع علامة “التاريخ待定”: للأحداث التي لم يتم تحديد تاريخها الفعلي بعد، ضع علامة على الصف. يتم إضافة ملاحظة قابلة للتكوين (افتراضيًا
(date TBD)) إلى عنوان الموضوع واسم الحدث. - تتبع النسخ: يمنع نسخ نفس الحدث مرتين (مهم لأن الموضوع يمكن أن يحمل أكثر من وسم سلسلة). يتم وضع علامة على المواضيع المنسخة مسبقًا وإلغاء تحديدها بشكل افتراضي أثناء المراجعة، مع خيار صريح لإعادة تحديد المربع لإجبار العملية. يؤدي حذف موضوع منسوخ إلى تحرير مصدره لإعادة النسخ، ويعيد الإلغاء قفله.
- ملاحظات ما بعد النسخ: تتحول الصفوف المنسوخة بنجاح إلى رابط للموضوع الجديد مباشرة في جدول المراجعة. يتم الإبلاغ عن الأخطاء الحقيقية لكل صف بدلاً من إلغاء الدفعة بأكملها.
المتطلبات
- يجب تثبيت discourse-calendar وتمكينه. تنسخ هذه الإضافة الأحداث من خلال استخدام تنسيق منشور
[event ...]الخاص بـ discourse-calendar ونموذجDiscoursePostEvent::Eventبدلاً من إنشاء تخزين تواريخ منفصل. - تم اختبارها ضد Discourse 2026.7.0. لم يتم التحقق منها على الإصدارات السابقة.
التكوين
جميع الإعدادات موجودة تحت الإدارة → الإعدادات → الإضافات، ابحث عن event_duplicator:
| الإعداد | الافتراضي | الوصف |
|---|---|---|
event_duplicator_enabled |
إيقاف | يمكّن الإضافة. |
event_duplicator_allowed_groups |
الموظفين | المجموعات (بالإضافة إلى إذن إنشاء الموضوعات لكل فئة) المسموح لها بنسخ الأحداث. ملاحظة: القائمة الفارغة تعني لا أحد، وليس الجميع. أضف مجموعة “الجميع” لفتح هذا بالكامل. |
event_duplicator_default_date_strategy |
نفس التاريخ التقويمي | قاعدة إزاحة التواريخ الافتراضية؛ يمكن تجاوزها لكل تشغيل. |
event_duplicator_default_shift_months |
12 | مقدار الإزاحة الافتراضي، بالأشهر؛ يمكن تجاوزها لكل تشغيل. |
event_duplicator_tbd_annotation |
(date TBD) |
النص المضاف إلى عنوان الموضوع/اسم الحدث المنسوخ عند وضع علامة TBD في المراجعة. اتركه فارغًا لإيقاف ميزة الملاحظة بالكامل. |
التفويض هو AND من ثلاثة فحوصات: أذونات الفئات العادية في Discourse، والعضوية في event_duplicator_allowed_groups، وإذن discourse-calendar الخاص لإنشاء منشورات [event] على الإطلاق.
القيود المعروفة
- تحرير التواريخ في خطوة المراجعة بدقة يومية فقط (بدون تحرير وقت اليوم). هذا قرار نطاق مقصود: حالة الاستخدام المستهدفة هي تواريخ السباقات/الأحداث المتكررة، وليس الأوقات.
المصدر / المشكلات
- GitHub: GitHub - louking/discourse-event-duplicator: discourse plugin to duplicate events · GitHub
- المشكلات/طلبات الميزات: Issues · louking/discourse-event-duplicator · GitHub
- مجموعات الاختبار الخلفية (RSpec) والأمامية (QUnit) مضمنة وتشغل في CI مع كل دفع/طلب سحب.
تم التحديث في 2026-08-01: الإصدار v1.1.0 يضيف إزاحة شهرية قابلة للتكوين، انظر أدناه

