طلب عضوية Discourse

:information_source: ملخص يتيح لك Discourse Member Application تشغيل عملية تقديم منظمة للأعضاء المحتملين قبل انضمامهم إلى مجتمع Discourse الخاص بك.
:hammer_and_wrench: رابط المستودع GitHub - R23DPrinting/discourse-member-application · GitHub
:open_book: دليل التثبيت كيفية تثبيت الإضافات في Discourse

discourse-member-application — نظام تقديم طلبات مسبق للدعوات للمجتمعات الخاصة

يتيح لك discourse-member-application تشغيل عملية تقديم منظمة للأعضاء المحتملين قبل انضمامهم إلى مجتمع Discourse الخاص بك. يملأ المتقدمون نموذجًا عامًا قابلاً للتخصيص على /apply، ويقوم المسؤولون بمراجعة الطلبات والموافقة عليها أو رفضها، ويتلقى المتقدمون الموافق عليهم رابط دعوة خاصًا تلقائيًا.

:link: GitHub: GitHub - R23DPrinting/discourse-member-application · GitHub


القصة

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

بحثت عن إضافة Discourse يمكنها التعامل مع الطلبات السابقة للدعوة. لم أجد واحدة تناسب احتياجاتي. لذلك قمت ببناء هذه الإضافة.


العرض التجريبي


الميزات

:clipboard: نموذج طلب قابل للتخصيص
يتم إنشاء النموذج بالكامل عبر علامة تبويب “الحقول” (Fields) في لوحة المسؤول — لا يتطلب أي كود. أنواع الحقول المدعومة: نص، مساحة نصية، نعم/لا، اختيار من متعدد، مجموعة خانات اختيار، وخانة اختيار. تدعم الحقول التسميات، والتلميحات، والإلزام/الاختياري، والتمكين/التعطيل، والرؤية الشرطية (إظهار حقل فقط عندما يكون لحقل آخر قيمة محددة).

:magnifying_glass_tilted_left: لوحة تحكم المسؤول
مراجعة وإدارة جميع الطلبات من صفحة مخصصة للإضافة. التصفية حسب الحالة (معلق / موافق عليه / مرفوض / تم الاسترداد)، البحث حسب البريد الإلكتروني أو اسم المستخدم، والتنقل عبر القوائم الكبيرة. عرض تفاصيل الطلب الكاملة، وإضافة ملاحظات إدارية خاصة، والموافقة أو الرفض بشكل فردي أو مجمّع.

:white_check_mark: مسار الموافقة
تؤدي الموافقة على الطلب إلى إنشاء دعوة Discourse للاستخدام مرة واحدة وإرسالها عبر البريد الإلكتروني إلى مقدم الطلب. يؤدي الرفض إلى إرسال بريد إلكتروني رفض قابل للتخصيص مع ملاحظات اختيارية. عندما يسترد مقدم الطلب دعوته وينشئ حسابًا، يتم تحديث حالة الطلب تلقائيًا إلى “تم الاسترداد”. يمكن اختياريًا إضافة الأعضاء الموافق عليهم إلى مجموعة Discourse تلقائيًا.

:bar_chart: التحليلات
يعرض قسم التحليلات إحصائيات ملخصة (إجمالي الطلبات، نسبة الموافقة، متوسط وقت المراجعة)، ورسمًا بيانيًا للاتجاه لمدة 12 أسبوعًا للطلبات مقابل الموافقات، وقمع تحويل من تم الإرسال → تمت الموافقة → تم الاسترداد.

:bell: إشعارات المسؤول
عند تقديم طلب جديد، يتم إرسال رسالة خاصة إلى أسماء المستخدمين المحددة (أو إلى جميع المسؤولين إذا تركت فارغة).

:artist_palette: واجهة مستخدم قابلة للتكوين

  • نص تقديمي في الجزء العلوي من النموذج (يدعم ترميز Markdown).
  • صفحة نجاح على /apply/success بعد الإرسال مع رسالة قابلة للتكوين (تدعم ترميز Markdown).
  • زر “التقديم للانضمام” على صفحة تسجيل الدخول والصفحة الرئيسية التي تتطلب تسجيل الدخول (يمكن التبديل بينهما).
  • انتهاء صلاحية الطلب — رفض تلقائي للطلبات المعلقة بعد عدد محدد من الأيام.

