| ملخص | يتيح لك تطبيق عضو Discourse إدارة عملية طلبات منظمة للأعضاء المحتملين قبل انضمامهم إلى مجتمع Discourse الخاص بك. | |
| رابط المستودع | R23DPrinting-group / discourse-member-application · GitLab | |
| دليل التثبيت | كيفية تثبيت الإضافات في Discourse |
discourse-member-application — نظام طلبات ما قبل الدعوة للمجتمعات الخاصة
يتيح لك discourse-member-application إدارة عملية طلبات منظمة للأعضاء المحتملين قبل انضمامهم إلى مجتمع Discourse الخاص بك. يملأ مقدمو الطلبات نموذجًا عامًا قابلًا للتخصيص في /apply، ويقوم المشرفون بمراجعة الطلبات والموافقة عليها أو رفضها، ويتلقى مقدمو الطلبات المعتمدون رابط دعوة خاص تلقائيًا.
GitLab: R23DPrinting-group / discourse-member-application · GitLab
القصة
أدير مجتمعًا خاصًا يستخدم وضع الدعوة فقط في Discourse. كنا ندير طلبات العضوية يدويًا — نموذج Google، جدول بيانات، ونسخ ولصق روابط الدعوة يدويًا. لقد كان يعمل، لكنه لم يكن قابلاً للتوسع وشعرنا بأنه منفصل عن المجتمع نفسه.
بحثت عن إضافة Discourse يمكنها التعامل مع طلبات ما قبل الدعوة. لم أجد ما يناسب احتياجاتي. لذا قمت ببناء هذا.
عرض توضيحي
الميزات
نموذج طلب قابل للتخصيص
يتم بناء النموذج بالكامل عبر علامة التبويب “الحقول” في لوحة الإدارة — لا يلزم أي كود. أنواع الحقول المدعومة: نص، منطقة نص، نعم/لا، أزرار اختيار، مجموعة مربعات اختيار، ومربع اختيار. تدعم الحقول التسميات، التلميحات، إلزامية/اختيارية، تمكين/تعطيل، والظروف الظاهرية (إظهار حقل فقط عندما يكون لحقل آخر قيمة محددة).
لوحة تحكم المشرف
راجع وأدر جميع الطلبات من صفحة مخصصة للإضافة. قم بالفرز حسب الحالة (قيد الانتظار / معتمد / مرفوض / مُسترد)، وابحث عبر البريد الإلكتروني أو اسم المستخدم، وقم بالتمرير عبر القوائم الكبيرة. اعرض تفاصيل كاملة عن الطلب، أضف ملاحظات إدارية خاصة، واعتمد أو ارفض بشكل فردي أو جماعي.
سير عمل الاعتماد
توليد دعوة Discourse ذات استخدام واحد عند اعتماد طلب وإرسالها عبر البريد الإلكتروني إلى مقدم الطلب. يرسل الرفض بريدًا إلكترونيًا مخصصًا للرفض مع تغذية راجعة اختيارية. عندما يسترد مقدم الطلب دعوته وينشئ حسابًا، يتم تحديث حالة الطلب تلقائيًا إلى “مُسترد”. يمكن إضافة الأعضاء المعتمدين تلقائيًا إلى مجموعة Discourse كخيار.
التحليلات
تعرض علامة التبويب “التحليلات” إحصائيات ملخصة (إجمالي الطلبات، نسبة الاعتماد، متوسط وقت المراجعة)، ورسمًا بيانيًا للاتجاهات لمدة 12 أسبوعًا للمقارنة بين الطلبات المعتمدة، وخط أنابيب التحويل من المُقدَّم → المعتمد → المُسترد.
إشعارات المشرف
عند تقديم طلب جديد، يتم إرسال رسالة خاصة إلى أسماء المستخدمين المحددة (أو جميع المشرفين إذا تركت فارغة).
واجهة مستخدم قابلة للتكوين
- نص تمهيدي في أعلى النموذج (يدعم Markdown)
- صفحة نجاح في
/apply/successبعد التقديم برسالة قابلة للتكوين (يدعم Markdown) - زر “قدم للانضمام” في صفحة تسجيل الدخول والصفحة الرئيسية التي تتطلب تسجيل الدخول (قابل للتفعيل/الإيقاف)
- انتهاء صلاحية الطلبات — رفض تلقائي للطلبات قيد الانتظار بعد عدد محدد من الأيام
قوالب البريد الإلكتروني القابلة للتحرير
يمكن تحرير كل من بريد تأكيد التقديم ورسالة الرفض عبر الإدارة → تخصيص → قوالب البريد الإلكتروني — لا حاجة لتغييرات في الكود.
الأمان
تحديد المعدل (5 طلبات لكل عنوان IP في الساعة)، وكشف التكرار (يمنع إعادة التقديم ببريد إلكتروني أو اسم مستخدم قيد الانتظار/معتمد، ويمنع عناوين البريد الإلكتروني/أسماء المستخدمين المسجلة بالفعل)، وروابط دعوة ذات استخدام واحد.
الإعدادات
التثبيت
أضف إلى /var/discourse/containers/app.yml:
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://gitlab.com/r23dprinting-group/discourse-member-application.git
ثم أعد البناء:
cd /var/discourse && ./launcher rebuild app
إعداد النموذج الخاص بك
بعد التثبيت، انتقل إلى الإدارة → الإضافات → تطبيق العضو → الحقول لبناء نموذج طلبك.
تأتي الإضافة مع هذه الحقول الافتراضية (جميعها قابلة للتحرير أو الحذف):
- اسم المستخدم المطلوب
- أخبرنا قليلاً عن نفسك
- كيف سمعت عنا؟
- هل أنت عضو حاليًا في أي مجتمعات عبر الإنترنت مشابهة؟ (نعم/لا)
- إذا نعم، أي منها؟ (شرطي — يُعرض فقط عندما تكون الإجابة أعلاه نعم)
- إفصاحات البائعين (مجموعة مربعات اختيار)
- تأكيد الصدق (مربع اختيار — حقل نظامي، لا يمكن حذفه)
استخدم زر إضافة حقل لإنشاء حقول جديدة. استخدم أسهم الأعلى/الأسفل لإعادة الترتيب. لجعل حقلًا مشروطًا، قم بتحريره واستخدم قسم “أظهر فقط عندما” لتحديد الحقل الأب وقيمة الزناد.
سير العمل
- يزور عضو محتمل موقعك ويضغط على قدم للانضمام (أو ينتقل مباشرة إلى
/apply) - يملأ النموذج ويرسله — لا يلزم وجود حساب
- يتلقى المشرفون إشعارًا برسالة خاصة
- يراجع المشرف الطلب في الإدارة → الإضافات → تطبيق العضو → الطلبات
- يوافق المشرف → يتلقى مقدم الطلب بريدًا إلكترونيًا بدعوة برابط ذي استخدام واحد
- يسترد مقدم الطلب الدعوة، ينشئ حسابه، ويتم تحديث حالة الطلب إلى مُسترد
الإعدادات
| الاسم | الوصف |
|---|---|
member_application_enabled |
تمكين أو تعطيل نموذج الطلب في /apply |
member_application_notify_usernames |
أسماء المستخدمين المفصولة بفواصل للإشعار عبر الرسائل الخاصة عند تقديم طلب جديد. اتركها فارغة لإشعار جميع المشرفين. |
member_application_invite_group |
اسم المجموعة لإضافتها إلى الدعوة عند الاعتماد (اتركها فارغة لتجاوز) |
member_application_expiry_days |
رفض تلقائي للطلبات قيد الانتظار بعد هذا العدد من الأيام (0 = أبدًا) |
member_application_expiry_notify |
إرسال بريد إلكتروني للرفض عند انتهاء صلاحية الطلبات تلقائيًا |
member_application_show_apply_button |
إظهار زر “قدم للانضمام” في صفحة تسجيل الدخول والصفحة الرئيسية التي تتطلب تسجيل الدخول |
member_application_apply_button_text |
التسمية الخاصة بزر “قدم للانضمام” (الافتراضي: “قدم للانضمام”) |
member_application_intro_text |
نص تمهيدي يُعرض في أعلى نموذج التقديم. يدعم Markdown. اتركه فارغًا للإخفاء. |
member_application_success_message |
الرسالة المعروضة في صفحة /apply/success بعد التقديم. يدعم Markdown. |
ملاحظات
- محايد للمجتمع — جميع نصوص الحقول الافتراضية قابلة للتكوين عبر علامة التبويب “الحقول”
- يعمل مع وضع
login_required/ وضع الدعوة فقط في Discourse - مرخص بموجب MIT
- مُختبر على Discourse 2026.3.0
المشاكل، طلبات السحب (PRs)، وطلبات الميزات مرحب بها على GitLab.