I am pleased to announce a beta release of my role-based control panel extension. It may be downloaded via CodePlex on its project homepage. As is all of my DotNetNuke work, this project is fully open-source and available under a liberal BSD license.
The DotNetNuke content management system exposes a control panel to administrators, allowing for site and (in the case of host users) installation administration. Historically some components of these administrative tasks (the “Admin” menu) were displayed alongside the main site navigation, however, after version 6.0 this component was moved out of this navigation area and consolidated into a single interface. This served to reduce the layout differences between ordinary and administrative user, and greatly enhances the user experience.
However, while in previous versions it was possible to assign access permissions to some administrative components (e.g. access on the “Admin” menu or page-editing permissions) to users who were not members of the Administrators group, some delegation-related use-cases were deprecated in version 6.0. While users who have specific permissions (e.g. the ability to edit a specific page or module) may be granted access to some subcomponents of this enhanced control panel, some functionality is restricted only to those in the “Administrators” role. Stated another way, in order to view the control panel an individual must be (i) in the Administrators role, (ii) visiting a page that is editable by that user, or (iii) visiting a page with a module that is editable by that user. It is not possible to display the “Admin” control panel option to users who have permission but do not meet the criteria above.
Additionally, the ability to present a “control panel-like” interface on a site-wide basis is an interesting use-case. For example, Facebook presents a toolbar to authenticated users that is visually similar to the DotNetNuke control panel. The ability to display a control of this type to authorized users would enable this sort of functionality not presently possibly without tedious workarounds (e.g. including an additional module on each page).
Accordingly, this project is designed to expose the ability to instantiate a control panel on a per-role basis, with the intention that functionality delegated to non-administrators may be exposed via an alternate control panel that contains only that functionality relevant to those users.