المجموعات الديناميكية للنقاش

:information_source: ملخص إدارة عضوية المجموعة تلقائيًا
:hammer_and_wrench: رابط المستودع \u003chttps://github.com/communiteq/discourse-dynamic-groups\u003e
:open_book: دليل التثبيت كيفية تثبيت الإضافات في Discourse

:warning: يجب اعتبار هذه الإضافة تجريبية :warning:

الميزات

غالبًا ما تحتاج مجتمعات Discourse إلى أتمتة عضويات المجموعات بناءً على شروط مثل امتلاك شارات أو عضويات مجموعات موجودة.

تشمل حالات الاستخدام الشائعة:

  • المستخدمون غير موجودين في مجموعة “المشتركين”

  • المستخدمون غير محظورين من النشر في Marketplace

  • المستخدمون في TL0 أو TL1، ولكن ليس TL2

  • المستخدمون الذين أكملوا البرنامج التعليمي للمستخدم الجديد أو كانوا أعضاء لأكثر من عام

  • المستخدمون الذين ينتمون إلى client_1 أو client_2 أو client_3 وليسوا متدربين

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

تقدم هذه الإضافة حقل تعبير منطقي لإعدادات المجموعة، مما يسمح للمسؤولين بتحديد قواعد تحدد ديناميكيًا عضوية المجموعة.

أمثلة:

  • المستخدمون الذين ليسوا في مجموعة “المشتركين”
    trust_level_0 AND NOT subscribers

  • المستخدمون غير المحظورين من النشر في Marketplace
    trust_level_2 AND NOT banned_users

  • المستخدمون الذين هم في TL0 أو TL1 ولكن ليس في TL2
    trust_level_0 AND NOT trust_level_2

  • المستخدمون الذين أكملوا البرنامج التعليمي للمستخدم الجديد أو هم أعضاء لأكثر من عام
    badge:certified OR badge:anniversary

  • المستخدمون الذين ينتمون إلى العميل 1 أو 2 أو 3 وليسوا متدربين
    (client_1 OR client_2 OR client_3) AND NOT interns

التكوين

بمجرد تثبيت الإضافة وتمكينها، ستظهر علامة تبويب جديدة في واجهة مسؤول المجموعة:

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

هام:
عند تحديد قاعدة، يتم تمييز المجموعة على أنها تلقائية، مما يعطل تغييرات الأعضاء اليدوية. للتراجع عن المجموعة إلى الإدارة اليدوية، ما عليك سوى مسح حقل التعبير. سيبقى الأعضاء الحاليون، وستستعيد التحكم اليدوي.

24 إعجابًا

عمل رائع يا ريتشارد!

هذا يسد فجوة كبيرة في إدارة المجموعات داخل Discourse. أنا سعيد للغاية، وأتطلع إلى تجربته بشكل جيد.

سأستخدمه بشكل أساسي لتمكين المجموعات الفرعية الوظيفية.

3 إعجابات

بالتأكيد إضافة مرحب بها لميزات Discourse!

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

تم دمج 7 مشاركات في موضوع موجود: يعمل الإدخال الأول فقط مع حقول التحديد المتعدد عند استخدام مشغل عند تسجيل دخول المستخدم لأول مرة

مرحبًا، شكرًا لك على تطوير هذا المكون الإضافي المفيد للغاية!

أستخدم حاليًا Discourse Dynamic Groups لإضافة جميع المستخدمين غير المجهولين تلقائيًا إلى مجموعة خاصة. التعبير المنطقي الخاص بي هو:

NOT anonymous_users
السلوك المتوقع:
عندما يسجل مستخدم جديد (لا ينتمي إلى مجموعة anonymous_users)، يجب إضافته تلقائيًا إلى هذه المجموعة، دون أي تدخل يدوي.

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

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

همم… ملاحظة جيدة. وأنا أتفق على أن هذا يجب أن يكون السلوك المتوقع.

من وجهة نظر فنية، لن يعيد المكون الإضافي تقييم عضوية المجموعة إلا في حالتين مختلفتين:

  1. عند حفظ التعبير المنطقي في إعدادات المجموعة
  2. إذا تمت إضافة مستخدم أو إزالته من مجموعة مذكورة في التعبير المنطقي.

عندما يسجل مستخدم جديد، لا تكون أي من الحالتين صحيحة.

هل يمكنك محاولة تغيير التعبير إلى trust_level_0 AND NOT anonymous_users وإبلاغنا إذا كان ذلك يحل المشكلة؟

3 إعجابات

مرحباً،

عندما أحاول استخدام التعبير

trust_level_0 AND NOT anonymous_users

أحصل على الخطأ:
كلمة مفتاحية أو مجموعة أو شارة غير معروفة: 'anonymous_users'

إذا قمت بتغيير اسم المجموعة إلى مجموعتي الفعلية، على سبيل المثال:

trust_level_0 AND NOT interns

ما زلت أتلقى:
كلمة مفتاحية أو مجموعة أو شارة غير معروفة: 'interns'

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

4 إعجابات

شكرًا لك على الإبلاغ عن ذلك.

أثناء محاولة إعادة الإنتاج، اكتشفتُ خطأين، وأحدهما ربما أصابك. هل يمكنك تحديث المكوّن الإضافي إلى أحدث إصدار 59640f1 ومعرفة ما إذا كان ذلك يحل المشكلة.

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

3 إعجابات

هل يستخدم هذا مكون “Category restrictor” الإضافي الخاص بك أم أنه يعمل بشكل مستقل عنه؟

مكون إضافي رائع لسد الفجوات.

إنها تعمل بشكل مستقل.

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

مرحباً،

أنا أستخدم إضافة المجموعات الديناميكية (Dynamic Groups) وقمت بتعيين معاييري كالتالي:

trust_level_0 AND NOT anon_group

ومع ذلك، لاحظت أنه يتم إضافة المستخدمين ذوي trust_level_1 الذين ليسوا في anon_group إلى هذه المجموعة الديناميكية أيضًا.

هل يمكنك تأكيد ما إذا كان هذا هو السلوك المتوقع، أم أن هذه مشكلة؟

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

إعجابَين (2)

شكرا على التوضيح