x

الفصول الرئيسية

  1. LimeSurvey Cloud مقابل LimeSurvey CE
  2. دليل البدء السريع - LimeSurvey 3.0+
  3. التثبيت - LimeSurvey CE
  4. كيفية تصميم استبيان جيد (دليل)
  5. البدء
  6. إدارة LimeSurvey
  7. الاستبيانات - مقدمة
  8. إعدادات الاستبيان
  9. قائمة المسح
  10. هيكل المسح
  11. الأسئلة - مقدمة
  12. مجموعات الأسئلة - مقدمة
  13. المسوحات - الإدارة
  14. خيارات شريط أدوات الاستبيان
  15. استبيان متعدد اللغات
  16. محرك ExpressionScript - دليل البدء السريع
  17. غير مصنفة والميزات المتقدمة
  18. الأسئلة الشائعة العامة
  19. استكشاف الأخطاء وإصلاحها
  20. حلول بديلة
  21. الترخيص
  22. سجل تغييرات الإصدارات
  23. البرامج المساعدة
 Actions

محرك ExpressionScript - دليل البدء السريع

From LimeSurvey Manual

ربما تُرجمت هذه الصفحة آليًا وقد تحتوي على أخطاء. عرض الأصل الإنجليزي · تحسين هذه الترجمة
This page is a translated version of the page ExpressionScript Engine - Quick start guide and the translation is 100% complete.


دليل البدء السريع

يمكنك في LimeSurvey تخصيص استبياناتك بشكل أكبر باستخدام ExpressionScript (اختصاراً: ES). ملاحظة جانبية: "كان ExpressionScript يسمى Expression Manager (EM) في الإصدارات السابقة. إذا صادفت اسم Expression Manager في أي مكان، فهو ببساطة الاسم القديم لـ ES."

يمكن استخدام ES لتحديد ما يلي:

  1. التنقل/التفرع - يسمح لإجابات المشارك بتغيير ترتيب عرض الأسئلة؛
  2. التخصيص/التضمين - يساعدك على صياغة السؤال (مثل الإشارة إلى إجابات سابقة، أو تصريف الجمل بناءً على عمر أو جنس المشاركين) أو على إنشاء تقارير مخصصة (مثل درجات التقييم أو النصائح المخصصة)؛
  3. التحقق من الصحة - يضمن أن الإجابات تستوفي معايير معينة، مثل الحد الأدنى والأقصى للقيم أو نمط إدخال محدد.

يوفر ES طريقة سهلة لتحديد المنطق لكل من هذه الميزات. فأي شيء تقريباً يمكنك كتابته كمعادلة رياضية قياسية هو تعبير صالح.

يوفر ES حاليًا إمكانية الوصول إلى 70 دالة، ويمكن توسيعه بسهولة لدعم المزيد منها. كما يتيح لك الوصول إلى المتغيرات الخاصة بك باستخدام أسماء متغيرات مقروءة للبشر (بدلًا من أسماء SGQA).

تعرض الأقسام التالية الأماكن الرئيسية التي يُستخدم فيها ES.


الملاءمة (التحكم في التنقل/التفرع)

تستخدم بعض الاستبيانات "منطق الانتقال" (Goto Logic)، بحيث إذا أجبت عن السؤال 1 بالخيار C يتم توجيهك إلى السؤال 5. هذا الأسلوب محدود جداً لأنه يصعب التحقق منه. وفضلاً عن ذلك، فإنه يتعطل بسهولة عند الحاجة إلى إعادة ترتيب الأسئلة. في المقابل، يستخدم ES معادلات الصلة المنطقية (Boolean) لتحديد جميع الشروط التي قد يكون السؤال صالحاً في ظلها. فإذا كان السؤال ملائماً، يتم عرضه، وإلا فإنه غير قابل للتطبيق، ويتم تخزين القيمة "NULL" في قاعدة البيانات.

ملاحظة: هذا مشابه لما يمكن القيام به عبر محرر الشروط، لكن ES يتيح لك بسهولة تحديد معايير أكثر تعقيداً وقوة (ويتيح لك استخدام اسم المتغير بدلاً من معرّفات SGQA).




لفهم مفهوم الملاءمة بشكل أفضل، لنركز على الاستبيان التالي الذي يحسب مؤشر كتلة الجسم (BMI) للمشاركين في الاستبيان. لتنزيله، انقر على الرابط التالي: مثال استبيان مؤشر كتلة الجسم.

تظهر معادلة الصلة أدناه في العمود ملاءمة بعد اسم المتغير. قيم الملاءمة للمتغيرات weight وweight_units وheight وheight_units جميعها 1 (القيمة الافتراضية)، مما يعني أن هذه الأسئلة تُعرض دائماً. أما الملاءمة الخاصة بـ BMI فهي {!is_empty(height) and !is_empty(weight)}، مما يعني أن BMI لن يُحسب إلا إذا أدخل المشارك قيمة لكل من الطول والوزن (وبذلك يتم تجنب خطر الحصول على خطأ القسمة على صفر). كما أن السؤال "Report" لا يظهر إلا إذا أجاب المشارك عن الأسئلة الرئيسية الأربعة (height وheightunits وweight وweightunits).



ملاحظة: الصورة أعلاه مأخوذة من ملف منطق الاستبيان الذي يتيح لك البحث عن الأخطاء النحوية قبل تفعيل الاستبيان.


تظهر الملاءمة وتكون قابلة للتحرير عندما:

  • ترغب في عرض/تحرير الملاءمة على مستوى السؤال
  • ترغب في عرض/تحرير الملاءمة على مستوى المجموعة


عرض/تحرير الملاءمة على مستوى السؤال

