Time to put my earlier Module Builder review into sharper context.
I’m currently developing the architecture for a site which involves numerous custom modules, client user forms, and the connection of data items created in these custom modules to Events in the Events Module. (Not to mention I’ll be adding 20+ custom fields to the Events Module – some that require much more handling than just a validation!)
So, with all that in mind, let’s delve further into this terrific (terrifying?) Sitefinity (Module) enhancement we call Module Builder.
Questions on Custom Programming in Module Builder
Programming hooks are needed. They would satisfy many of the problems from my previous post on Module Builder. But am I asking for too rich a feature set? Or could I do this myself?
If only there were a way for me to invoke custom code (methods or functions), pre- and post-processing for the module data, before it is stored. That would satisfy this requirement.
- (Pre-processing) A custom validation rule. Business logic is coded to keep users from registering for multiple events that occur on the same day, or when the events’ date/time spans overlap.
- (Post-processing) When the admin submits the form, a notification email is sent to the contacts and managers, with instructions & data generated for the contact’s roles.
Module Administration – Rich in Editing Power
After activating my new module, I move to using it as a Module Administrator. Now here’s where I found one of the best developer productivity tools I’ve ever seen: Code snippets for a whole variety of operations on my new modules data.
Create and edit, Search with filters, List items…even publishing commands to work flows. Fantastic! A great start for client side forms. I still need to create the form in Visual Studio, but I can integrate the code samples to speed me along my way.
Module administration is well thought out. You can even modify administration forms for a better layout and usability, by dragging form elements around in the back-end screen editor. It was almost too simple – but it turned out better than the default order for my purposes.
For instance, I have short text fields that should appear horizontally. The layout editor should include the columns template editor. I reviewed the item list and changed the columns that displayed, as well as the order in which they display. All with a drag-and-drop editor. Slam dunk.
When creating module fields, I came across three data field element validation types (Required Field, Range, and Regular Expression). Could we be getting a custom validator property?
If so, I would have it call external classes, and/or even supply a paste-in code window for our own snippets. Another great add-on. One shortcoming though, is that you’ll need all your field requirements in hand. You cannot edit a field after it is created. I tried to go back & add more complex validation, and found I couldn’t. (Maybe this will be a coming feature?)
Overall, I found these features great for working within Sitefinity’s Module Administrative user interface.
Permissions: Consistent, But Could Stand More Options
Permissions are consistent with other content modules, roles-based access and privileges to the page. But how granular can you get with permissions? I’d love to see form elements allowed for specific groups or individuals using the membership database. List elements that display by permissions, too.
So far the only action in the Actions menu is Delete. I would love to see Email (a simple template-based email of the data item). Or maybe Publish and Unpublish. Using that as a toggle of “Active/Inactive,” making the item visible or invisible to the front of the system.
And what about custom actions? Another location for hooks in the code.
In the End, the End User is Well-Equipped at Advanced (and Beginner) Levels
Moving on to the end user side of things. I quickly created a page to display my new module’s data, dragging in the module content item from the toolbox. (This toolbox group will get crowded pretty soon; maybe we’ll see a way to create custom toolbox groupings?) Publish the page to review, and…there are my first 2 module entries.
It was at this point I realized – I was only an hour into this process. Impressive speed!
The end user widget displays in List and Detail mode, and uses the same custom templates model as other content items. So layout customization is relatively simple, provided you use the right tools (in my case, Visual Studio 2010 of course!).
So far, the management level I’m testing is beyond that of a normal content administrator – knowledge of data types, validation rules, HMTL, and .NET were all required. But these parts are getting easier to manage too.
Telerik/Sitefinity – you continue to amaze me. (Almost) all the tools we need to create compelling and dynamic designs, integrating out-of-box with advanced data-capturing capability. Great work!