+1-888-365-2779
Try Now
More in this section
Categories
Bloggers
Blogs RSS feed

Sitefinity 3.6 new backend architecture - Control Panel: What is its role?

by Ivan Osmak

[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.

Conclusion

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.

3 comments

Leave a comment
  1. Romi Feb 21, 2009
    CommandPanel as RadPanels or RadMenu with hierarchical views will be possible? Thanks.
  2. Ivan Feb 23, 2009
    Hi Romi,

    thanks for the question, I guess a lot of people out there are wondering the same thing.

    Any control that implements ICommandPanel interface (which is an extremely simple and undemanding interface) can act as Command Panel. So, the answer to your question is yes, you are able to use RadPanels and RadMenu as Command Panels. I will give more info on this, once we reach Command Panel topics.

  3. Jeremy Mar 11, 2009
    How did you get the passed in control (GenericControlPanel) to override the 2 column format imposed by the admin console?  I created a module class and used a plain old web user control as the control panel.  It loaded the control in column 2 of the standard 2 column format.

    Leave a comment