تحسب هذه المعادلة مؤشر كتلة الجسم (BMI). ولا يُطرح السؤال إلا إذا أدخل الشخص طوله ووزنه.



هذه هي شاشة التحرير للسؤال "BMI".



لاحظ أنك لا تستخدم الأقواس المعقوفة عند إدخال معادلة الصلة.


عرض/تحرير الملاءمة على مستوى المجموعة

لنركز الآن على مثال آخر - استبيان تعداد سكاني بسيط. لتنزيله، انقر على الرابط التالي: مثال استبيان التعداد السكاني.

تسأل الصفحة الأولى عن عدد الأشخاص الذين يعيشون معك وتخزّن ذلك في المتغير "cohabs". لا تُعرض هذه الصفحة إلا إذا كان لديك أكثر من شخص يقيم معك (وتُعرض للشخص الثاني المقيم معك). كما أن p2name وp2age وp2sum لا تُعرض إلا إذا كان السؤال الذي يسبق كلاً منها يحتوي على رد.



إذن، تحتوي المجموعة أيضاً على معايير ملاءمة على مستوى السؤال، بحيث لا تظهر بعض الأسئلة إلا إذا أجبت عن أسئلة معينة قبلها (مثلاً، يُعرض p2age إذا تمت الإجابة عن p2name). يجمع ES بين الملاءمة على مستوى المجموعة وعلى مستوى السؤال نيابة عنك. لا تُطرح الأسئلة في مجموعة ما إلا إذا كانت المجموعة ككل ملائمة. وعندئذٍ تُطرح فقط الأسئلة الملائمة ضمن المجموعة.

إليك لقطة الشاشة الخاصة بتحرير الملاءمة على مستوى المجموعة لـ Cohabitant 2:



لاحظ أنك لا تستخدم الأقواس المعقوفة عند إدخال معادلة الصلة.

التخصيص/التضمين

يتيح لك ES إجراء التخصيص الشرطي البسيط والمعقد بسهولة. في بعض الأحيان تحتاج فقط إلى استبدال بسيط، مثل القول: "لقد ذكرت أنك اشتريت [المنتج]. ما الذي أعجبك أكثر فيه؟". وفي أحيان أخرى تحتاج إلى استبدال شرطي مثل "[السيد/السيدة] [اسم العائلة]، هل تودّ إكمال استبياننا؟". في هذه الحالة، تريد استخدام "السيد أو السيدة" بناءً على جنس الشخص. وفي أحيان أخرى تحتاج إلى استبدال أكثر تعقيدًا (مثل الاستبدال المبني على عملية حسابية). يدعم ES كل نوع من أنواع التخصيص/التضمين هذه.


المعادلات الشرطية

يوضح مثال مؤشر كتلة الجسم إمكانية حساب مؤشر كتلة الجسم (BMI) لشخص ما، حتى مع السماح له بإدخال طوله ووزنه بوحدتين مختلفتين (سم مقابل بوصة، وكجم مقابل رطل):



في هذه الحالة، قيمة weightkg هي {if(weightunits == "kg", weight, weight * 0.453592)}. تعني الدالة "if()" أنه إذا أدخل المشارك الوزن بالكيلوجرام، فسيتم استخدام هذه القيمة، وإلا يتم ضرب القيمة المدخلة (والبديل هو الرطل) في 0.453592 لتحويلها إلى كيلوجرام. يستخدم المتغير heightm أسلوبًا مشابهًا لحساب طول الشخص بالمتر (الطول بالسنتيمتر/100)، حتى لو أدخل طوله بالبوصة (1 متر = 3.28084 بوصة).

يتم حساب مؤشر كتلة الجسم كما يلي: {weightkg / (heightm * heightm)}.

أخيرًا، يقوم التقرير بتخصيص الرسالة شرطيًا للمشارك، لتخبره بما أدخله. (مثال: "لقد ذكرت أن طولك 2 متر ووزنك 70 كجم.")

في الصورة أدناه، يستخدم weightstatus عبارات "if()" متداخلة لتصنيف الشخص من نقص الوزن إلى السمنة المفرطة. يمكنك رؤية معادلته عن طريق التحقق من منطقه:



من نافذة التحرير الخاصة بهذا السؤال، يمكنك ملاحظة أمرين:

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



الأسئلة والإجابات والتقارير المخصصة

ملاحظة: قد لا يعمل التخصيص الديناميكي إذا كانت خيارات الإجابة متاحة في مربعات الاختيار في صفحة السؤال نفسها. ويعود ذلك إلى أن التخصيص يُدرج وسم <span> وهو غير صالح داخل خيارات القائمة المنسدلة.

يبدو تقرير مؤشر كتلة الجسم كما يلي:



فيما يلي نافذة التحرير الخاصة بالسؤال نفسه.



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

  • heightunit.shown هو اسم متغير غير معرف (والصحيح هو heightunits.shown) و
  • "rnd()" هي وظيفة غير معروفة (واسم الدالة الصحيح هو "round()").

في كلتا الحالتين، توجد الأخطاء داخل مربع أحمر لتسهيل اكتشافها وإصلاحها.



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

يرجى تذكر أنه يجب أن يحيط كل تخصيص بالتعبيرات بأقواس معقوفة حتى يعرف LimeSurvey أي أجزاء السؤال هي نص حر وأيها يجب أن يعالجها محرك ExpressionScript.


التحقق من الصحة

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

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

تعرض صفحة الاستبيانات النموذجية العديد من الأمثلة العملية التي تحتوي على مجموعة متنوعة من تعبيرات التحقق من الصحة.

ExpressionScript - عرض

لمعرفة المزيد عن ExpressionScript وكيفية استخدام التعبيرات المختلفة لتحسين الاستبيان الخاص بك، يُرجى النقر على الرابط التالي.