[This post is part of the developer's manual preview published on this blog. You can find temporary TOC here.]
ControlPanel is the root view of every module and it provides the basic user interface for the modules. Module class (class that derives from WebModule) is in charge of instantiating a new instance of ControlPanel when user navigates to a given module and from that point on, ControlPanel is the one that takes charge.
Before we go deeper in the topic, let’s examine a typical Sitefinity Control Panel.
So, as the picture shows, typical Control Panel consists of Control Panel body in the middle (1), Command Panels on the left (2) and Breadcrumb (3) at the top, above Control Panel body. One could easily conclude that this is the way Sitefinity modules look like and that’s it.
However, if you examine the WebModule base class, which will instantiate the Control Panel class, you will notice that all it expects from this function is a Control.
SAMPLE 1: WebModule’s call for an instance of Control Panel
|public override Control CreateControlPanel(TemplateControl parent) |
| return new GenericControlPanel(); |
Having this in mind, we can easily conclude that Sitefinity will work fine with any kind of Control being returned as Control Panel, thus making something like this a possibility.
So, now that we have established that we are completely free to implement from scratch our own Control Panel, we will see why this may not be such a good idea and how can we save dozens of hours of our time by deriving from standard ControlPanel class (Telerik.Cms.Web.UI.Backend.ControlPanel).
Base ControlPanel class and its benefits
If we decide to implement our Control Panel in such a way that we derive from Telerik.Cms.Web.UI.Backend.ControlPanel we will get out of the box:
- Common base layout used on built-in Sitefinity modules
- Built in feature for managing multiple collections of command panels and working with them on the fly
- Predesigned CommandPanel object to which we can add commands on the fly
- Automatic breadcrumb that will take care of our Views, track current View and provide correct commands for the breadcrumb nodes
- ControlPanel class derives from ViewModeControls, so it also inherits all the built in features of ViewModeControl such as ability to instantiate template automatically, work with embedded or external templates, create view commands and navigate to other views etc.
- Methods for creating command panels and their commands automatically, from user controls, from custom controls or generate them from collection of Commands.
As we have seen, base Control Panel class is packed with useful and commonly needed features. In the coming articles of this topic we will explore all these features and provide samples for them.