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 Engine - Хурдан эхлэх гарын авлага
  17. Ангилагдаагүй болон нарийвчилсан боломжууд
  18. Түгээмэл асуултууд
  19. Алдаа засварлах
  20. Түр шийдлүүд
  21. Лиценз
  22. Хувилбарын өөрчлөлтүүдийн жагсаалт
  23. Плагинууд
 Actions

ExpressionScript-ийн хэрэглээний заавар

From LimeSurvey Manual

Энэ хуудсыг машинаар орчуулсан байж магадгүй тул алдаа агуулж болзошгүй. Англи эх хувийг харах · Энэ орчуулгыг сайжруулах
This page is a translated version of the page ExpressionScript How-tos and the translation is 100% complete.


Өмнө тайлбарласан зүйлсийн тойм

Хэрэв та LimeSurvey гарын авлагын бүтцийг эхнээс нь дагаж ирсэн бол LimeSurvey-н нэр томьёотой аль хэдийн танилцсан гэсэн үг. Дараа нь бид судалгаагаа сайжруулах аргыг сурахын тулд илэрхийлэл болон хувьсагчдыг авч үзсэн. Дараагийн хэсэгт синтаксийн алдааг засахыг сурахын тулд синтаксийн тодруулгын төрөл, утгыг авч үзсэн.

Эдгээр үндсэн ойлголтыг судалсны дараа бид жишээнүүд рүү шилжиж, илэрхийллүүд LimeSurvey-д хэрхэн ажилладгийг тайлбарлах боломжтой боллоо.


Синтаксийн тодруулга

Дараах дэлгэцийн зургууд жишээ харуулж байгаа ч товчлолын (tooltip) утгыг харуулахгүй. Товчлол гэдэг нь тодоор бичигдсэн өнгөт үгсийн аль нэг дээр хулганаа аваачихад гарч ирдэг мэдээллийн хайрцаг юм.

Синтаксийн тодруулгын ачаар төвөгтэй илэрхийллүүдийг ч гэсэн зөв бичихэд маш хялбар. LimeSurvey-н баг илэрхийлэл бүтээгч GUI хийхээр төлөвлөж байгаа ч одоо байгаа синтаксийн тодруулгыг ашиглан бичгийн алдааг хурдан илрүүлж засаж болно. Мөн илэрхийллийнхээ нарийвчлалыг шалгахын тулд товчлолуудыг ашиглаж болно (жишээ нь, хүссэн хувьсагч(ууд)аа сонгосноо баталгаажуулах).

Жишээ бүрт гурван багана байна:

  1. Эх бичвэр (Source) - LimeSurvey-н асуултын талбарт оруулах түүхий текст
  2. Тодруулсан харагдац (Pretty Print) - таны оруулсан зүйлийн синтаксийн тодруулгатай хувилбар
    • Энэ тодруулгад илэрхийллүүд шаргал дэвсгэртэй харагддаг ч суман хаалтаар (curly braces) хүрээлэгдээгүй байдгийг анхаарна уу.
    • EM нь рекурсив орлуулалтыг дэмждэг тул тодруулгад суман хаалт харуулбал синтаксийн алдаа гарна
  3. Үр дүн (Result) - EM эх бичвэрийг боловсруулсны дараа гарсан үр дүн
    • Зөв орлуулах боломжтой бүх зүйл орлуулагдана
    • Алдаатай илэрхийллүүд синтаксийн тодруулгатайгаар мөрөнд нь харагдана. Алдааг улаан хүрээтэй хайрцаг хүрээлнэ.


Зөв синтакс

Доор зөв синтаксийн жишээнүүдийг харж болно:

  1. Утгууд: мэдэгдэж буй хувьсагчид одоогийн хуудсанд тохируулагдсан эсэхээс хамаарч өнгөөр ялгагддагийг харуулна.
  2. Асуултын атрибутууд: цэгэн тэмдэглэгээгээр асуултын зарим шинж чанарт хандаж болдгийг харуулна
  3. Математик: энгийн болон нарийн тооцоолол дэмжигддэгийг харуулна
  4. Текст боловсруулалт: боломжтой текст боловсруулах зарим функцийг харуулна
  5. Огноо: огноотой холбоотой хоёр функцийг харуулна
  6. Нөхцөлт: if() функцийн хэрэглээг харуулна. Сонголтуудыг давхарлан бичиж болно.
  7. Тохируулсан догол мөр: өмнөх утгууд дээр үндэслэн тайланг бүрэн өөрчилж болно
  8. EM тэмдэгт мөр дотор боловсруулах: тэмдэгт мөр дотор орлуулалт хийж чадахыг харуулна. Энэ жишээ тохируулсан зургийн нэр үүсгэнэ.
  9. EM иймэрхүү суман хаалтыг боловсруулдаггүй: суман хаалтыг зайлуулсан (escape) эсвэл илэрхийлэл болон суман хаалтын хооронд хоосон зай байвал ES илэрхийллийг үл тоомсорлодгийг харуулна.


