{"id":635,"date":"2012-03-02T11:12:57","date_gmt":"2012-03-02T15:12:57","guid":{"rendered":"http:\/\/blogs.law.harvard.edu\/brandonhaynes\/?p=635"},"modified":"2012-03-02T11:12:57","modified_gmt":"2012-03-02T15:12:57","slug":"release-dotnetnuke-role-based-control-panels","status":"publish","type":"post","link":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/2012\/03\/02\/release-dotnetnuke-role-based-control-panels\/","title":{"rendered":"Release: DotNetNuke Role-Based Control Panels"},"content":{"rendered":"<p>I am pleased to announce a\u00a0<a href=\"http:\/\/dnncontrolpanel.codeplex.com\/\">beta release<\/a>\u00a0of my role-based control panel extension. \u00a0It may be downloaded via CodePlex on its\u00a0<a href=\"http:\/\/dnncontrolpanel.codeplex.com\/\">project homepage<\/a>. \u00a0As is all of my DotNetNuke work, this project is fully open-source and available under a liberal\u00a0<a href=\"http:\/\/dnnsymboliclinks.codeplex.com\/license\">BSD license<\/a>.<\/p>\n<p>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 &#8220;Admin&#8221; 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.<\/p>\n<p>However, while in previous versions it was possible to assign access permissions to some administrative components (e.g. access on the &#8220;Admin&#8221; 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 &#8220;Administrators&#8221; 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. \u00a0It is not possible to display the &#8220;Admin&#8221; control panel option to users who have permission but do not meet the criteria above.<\/p>\n<p>Additionally, the ability to present a &#8220;control panel-like&#8221; 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).<\/p>\n<p>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.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I am pleased to announce a\u00a0beta release\u00a0of my role-based control panel extension. \u00a0It may be downloaded via CodePlex on its\u00a0project homepage. \u00a0As is all of my DotNetNuke work, this project is fully open-source and available under a liberal\u00a0BSD license. The DotNetNuke content management system exposes a control panel to administrators, allowing for site and (in [&hellip;]<\/p>\n","protected":false},"author":1933,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[142],"tags":[],"class_list":["post-635","post","type-post","status-publish","format-standard","hentry","category-technology"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/wp-json\/wp\/v2\/posts\/635","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/wp-json\/wp\/v2\/users\/1933"}],"replies":[{"embeddable":true,"href":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/wp-json\/wp\/v2\/comments?post=635"}],"version-history":[{"count":3,"href":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/wp-json\/wp\/v2\/posts\/635\/revisions"}],"predecessor-version":[{"id":638,"href":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/wp-json\/wp\/v2\/posts\/635\/revisions\/638"}],"wp:attachment":[{"href":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/wp-json\/wp\/v2\/media?parent=635"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/wp-json\/wp\/v2\/categories?post=635"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/archive.blogs.harvard.edu\/brandonhaynes\/wp-json\/wp\/v2\/tags?post=635"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}