So after a lot of hiccups, I can finally say that I have a version of the new feedback module ready for testing.. There has been quite a few bumps along the way including
a) my decision to use the ajax control toolkit - since I'd started developing against version 4.6.2 initially which was working fine with the core implementation of AJAX, I'd thought I'd be all peachy when I try and move everything to a newer version of the core (ie 4.8.0)... However when I did this, I found out that something had changed in the core implementation of AJAX from 4.6.2 to 4.8.0 which was preventing me from loading my controls in Page_Init like I had been doing in the past. I spent a good 3-4 weeks trying to figure it out and ask core team members for help without any success. Finally I figured out a workaround using javascript which worked out groovy.
b) trying to prepare for my MCPD Upgrade exams - my full time job mandated that I get my MCSD.NET certifications upgraded to MCPD EA ASAP and I spent a few weeks trying to prepare/take the exams.
c) trying to figure out what/how to handle the display of the feedback submitted - being that version 5.0.0. has customizable fields, I was at a loss as to how to present this to the user in a manner that made sense and at the same time allowing for it to be customizable. Finally just this morning, I got my inspiration and got it done in about half an hour. Goes to show that when something is ready to be completed, it will be done, till that point, you can waste days trying to figure it out and it wouldn't happen...
Ok, enough of the excuses, here's some information about the new version of the feedback module.
It does have customizable fields like I'd mentioned in my earlier posts on the forums.
It does use the AJAX Control Toolkit (version 1.0.20229)(just for the Configuration page) so this means that this module may not work for those who are either already using a different version of the toolkit or for users who can't use AJAX.
There are features in this (like creating a dropdown list/radio buttons/checkbox list) off a database query which I will implement in coming releases. The core functionality (adding the table columns) has been done in this version but will be built upon in future releases.
The ability to setup roles as send to email addresses has been FINALLY added to this release... (YIPPEEEEE )....
Ok, now on to some screen shots.
General Layout/Look and feel
The first one shows the feedback form with a couple of fields and Captcha turned on. For each of the fields, you can turn on/off a comments field which would then allow the user to submit comments as to why he/she was answering a question the way he/she did.
You can see that all the fields are showing up on the same row and captcha is showing up in its own row towards the bottom.
Now here's another screen shot of the same form with the fields slightly re-arranged.
So bottom line is that you can layout your form with customizable fields in any way you want. Internally I'm using tables to hold the form fields and I determine at run-time how to lay out the fields based on what the user has selected as his/her layout options.
Feedback Configuration
Now on to configuration - In prior versions, we were used to making changes for the settings by clicking on the settings menu action item and tweaking the fields provided to us. This has been completely replaced by Feedback Configuration which also shows up in the action menu.
On clicking Feedback Configuration we're taken to the following page.
Each of these sections is used to manage a different part of the feedback module. This was the one area that I decided to use the AJAX Control toolkit (using Accordion Panes) to organize the individual areas into categories and display it to the user in a logical manner. This section is also AJAX enabled which means that when you click a button or move an item, it refreshes just the section that needs to be refreshed giving a better user experience (IMHO)...
General Settings
Above is a screenshot when you expand the General Settings section. Some of the fields should be familiar from older versions of the feedback module while others are brand new.
New things to point out include
a) Additional Send to : You can now specify roles as the Send to destination. What this means is that the system will go thru whatever roles you've setup and identify all the users who have email addresses and send them a copy of the feedback that was submitted. I believe this was asked for back in the day and I am happy to finally be able to include it in this version.
b) Disregard Module ID: this is sort of a work around for the fact that if you delete your instance of the feedback module from a page and re-add it, it is assigned a new module id. When you then try and moderate posts that were not created using the new instance, it wouldn't allow you to moderate them since we'd pass the Module ID as one of the parameters to the sproc we used to update the status.
c) Hide DNN Labels : Some people had asked for a way to not show the little circle with tool tips besides any DNN Labels - well you can now use this too.
Category/Subject Settings
These sections didn't change much from the prior release except for being broken out into individual sections in 5.0.0. Screen shots are given below.
Both categories and subjects still use the Lists feature which was introduced back in the 4x version of the module and the idea is that this will stay or be improved upon in subsequent releases as neccessary. We added the ability to setup categories as Send to in 4.4.2/4.4.3 which is still maintained in this version.
Current Form Settings
This section drives the front page of the module in determining which form to display to the user. Starting from this release of the module, you can setup fields which can then be associated with a form which is then made visible on a given instance of the feedback module that is dropped on to a page.
Some things to point out here.
a) Ability to customize which field is used as an email field - In prior versions since we had hard coded an email field, we had the ability to send to the user who submitted the feedback a copy of the feedback post. In order to maintain this functionality, we now allow for you to choose which field on the form is the email field. If you then select "Send copy to submitter" or "Allow optout" then this allows the module to grab the value that is entered in the field and use it as an email address.
b) Show description: You can enter a description for the form you're setting up and if you check the "Show description" checkbox, it will now be visible to the user as a message at the top of the module. This can be used to provide a short description as to the purpose of the form, etc.
c) Active: In some rare scenarios, you might want to leave the form you've setup on a page but make it invisible for a short duration of time. Using the "Active" checkbox, you can turn off a form and the user will be presented with a message indicating that the form is not active.
Current Form Fields
This is one of the areas of this module which I've enjoyed working on the most. I've seen other implementations of custom fields using XML, etc but decided to do the feedback one slightly differently. I'll wait and see as to whether this is a good way of doing this or not and maybe make further improvements to this as I get feedback from users in the DNN community.
Basically you use the two list boxes to control what you want to make visible on the feedback form as well as how to layout your form.
The Available and Assigned list boxes should make sense as is (Available means you can add it to your form, and assigned means it's already added to your form).
Using the buttons to the right of the Assigned list box, you can then control the order in which to display the fields (using up and down arrow buttons) and also control whether the field should show up on a new row ("N") or whether the field is a required field ("R") on the form. A required field simply means that the user must provide a value for it before the form is submitted.
Add/Edit Fields
Finally we come to the Add/Edit fields section of the feedback configuration. This section is used to manage the individual fields that you create using the feedback module. Remember that you can create multiple fields and not have to use all of them on the form itself. Additionally you can also re-use fields you've created on other forms (for example if you have another instance of feedback on a different page with a different form)...
You can create a variety of different types of fields including text, numeric, dates, date and time, checkboxes, radio buttons and drop down lists. With the text (alpha numeric), you can also define a regular expression which would then be used to validate the entry before the form is submitted.
View Comments/Submitted Feedback
Finally we come to the View Comments section which has completely being revamped to handle the customizable fields that we've added in this release.
You can now decide which fields you want to make visible on the view comments page by simply selecting the fields from the settings page of the View Comments control.
This works the same way as the Current Form Fields section from Feedback Configuration. However in addition to choosing the order in which you want the fields to display, you can also choose to display the comments value that a user entered for any given feedback post.
Ok, this should be enough for now. The next steps here are to send out copies of the module to the beta testing team which is being sent out as soon as I finish with this blog post. Once I get feedback from the beta testers, I will submit the module to the release tracker and then we wait and see what happens from there. I am not expecting the testing process to be easy especially since there are so many new features that have been added to the module as well as a complete revamp of the internal code itself.
My thanks to those of you who have been VERY VERY patient with me thus far and I hope that the module will hopefully be of some use to those that do decide to implement it on their DNN sites.
Thanks
Sanjay Mehrotra