| الملخص | يتيح لك المكون الإضافي Discourse Surveys إنشاء استطلاعات رأي مباشرة داخل منشورات منتدى Discourse الخاص بك باستخدام بناء جملة Markdown بسيط. | |
| رابط المستودع | \u003chttps://github.com/discourse/discourse-surveys\u003e | |
| دليل التثبيت | كيفية تثبيت المكونات الإضافية في Discourse |
يتيح لك المكون الإضافي Discourse Surveys إنشاء استطلاعات رأي مباشرة داخل منشورات منتدى Discourse الخاص بك باستخدام بناء جملة Markdown بسيط. يدعم المكون الإضافي حاليًا مجموعة متنوعة من أنواع الأسئلة مثل الأزرار الاختيارية (radio buttons)، ومربعات الاختيار (checkboxes)، والقوائم المنسدلة، ومدخلات الأرقام، ومناطق النصوص، وتقييمات النجوم، وتقييمات الإبهام لأعلى/لأسفل.
الميزات
-
7 أنواع حقول مختلفة: أزرار اختيار، مربعات اختيار، قوائم منسدلة، مناطق نصوص، اختيار أرقام، تقييمات نجوم، وتقييمات إبهام لأعلى/لأسفل
-
حقول مطلوبة/اختيارية: ضع علامة على الحقول كمطلوبة لضمان الإكمال
-
دعم الرموز التعبيرية (Emoji): استخدم الرموز التعبيرية في خيارات الاستطلاع الخاصة بك
-
دعم Markdown: تنسيق نص غني في الأسئلة والخيارات
-
مصادقة المستخدم: مطالبات تسجيل دخول تلقائية للمستخدمين المجهولين
-
تتبع الاستجابات: يمنع الإرسالات المكررة من نفس المستخدم
-
إدراك الأذونات: يحترم أذونات الموضوع والفئة
-
متجاوب مع الجوال: يعمل بسلاسة على جميع الأجهزة
الاستخدام
هيكل الاستطلاع الأساسي
يجب تغليف جميع الاستطلاعات بعلامات [survey]:
[survey name="my-survey" title="Customer Feedback Survey"]
<!-- تذهب حقول الاستطلاع هنا -->
[/survey]
سمات الاستطلاع
-
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]
عرض الاستطلاع
أدناه مثال لكيفية عرض بناء جملة Markdown أعلاه في Discourse:
الاستخدام المتقدم
استخدام الرموز التعبيرية في الخيارات
[radio question="Choose your favorite animal:"]
- 🐈 Cat
- 🐶 Dog
- 🐦 Bird
- 🐠 Fish
[/radio]
تنسيق Markdown في الأسئلة
[radio question="Which **programming language** do you prefer?"]
- JavaScript
- Python
- Ruby
- Go
[/radio]
[checkbox question="Select your *favorite* features:"]
- Speed
- Security
- Ease of use
[/checkbox]
[textarea question="Please read our [guidelines](https://example.com) and provide feedback:"]
[/textarea]
التنسيقات المدعومة:
- غامق:
**text** - مائل:
*text* يتوسطه خط:~~text~~نص برمجي مضمن:`code`- روابط:
[text](url)
حقول مطلوبة واختيارية مختلطة
[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- زر الإرسال

