We plan to work on the Survey module over the next 6 months. The biggest change is that we will use the DAL+. There will be no stored procedures. The code will use parameterized sql.
The last post about the Survey module brought a great comment from Stephen Nill:
I wonder if it should even be called a survey module. The word "survey" connotes questions driven by conditional logic. Shouldn't this really be called a "Poll" module?
Now, if we really want to make this module stand out, why not actually make it a true survey module?
Just thinking out loud....
Well Stephen, we heard you loud and clear. The biggest improvement will be that you can have "conditional logic". Basically, you can specify that some questions will show based on answers to other questions.
Here are the notes we will be working from. All is subject to change:
Survey 5.0
Goals:
- Allow Surveys to be easily created and administered
- Provide an example for beginning DotNetNuke module developers
Module Overview:
- Allow “Conditional Logic” to be used in Surveys
- Comply with XHTML
- Implement Localization
- Implement IPortable
- Implement a new screen that allows you to enter Survey questions (use ASP.NET 3.5 controls)
- Implement a new screen for displaying Survey responses (use ASP.NET 3.5 controls)
- Allow “Anonymous” or “must be signed in” mode for each Survey
- Allow export of Survey data
- Allow Survey data to be erased
- Implement Charting using (http://www.codeproject.com/KB/custom-controls/webchart.aspx)
- Use GridView control to display results and allow the name of the .css style sheet to be set in Module Settings for styling
Anonymous respondents
- When “Allow unauthenticated users” is set in module settings, a “cookie value” will be used to determine if a user has already responded to the survey.
- An automatic “cookie value” will be created when module is instantiated on a page
- Module settings will allow the “cookie value” to be set and changed.
- When the “cookie value” is changed, previous anonymous respondents will be allowed to take the survey again.
- If a user is logged in as an authenticated user, the presence of a “cookie value” will not prevent them from responding to the survey.
Conditional Logic
- When creating questions for a Survey, “Conditional Logic” can be used to alternatively show and hide other potential questions.
- The branching is only available on question level not answer level (you cannot suppress a possible answer)
- An example of using “Conditional Logic” to create a Survey:
- Create question 1 and question 2 and enter the possible answers for each
- For question 3, you can indicate that the question will only show if:
1. Question 2 has been answered (or not). Note, question 2 may not have been answered because it may not have been shown due to constraints placed on it by question 1.
2. Question 1 has been answered and a specific value has been selected (a drop down of all possible answers shows up).
1. If a constraint has been placed on a specific value of another question, that constraint will be removed if that value is changed.
- When a Survey reaches a question that causes conditional branching, the remaining questions will not display until that question, and all other questions preceding it have been answered.
- When all coordinal branches have been satisfied, the Survey respondent must click the “Submit Survey” button to have their response recorded.
- Incomplete Surveys will not be recorded.
- Each question can be either Single choice (radio button) or multiple choice (check boxes)
- The order of Survey questions can be changed
- A survey question cannot be moved to a position above a question that places a constraint on it, now below a question that uses it as a constraint.
Notes
- Implement a single .sql script that “rolls up” all previous .sql scripts. Allow all previous version of the Survey to be upgradable to the latest table schema
- Implement the .txt file that will remove the assemblies from the previous non dynamic version of the Survey module