Sitefinity comes with tons of slick widgets that users love so much about the system. Business users can use them right away and developers don’t need to write code unless they want to introduce some fancy customization. Sitefinity has always been about that – to provide all the user groups with the right tools and to make them productive, while keeping the joy element in every single task user do.
The framework is very flexible. There are so many layers of abstraction with the sheer idea to add different dimensions for customization. In other words, Sitefinity provides the infrastructure for developers to extend the features of the system, while keeping consistent common elements trough the UI.
For instance, all widgets can have the so called designers to provide the users with advanced friendly UI. If we drill down on a more technical level (and that is the purpose here) each designer is a custom interface to expose the public properties of the custom controls that developers register as Sitefinity widgets. So that is just a custom control to create user interface to manage the functionality of the actual custom control that becomes a Sitefinity widget. In other words – instead of letting users use prehistoric text boxes, we (as designers and developers) may implement any custom interface to get the job done. Does it sound too complicated, I hope not…
We have tons of awesome resources on how to create widget designers and what is the logic behind them. So, this is not going to be a tutorial on how to create a widget with designer. Instead, I will primarily focus on the important lessons I have learned and some key moments during the development of the Kangaroo widget (link will be updated soon with installation instructions). So before you continue reading, please take a look at it and see whether you want to see how you can build widget designers with similar functionality.
Are you still here? Good!
Control the UI
Based on the user case with the designers in Sitefinity, we can achieve any user interface. For that widget, I have used standard ASP.NET controls, as well as some AJAX powered advanced controls like RadFileExplorer. I have also used client side components like Kendo UI TreeView to visualize the two lists of resources. Briefly, the only limitation is our imagination and with the the currently employed technology for the Sitefinity widget designers, we can achieve virtually anything we dare to imagine.
Control the events
The events are really essential piece of the picture. Without handling client-side events, there is no way to have a responsive UI to deliver best user experience and productivity at the same time. With the designer, we have the power to define an interface, which can save so much time for our users and they will love it, trust me!
Key point here:
this._doubleClickItemDelegate = Function.createDelegate(this, this._doubleClickItemHandler);
Control the user experience
What’s next – if you think you can use some of these approaches, I would love to learn more about it and discuss different options. I haven’t provided much samples, as I believe, when you download the source code, you will find answers to most of the questions you might have. I will await your feed back .