Алдаатай EM синтакс

ES илэрхийлэл бичихэд гардаг түгээмэл алдааны жишээг доор үзүүллээ. Товчлолууд нэмэлт мэдээлэл өгдөгийг анхаарна уу.

  1. Суман хаалтын дараа зай нэмэхээ мартсан мөрөнд бичсэн Javascript
    • "document.write" нь суман хаалтын дараа шууд бичигдсэн тул EM үүнийг илэрхийлэл гэж үзэж, "document" болон "write"-г тус тус тодорхойлогдоогүй хувьсагч, функц гэж улаан хүрээгээр тэмдэглэнэ
  2. Үл мэдэгдэх/буруу бичсэн хувьсагч, функц, оператор
    • Энд бид "sex" биш "gender" гэсэн хувьсагчийн нэр ашиглаж байгаагаа мартсан ч EM энэ алдааг илрүүлнэ. Мөн '++' нь дэмжигддэггүй оператор учир үүнийг улаан хүрээгээр тэмдэглэнэ.
  3. eq-ийн оронд = ашиглах эсвэл утга оноох үед анхааруулна
    • '=' болон '+=' нь хар биш улаан өнгөтэй байгааг анхаарна уу. Хулганаа тэдгээрийн дээр аваачвал утга оноож байгаа тухай анхааруулга харагдана.
  4. Функцийн аргументийн тоо буруу
    • if() нь 3 аргумент авдаг ч 4 өгөгдсөн тул улаан хүрээтэй "if" дээр хулганаа аваачвал алдааг тайлбарлаж, дэмжигдэх синтаксийг харуулна
    • sum() нь хязгааргүй тооны аргумент авдаг ч хаалтын өмнө илүү таслал байгаа тул үүнийг улаан хүрээгээр тэмдэглэнэ
  5. Таарахгүй хаалт
    • Энэ нь илэрхийлэл бичихэд гардаг хамгийн түгээмэл алдаануудын нэг юм.
    • Энд хаах хаалт дутсан хоёр жишээ, хаах хаалт нэгээр илүү байгаа нэг жишээг харуулсан.
  6. Дэмжигддэггүй синтакс
    • Хэрэв ES-ийн дэмждэггүй оператор эсвэл цэг таслалын тэмдэг ашигласан бол улаан хүрээгээр тэмдэглэнэ.
  7. Буруу оноолт
    • Зарим хувьсагч readWrite бөгөөд утгыг нь өөрчилж болно. Бусад нь зөвхөн унших боломжтой.
    • Зөвхөн унших боломжтой хувьсагчийн утгыг өөрчлөх боломжгүй. EM оролдлогыг улаан хүрээгээр тэмдэглэнэ.
    • Тэгшитгэл эсвэл тэмдэгт мөрөнд утга оноохыг оролдвол мөн алдаа гарна



Идэвхтэй товчлолтой синтаксийн тодруулгын "амьд" жишээнүүд

