x

Main chapters

  1. LimeSurvey Cloud vs LimeSurvey CE
  2. LimeSurvey Cloud - Quick start guide
  3. LimeSurvey CE - Installation
  4. How to design a good survey (Guide)
  5. Getting started
  6. LimeSurvey configuration
  7. Introduction - Surveys
  8. View survey settings
  9. View survey menu
  10. View survey structure
  11. Introduction - Questions
  12. Introduction - Question Groups
  13. Introduction - Surveys - Management
  14. Survey toolbar options
  15. Multilingual survey
  16. Quick start guide - ExpressionScript
  17. Advanced features
  18. General FAQ
  19. Troubleshooting
  20. Workarounds
  21. License
  22. Version change log
  23. Plugins - Advanced
 Actions

Group Codes Proposal

From LimeSurvey Manual

I'd like to propose that we add a group code (or "slug") to the group table, and that it be used when creating variable names an in the ExpressionScript.

The Problem

Question groups are a great way to have survey building blocks, either for separate surveys or duplicating a block of questions.  But since we now require unique question codes for each question, it's a lot of work to manage that.  I propose that question codes be unique within groups, and group codes be unique within surveys.

Group codes could also be used in EM.

The Database

group_code (or slug) would be added to groups table, and make into a unique index (survey_id, group_code).  During upgrade, we'd need a method to create a group code, either from the current group id (unique), the current order that the group is in with the survey (also unique, and a bit easier to understand) or the group name (checking for duplicates, etc.).

How it Helps

Suppose your survey has to do with children's names and ages.  Right now, you'd create a group 'child1' with name and age questions, called child1_name, child1_age.  For child 2, you export child1, import it as a new group, then change all the values one at a time.  Then change all the conditions one at a time.  Then do it again.

With a unique group code, you'd simply have 'name' and 'age' as qcodes, and a group_code of 'child1'.  Internally this would map to 'child1_name'.  Now when you import the 'child' group, you simply need to change one thing, the group_code, to child2.  Now you have unique qcodes.

ExpressionScript

ExpressionScript would need to change to reflect that some expressions, especially conditions, are within-group only.  For example, if you only want to ask the 'school' question if 'age' > 3, you'd need to indicate to EM that 'age' means "Age within this group".  If you wanted a specific access, you'd need a format to say "child1.age", when you mean "the first one listed".

Group codes will also make import and exporting surveys easiers, and I'd like to see group_id dropped from everything except very low-level group edit functions.