:e_mail: قوالب بريد إلكتروني قابلة للتحرير
يمكن تحرير كل من رسائل تأكيد التقديم ورسائل الرفض عبر المسؤول ← التخصيص ← قوالب البريد الإلكتروني — لا حاجة لتغييرات في الكود.

:locked: الأمان
تحديد المعدل (5 طلبات لكل عنوان IP في الساعة)، واكتشاف التكرار (يمنع إعادة التقديم بنفس البريد الإلكتروني أو اسم المستخدم المعلق/الموافق عليه، ويمنع رسائل البريد الإلكتروني/أسماء المستخدمين المسجلة بالفعل)، ودعوات للاستخدام مرة واحدة.


التكوين

التثبيت

أضف إلى ملف /var/discourse/containers/app.yml الخاص بك:

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/R23DPrinting/discourse-member-application.git

ثم أعد البناء:

cd /var/discourse && ./launcher rebuild app

إعداد نموذجك

بعد التثبيت، انتقل إلى المسؤول ← الإضافات ← طلب العضوية (Member Application) ← الحقول (Fields) لبناء نموذج الطلب الخاص بك.

تأتي الإضافة مع هذه الحقول الافتراضية (يمكن تحرير أو حذف كل منها):

  1. اسم المستخدم المطلوب
  2. أخبرنا شيئًا عن نفسك
  3. كيف سمعت عنا؟
  4. هل أنت حاليًا جزء من أي مجتمعات أخرى مماثلة عبر الإنترنت؟ (نعم/لا)
  5. إذا كانت الإجابة نعم، فما هي؟ (شرطي — يظهر فقط عندما تكون الإجابة السابقة نعم)
  6. إفصاحات البائعين (مجموعة خانات اختيار)
  7. تأكيد النزاهة (خانة اختيار — حقل نظام، لا يمكن حذفه)

استخدم زر إضافة حقل (Add field) لإنشاء حقول جديدة. استخدم الأسهم لأعلى/لأسفل لإعادة الترتيب. لجعل حقل شرطيًا، قم بتحريره واستخدم قسم “أظهر فقط عندما” (Show only when) لتحديد حقل أب وقيمة مشغلة.

سير العمل

  1. يزور العضو المحتمل موقعك وينقر على التقديم للانضمام (Apply to Join) (أو يتنقل مباشرة إلى /apply)
  2. يملأ النموذج ويرسله — لا يلزم وجود حساب
  3. يتلقى المسؤولون إشعار رسالة خاصة
  4. يراجع المسؤول الطلب في المسؤول ← الإضافات ← طلب العضوية ← الطلبات
  5. يوافق المسؤول ← يتلقى مقدم الطلب بريدًا إلكترونيًا للدعوة برابط للاستخدام مرة واحدة
  6. يسترد مقدم الطلب الدعوة، وينشئ حسابه، ويتم تحديث حالة الطلب إلى تم الاسترداد (Redeemed)

الإعدادات

الاسم الوصف
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 تسمية زر “التقديم للانضمام” (الافتراضي: “Apply to Join”)
member_application_intro_text نص تقديمي يظهر في الجزء العلوي من نموذج التقديم. يدعم ترميز Markdown. اتركه فارغًا لإخفائه.
member_application_success_message الرسالة التي تظهر على صفحة /apply/success بعد الإرسال. يدعم ترميز Markdown.

ملاحظات

  • مستقل عن المجتمع — يمكن تكوين جميع النصوص الافتراضية للحقول عبر علامة تبويب الحقول.
  • يعمل مع وضع login_required / الدعوات فقط في Discourse.
  • مرخص بموجب MIT.
  • تم اختباره على Discourse 2026.3.0.

المشاكل، وطلبات السحب، وطلبات الميزات مرحب بها على GitHub.

:link: GitHub - R23DPrinting/discourse-member-application · GitHub

5 إعجابات