| ملخص | يتيح لك المكوّن الإضافي Discourse Surveys إنشاء استطلاعات رأي مباشرةً داخل منشورات منتدى Discourse الخاص بك باستخدام صيغة Markdown بسيطة. | |
| رابط المستودع | \u003chttps://github.com/discourse/discourse-surveys\u003e | |
| دليل التثبيت | كيفية تثبيت المكونات الإضافية في Discourse |
يسمح لك المكوّن الإضافي Discourse Surveys بإنشاء استطلاعات رأي مباشرةً داخل منشورات منتدى Discourse الخاص بك باستخدام صيغة Markdown بسيطة. يدعم المكوّن الإضافي حاليًا مجموعة متنوعة من أنواع الأسئلة مثل الأزرار الراديوية (radio buttons)، ومربعات الاختيار (checkboxes)، والقوائم المنسدلة (dropdowns)، ومدخلات الأرقام (number inputs)، ومناطق النص (text areas)، وتقييمات النجوم (star ratings)، وتقييمات الإبهام لأعلى/لأسفل (thumbs up/down ratings).
الميزات
-
7 أنواع حقول مختلفة: أزرار راديو، مربعات اختيار، قوائم منسدلة، مناطق نص، اختيار رقم، تقييمات نجوم، وتقييمات إبهام لأعلى/لأسفل
-
حقول مطلوبة/اختيارية: تحديد الحقول كـ “مطلوبة” لضمان الإكمال
-
دعم الرموز التعبيرية (Emoji): استخدم الرموز التعبيرية في خيارات الاستطلاع الخاصة بك
-
دعم HTML: تنسيق النص الغني في الأسئلة والخيارات
-
المصادقة للمستخدم: مطالبات تسجيل دخول تلقائية للمستخدمين المجهولين
-
تتبع الاستجابات: يمنع الإرسالات المكررة من نفس المستخدم
-
مراعاة الأذونات: يحترم أذونات الموضوع والفئة
-
متجاوب مع الجوال (Mobile Responsive): يعمل بسلاسة على جميع الأجهزة
الاستخدام
هيكل الاستطلاع الأساسي
يجب تغليف جميع الاستطلاعات بعلامات [survey]:
[survey name="my-survey" title="Customer Feedback Survey"]
<!-- تذهب حقول الاستطلاع هنا -->
[/survey]
سمات الاستطلاع (Survey Attributes)
-
name: مُعرّف فريد للاستطلاع (الافتراضي هو “survey”) -
title: عنوان اختياري يُعرض في أعلى الاستطلاع -
public: تحديد الرؤية (ميزة مستقبلية) -
status: حالة الاستطلاع (ميزة مستقبلية)
أنواع الحقول
1. الأزرار الراديوية (اختيار واحد)
[radio question="What is your favorite color?"]
- Red
- Blue
- Green
- Yellow
[/radio]
2. مربعات الاختيار (اختيار متعدد)
[checkbox question="Which features do you use? (Select all that apply)"]
- Email notifications
- Mobile app
- Desktop notifications
- API access
[/checkbox]
3. اختيار القائمة المنسدلة
[dropdown question="What is your age group?"]
- Under 18
- 18-24
- 25-34
- 35-44
- 45-54
- 55+
[/dropdown]
4. منطقة النص (نص طويل)
[textarea question="Please provide detailed feedback:" required="false"]
[/textarea]
5. اختيار الرقم
[number question="Rate this feature from 1-10:" min="1" max="10"]
[/number]
6. تقييم النجوم
[star question="How would you rate your overall experience?"]
[/star]
7. إبهام لأعلى/لأسفل
[thumbs question="Would you recommend this to others?"]
[/thumbs]
سمات الحقل
جميع أنواع الحقول تدعم هذه السمات:
-
question: نص السؤال (مطلوب) -
required: ما إذا كان يجب ملء الحقل (true/false، الافتراضي هوtrue) -
min: الحد الأدنى للقيمة لحقول الأرقام -
max: الحد الأقصى للقيمة لحقول الأرقام
مثال كامل
صيغة Markdown الأساسية للاستطلاع
إليك مثال أساسي لصيغة Markdown للاستطلاع يتضمن جميع الحقول المتاحة:
[survey name="awesome-survey-thumbs" title="Awesome Survey"]
[radio question="Choose any one option:"]
- cat
- dog
[/radio]
[checkbox question="Choose multiple options:"]
- red
- blue
- green
[/checkbox]
[dropdown question="Gender:"]
- Male
- Female
[/dropdown]
[number question="Rate this survey from 1 to 10:"]
[/number]
[textarea question="What is your feedback about xyz?" required="false"]
[/textarea]
[star question="How would you rate overall experience?"]
[/star]
[thumbs question="Were you satisfied with our services?"]
[/thumbs]
[/survey]
عرض الاستطلاع (Survey Rendering)
أدناه مثال لكيفية عرض صيغة Markdown المذكورة أعلاه في Discourse:
الاستخدام المتقدم
استخدام الرموز التعبيرية في الخيارات
[radio question="Choose your favorite animal:"]
- 🐈 Cat
- 🐶 Dog
- 🐦 Bird
- 🐠 Fish
[/radio]
تنسيق HTML في الأسئلة
[radio question="Which <strong>programming language</strong> do you prefer?"]
- JavaScript
- Python
- Ruby
- Go
[/radio]
حقول مطلوبة واختيارية مختلطة
[survey name="mixed-survey"]
[radio question="What is your role?" required="true"]
- Developer
- Designer
- Manager
- Other
[/radio]
[textarea question="Any additional thoughts?" required="false"]
[/textarea]
[/survey]
نتائج الاستطلاع
حاليًا، لا يحتوي هذا المكوّن الإضافي على واجهة مستخدم خلفية لعرض نتائج الاستطلاع مباشرةً. بدلاً من ذلك، يمكنك الاعتماد على استعلامات مستكشف البيانات (Data Explorer) لجلب وتحليل استجابات الاستطلاع. إليك مثال على استعلام:
-- [params]
-- text :survey_name = survey
SELECT
s.id,
s.name,
s.post_id,
sf.question,
COALESCE(sr.value, sfo.html) AS value,
sr.user_id,
sr.created_at AS responded_at
FROM
surveys s
JOIN survey_fields sf ON sf.survey_id = s.id
JOIN survey_responses sr ON sr.survey_field_id = sf.id
LEFT JOIN survey_field_options sfo ON sfo.id = sr.survey_field_option_id
WHERE
s.name = :survey_name
ORDER BY
s.id DESC
الأذونات والأمان
-
تسجيل الدخول مطلوب: يجب على المستخدمين المجهولين تسجيل الدخول قبل إرسال الاستجابات
-
استجابة واحدة لكل مستخدم: يمكن لكل مستخدم إرسال استجابة واحدة فقط لكل استطلاع
-
أذونات الموضوع: يجب أن يكون لدى المستخدمين إذن القراءة للموضوع لعرض الاستطلاعات
-
أذونات النشر: يجب أن يكون لدى المستخدمين إذن النشر في الموضوع لإرسال الاستجابات
-
المواضيع المؤرشفة: لا يمكن للاستطلاعات في المواضيع المؤرشفة قبول استجابات جديدة
-
المنشورات المحذوفة: لم يعد من الممكن الوصول إلى الاستطلاعات في المنشورات المحذوفة
القيود
-
يُسمح باستطلاع واحد فقط لكل منشور
-
لا يمكن تعديل هيكل الاستطلاع بعد تلقي الاستجابات
-
يجب أن تكون جميع أسئلة حقول الاستطلاع فريدة داخل استطلاع واحد
-
لا يمكن أن تكون أسئلة حقول الاستطلاع فارغة
التفاصيل التقنية
مخطط قاعدة البيانات
ينشئ المكوّن الإضافي أربعة جداول رئيسية في قاعدة البيانات:
-
surveys: سجلات الاستطلاع الرئيسية -
survey_fields: الحقول الفردية داخل الاستطلاعات -
survey_field_options: خيارات للحقول القائمة على الاختيار -
survey_responses: استجابات المستخدمين لأسئلة الاستطلاع
التصميم (Styling)
يتضمن المكوّن الإضافي CSS متجاوبًا يتكيف مع السمة الخاصة بك. يمكن إضافة تصميم مخصص عن طريق استهداف فئات CSS التالية:
-
.survey- حاوية الاستطلاع الرئيسية -
.survey-field- غلاف الحقل الفردي -
.field-[type]- حاويات أنواع الحقول المحددة -
.submit-response- زر الإرسال