SourcePretty PrintResult
Here is an example of OK syntax with tooltips
Hello {if(gender=='M','Mr.','Mrs.')} {surname}, it is now {date('g:i a',time())}. Do you know where your {sum(numPets,numKids)} children and pets are?
Here is an example of OK syntax with tooltips
Hello if(gender == 'M','Mr.','Mrs.') surname, it is now date('g:i a',time()). Do you know where your sum(numPets,numKids) children and pets are?
Here is an example of OK syntax with tooltips
Hello Mr. Smith, it is now 6:07 am. Do you know where your 3 children and pets are?
Here are common errors so you can see the tooltips
Variables used before they are declared: {notSetYet}
Unknown Function: {iff(numPets>numKids,1,2)}
Unknown Variable: {sum(age,num_pets,numKids)}
Wrong # parameters: {sprintf()},{if(1,2)},{date()}
Assign read-only-vars:{TOKEN:ATTRIBUTE_1+=10},{name='Sally'}
Unbalanced parentheses: {pow(3,4},{(pow(3,4)},{pow(3,4))}
Товчлолын тайлбарыг (tooltip) харахад зориулсан түгээмэл алдаанууд
Зарлахаас өмнө ашигласан хувьсагчид: notSetYet
Үл мэдэгдэх функц: iff(numPets > numKids,1,2)
Үл мэдэгдэх хувьсагч: sum(age,num_pets,numKids)
Параметрийн тоо буруу: sprintf(),if(1,2),date()
Зөвхөн унших хувьсагчид утга оноох:TOKEN:ATTRIBUTE_1+=10,name='Sally'
Хаалт тэнцээгүй: pow(3,4,(pow(3,4),pow(3,4))
Товчлолын тайлбарыг (tooltip) харахад зориулсан түгээмэл алдаанууд
Зарлахаас өмнө ашигласан хувьсагчид: notSetYet
Үл мэдэгдэх функц: iff(numPets > numKids,1,2)
Үл мэдэгдэх хувьсагч: sum(age,num_pets,numKids)
Параметрийн тоо буруу: sprintf(),if(1,2),date()
Зөвхөн унших хувьсагчид утга оноох:TOKEN:ATTRIBUTE_1+=10,name='Sally'
Хаалт тэнцээгүй: pow(3,4,(pow(3,4),pow(3,4))
Дэмжигдээгүй өгүүлбэр зүйн зарим жишээ
'++', '--', '%',';' дэмжигдэхгүй: {min(++age, --age,age % 2);}
Мөн '|', '&', '^' дэмжигдэхгүй: {(sum(2 | 3,3 & 4,5 ^ 6)}}
Массив бас дэмжигдэхгүй: {name[2], name['mine']}
Дэмжигдээгүй өгүүлбэр зүйн зарим жишээ
'++', '--', '%',';' дэмжигдэхгүй: min( ++ age, -- age,age % 2) ;
Мөн '|', '&', '^' дэмжигдэхгүй: (sum(2 | 3,3 & 4,5 ^ 6)}
Массив бас дэмжигдэхгүй: name [ 2 ] ,name [ 'mine' ]
Дэмжигдээгүй өгүүлбэр зүйн зарим жишээ
'++', '--', '%',';' дэмжигдэхгүй: min( ++ age, -- age,age % 2) ;
Мөн '|', '&', '^' дэмжигдэхгүй: (sum(2 | 3,3 & 4,5 ^ 6)}
Массив бас дэмжигдэхгүй: name [ 2 ] ,name [ 'mine' ]


Тохируулгын жишээнүүд

"Эрхэм {Mr}/{Mrs} Smith..."

if() функцийг ашиглан 'Mr.' эсвэл 'Mrs.'-г нөхцөлөөр сонгон харуулна.

Өгүүлбэр зүй нь if(test,do_if_true,do_if_false) хэлбэртэй.

# Код Асуулт Төрөл
1 gender Таны хүйс юу вэ? Хүйс
2 example1 Эрхэм {if(gender=='M','Mr.','Mrs.')} Smith, ... Үнэгүй урт текст



Доор харуулснаар "Mr" болон "Mrs" нь оролцогчийн "gender" асуултад өгсөн хариултаас хамаарч тохируулагдана.



"Эрхэм {Mr}/{Mrs} Smith..." урилга е-мейлд

Дээрх жишээг токен хүснэгтийн шинж чанаруудыг ашиглан урилга е-мейлд хэрэглэж болно. if() функцийг ашиглан е-мейлд 'Mr.' эсвэл 'Mrs.'-ийн аль нь хэрэглэгдэхийг сонгоно.


Өгүүлбэр зүй нь "if(test,do_if_true,do_if_false)" хэлбэртэй.

# шинж чанар утга
1 Овог Smith
2 Е-мэйл хаяг test@test.com
3 ATTRIBUTE_2 M


Урилга е-мейл доторх текст:

Dear {if(ATTRIBUTE_2=='M','Mr','Mrs')} {LASTNAME},

you have been invited to participate in a survey:

https:/...



Цахим шуудангийн харагдац:


Тооцоолол / Үнэлгээний жишээнүүд

Үнэлгээний утгыг ажиллах үед тооцоолж, үр дүнг судалгааны өгөгдөлд хадгалах

Энэ жишээ нь EM-ийн бүх боломжийг, түүний дотор Холбогдол, Тохируулга болон Тэгшитгэл асуултын төрлийг ашигладаг.

Мөн эдгээр бүгд JavaScript дэмждэг тул хуудсанд эдгээр боломжууд байвал хүмүүс хариултаа оруулах, өөрчлөх тусам динамикаар өөрчлөгдөнө.

# Код Асуулт Төрөл Холбогдол
1 numKids Танд хэдэн хүүхэд байдаг вэ? Тоон оролт 1
2 kid1 Таны эхний хүүхэд хэдэн настай вэ? Тоон оролт numKids >= 1
3 kid2 Таны хоёр дахь хүүхэд хэдэн настай вэ? Тоон оролт numKids >= 2
4 kid3 Таны гурав дахь хүүхэд хэдэн настай вэ? Тоон оролт numKids >= 3
5 kid4 Таны дөрөв дэх хүүхэд хэдэн настай вэ? Тоон оролт numKids >= 4
6 sumKidAges {sum(kid1.NAOK,kid2.NAOK,kid3.NAOK,kid4.NAOK)} Тэгшитгэл 1
7 kidSummary Таны хэлснээр танд {numKids}. {if(numKids==1,'child','children')}. {if(numKids>1,implode(' ','The sum of ages of your first ',min(numKids,4),' kids is ',sumKidAges,'.'),' ')} дэлгэцэнд текст харагдана 1


Энэ жишээг татаж авахын тулд дараах холбоос дээр дарна уу: Assessments_survey_example.


Төлөөлөх асуултуудын дэлгэцийн зургийг доороос харна уу. Таны харж байгаагаар EM нь тохируулга агуулж болзошгүй бүх талбарыг синтаксийн өнгөөр ялгаж харуулдаг. Энд Холбогдох байдал, Тэгшитгэл асуултын төрөл болон асуулт доторх орлуулалтыг синтаксийн өнгөөр ялгаж харуулсан жишээг харж байна. Мөн Тусламж, Бүлгийн толгойн дэлгэц, мессэжэнд тавтай морил болон төгсгөлийн мессэж дотор орлуулалтыг ашиглаж болно.

Дараах жишээнд холбогдох байдал нь {numKids >= 2) тул хариулагч хамгийн багадаа хоёр хүүхэдтэй гэж хариулсан тохиолдолд л асуулт харагдана.



Доор харвал хувьсагч бүр .NAOK дагавартай байгааг анзаарч болно. Энэ нь EM давхарласан холбогдох байдлыг хэрхэн дэмждэгтэй холбоотой. Хэрэв .NAOK байхгүй бол нийлбэр нь зөвхөн хариулагч 4 хүүхэдтэй гэж хэлсэн үед (жишээ нь бүх хувьсагч холбогдолтой үед) тооцогдоно. .NAOK ашиглах нь зарим эсвэл бүх хувьсагч холбогдолгүй байсан ч нийлбэрийг тооцоолохыг хүсч байна гэсэн үг (жишээ нь "Not Applicable" (NA) нь зүгээр (OK)).

Гэхдээ .NAOK шинж чанар нь зөвхөн хувьсагчдыг EM-д дамжуулах эсэхэд нөлөөлнө. Хэрэв хариулагч эхлээд 3 хүүхэдтэй гэж хэлээд тус бүрийн насыг оруулсны дараа бодол өөрчилж 2 гэж хэлвэл, гурав дахь хүүхэд бидний хувьд "холбогдолгүй" болсон тул оруулсан 3 утгын нийлбэрийг харахыг бид хүсэхгүй:



Тусдаа илэрхийлэл бүр шаргал дэвсгэр өнгөөр ялгагдсан байна. Таны харж байгаагаар энд гурван тусдаа илэрхийлэл байна. Сүүлийнх нь зөвхөн нэгээс олон хүүхэдтэй тохиолдолд нөхцөлтэйгөөр харагдах зурвасыг агуулна.



Одоо судалгаа ажиллаж байгаа үеийн дэлгэцийн зургуудыг харъя.

Хуудсанд анх орох үед та үүнийг харна. "Танд 0 хүүхдүүд байна" гэж харагдаж байгааг анзаараарай, "Танд 0 хүүхэд байна" биш.



Хэрэв би хүүхдийн тоог 1 болгон өөрчилбөл, нэг хуудсан дээр байгаа ч дэлгэц шууд ингэж өөрчлөгдөнө:



Одоо дүрэм зөв болсныг анзаараарай: "Танд 1 хүүхэд байна".

Одоо би хүүхдийн тоог 3 болгон өөрчилвөл дэлгэц шууд ингэж өөрчлөгдөнө.

Одоо доод талд нөхцөлт зурвас харагдаж байгааг анзаараарай: "Таны эхний 3 хүүхдийн насны нийлбэр 0 байна.".



Одоо би төсөөллийн хүүхдүүддээ нас оруулбал, тэдний насны нийлбэрийг гаргасан дараах дэлгэц гарна:



Дахин хэлэхэд, утгыг оруулах үед оноо болон дэлгэц шууд шинэчлэгддэг тул үүнийг үнэлгээний оноо-ны гүйлтийн нийлбэрийг харуулахад ашиглаж болно.


Одоо би хүүхдийн тоог 2 болгон өөрчилье. Дэлгэц ингэж өөрчлөгдлөө:



Гурав дахь хүүхдэд 5.5 гэсэн утга оруулсан байсан ч тайлан одоо зөвхөн эхний 2 хүүхдийн утгыг нэмж байгааг анзаараарай.

Шалтгаан нь 3 дахь утга одоо холбогдолгүй болсон бөгөөд холбогдолгүй утгуудыг EM идэвхтэй үл тоомсорлодог.

Хэрэв би хүүхдийн тоог дахин 3 болговол, оруулсан 5.5 гэсэн утгаа дахин харна. Тиймээс хуудсан дээр оруулсан мэдээллээ алдахгүй.

Гэхдээ дараах эсвэл өмнөх хуудас руу шилжвэл бүх холбогдолгүй утга сесс болон мэдээллийн санд NULL болно. Тиймээс хэрэв би утгыг 2 хэвээр үлдээгээд дараагийн хуудас руу орж, буцаж ирээд үнэндээ 3 хүүхэдтэй гэж хэлбэл 5.5 гэсэн насыг дахин харахгүй.


Өгөгдөл оруулаад оруулсан зүйлийн динамикаар өөрчлөгдөх тайланг нэг хуудсан дээр харах

Энэ жишээ нь LimeSurvey доторх тохируулгын процессыг харуулна.

Энэ жишээг татаж авахын тулд дараах холбоос дээр дарна уу: Динамик өөрчлөлтийн судалгааны жишээ.

Хуудас анх ингэж харагдана. Та зөвхөн ямар хотод амьдардаг вэ гэсэн асуултыг харна:



Та хариулт оруулж эхлэхэд тохируулах (tailoring) процесс бас эхэлнэ:


Та хариулт оруулах тусам хуудасны доод хэсэгт байгаа хүснэгт шинэчлэгдэж, таны хариултуудын хариултын код болон утгуудыг харуулна.


Алдаа засах түгээмэл жишээнүүд

Үүрлэсэн if() илэрхийлэл (нөхцөлт логик)

EM нь нөхцөлт логик эсвэл тохируулга хийх боломжтой байхаар "if(test,do_if_true,do_if_false)" функцийг дэмждэг. Энэ функцийг үүрлүүлж "if { } else if { } else { }"-тэй дүйцэхүйц бүтэц үүсгэж болно. Хаалт тэнцүү биш байвал (жишээ нь хаах баруун хаалт дутуу байвал) эсвэл илүү баруун хаалт байвал EM танд мэдэгдэнэ. Урт үүрлэсэн if илэрхийлэл бичихдээ хаалтуудыг тоолж, хадгалаад, синтаксийн алдааг шалгаж, олдвол засахыг хичээгээрэй. Доорх жишээг хамтдаа шалгая.

Доор ашигласан асуултын бүлгийг эндээс авах боломжтой: Tailoring survey example.lsg


Эхлээд юу ч оруулаагүй үед та зөвхөн "Сайн байна уу." гэснийг харна.



Хэрэв та нэр оруулбал "Сайн байна уу {name}." гэж харагдана.



Хэрэв та нас оруулбал, таныг сургуулийн өмнөх насны хүүхэд мөн эсэхээс хамааран тохируулсан мессеж харагдана:



Сурагч, өсвөр насны хүүхэд эсвэл насанд хүрсэн хүн. Энд нэрээ нууцлахыг хүсч буй өсвөр насны хүүхдийн жишээ байна:



Энд бүлгийн логик файл байна. "if-based" асуултаас харахад хүний насанд тулгуурласан үүрлэсэн if илэрхийллүүд байгааг харж болно.



Энэ асуултыг анх засах үед хаа нэгтээ хаалтын тоо буруу болох магадлалтай. Хаалт дутуу байвал дараах байдлаар харагдана:



Хэрэв та улаан хүрээтэй "if" гэдэг үг дээр хулганаа аваачвал "Parentheses not balanced" гэж харагдана. Энэ тохиолдолд "already an adult!"-ийн дараа хаах дөрвөн хаалт байх ёстой боловч зөвхөн гурав байна.

Харин илүү нэг хаах хаалт байвал дараах байдлаар улаан хүрээтэй харагдана:



Асуултыг засаж байх үед асуулт дараах байдлаар харагдана: