DNN Blog

Navigating the DotNetNuke 6.0 Waters

by Joe Brinkman on Tuesday, March 29, 2011 6:51 AM

The History of Menus

NavigateWhen DotNetNuke was first launched back in 2002, website navigation was just beginning to undergo a major shift.  At the time most sites still used a relatively static navigation structure with very little interactivity beyond a few simple hover animations and hyperlinks.  In fact, the original navigation structure for DotNetNuke was only a single level deep.  Over the course of the following 3 years things progressed very rapidly.  Sites began borrowing UI elements from desktop applications in order to provide users with a more familiar look and feel. 

In 2003, DotNetNuke explored a number of navigation options and finally settled on a menu control provided by a developer from a company up in Naperville, Illinois.  Solutions Partner Inc., was home to Jon Henning, an experienced JavaScript and .Net developer who had crafted his own menu control that was completely customizable using JavaScript, CSS and .Net.  The Solpart menu was highly configurable and provided designers with the ability to fully integrate the navigation structure into the overall site design.  If you have ever seen a DotNetNuke 1.x website, you would realize what a major advance this was.

After being invited to the core team Jon continued his work with JavaScript and the menu, ultimately replacing it with the new DNN Menu which relied heavily on the ClientAPI framework that Jon had created for DotNetNuke.  The new menu provided cutting edge functionality like Populate On Demand and drove the development of a core navigation provider framework.  The navigation provider framework made it easy for websites to swap out menu implementations with very little effort.  Once again, Jon’s work kept DotNetNuke at the forefront of web trends, allowing us to have a solid AJAX framework well before the competing solutions like MS AJAX or jQuery.

Mega-Menus

Over the last couple of years, new web trends have begun to emerge and it is time once again for DotNetNuke to make a change in order to stay current.  In 2009, Sitepoint predicted that Mega Menus would soon take over the web world.  I don’t think it happened as quickly as originally predicted, but ultimately, the mega menu has won the day with more and more websites following this trend.  Mega menus provide significant usability improvements over the standard drop down style menu, so it should come as no surprise that this style of menu is being requested by more and more designers and their customers.

Unfortunately, over the last couple of years Jon Henning has had to devote more and more time to his work with a new client, a little known company called RedBox.  In 2010, DotNetNuke.com was updated to include a new mega-menu based on the Telerik RAD Menu.  We heard lots of great feedback about the menu: mostly from people who wanted to know how they could incorporate mega-menus in their own sites.  The solution we used with RAD Menu was not one that was easily reproducible, so we set out to find a way to provide this feature in the core platform.

We investigated all of our options: modifying the core DNN Menu, building a wrapper around the RAD Menu or finding a way to include a third party menu component inside DotNetNuke, much as we had done with the original Solpart menu.  After a lot of evaluation we had narrowed the list down to 2 finalists whose solutions were both well respected in the DotNetNuke community.  Both of the finalists had great menus.  They were lightweight, highly configurable and provided the ability to create mega-menus out of the box.  Ultimately though, the final winner was chosen because the entire solution was already licensed under an MIT License and they readily agreed to contribute the code to the core.  This means that there is no worry about the license changing at any point in the future, jeopardizing the ability of community members to continue using the menu as they saw fit.

The New Menu

DominionI am happy to announce that starting with DotNetNuke 6.0, DDR Menu will be the new core menu provider in DotNetNuke.  Mark Allan has done a superb job of crafting a very powerful, yet lightweight menu that takes advantage of the core navigation provider.  In fact the solution is so powerful that it takes just a couple of minor configuration changes to an existing DotNetNuke skin to use the new menu.  Whether your skin uses Solpart menu, or DNN Menu, there is a simple upgrade path that allows you to continue using your existing styles.

The real power of DDR Menu is not in its ability to use existing Solpart or DNN Menu styles, it is in the core templating engine that allows you to use almost any menu style that you could want.  In the 1.0 product, Mark had included the ability to use XSLT to transform the raw XML menu data into whatever html structure you wanted.  The only limitation was your understanding of how to bend XSLT to your will and make it spit out the HTML that you desired.  Do you like table based menus, write a template to emit tables.  Do you prefer the clean, semantic html of an unordered list, then that is completely possible as well.  In fact, Mark had already provided templates for a half a dozen popular menu styles including Solpart, DNN Menu, Suckerfish, Artisteerfish, Accordians and even a mega-menu.

Mega2

With the 2.0 version of the menu, which is the version that will ship with DotNetNuke 6.0, Mark is taking templating to a whole new level.  With this new version, you will be able to use the XSLT based templates, as well as new template processing engines for token based templates and Razor script based templates.  With all of these templating options, there is no style of menu that will be off-limits to DotNetNuke designers.  Any navigation structure that uses HTML, JavaScript and CSS (or any subset thereof), can be built using DDR Menu.  In evaluating DDR Menu, I spent less than a day to understand the menu and write a new template necessary to render the mega menu shown below.  The template is completely re-usable and can be used as is in any DotNetNuke 6.0 website.  The template can also be customized if desired and packaged inside your own skins.

MegaMenu

DotNetNuke 6.0 will also be making another change to our menu structure.  Instead of displaying Admin and Host menus in the normal menu structure, we will be using the new mega-menu feature to show the admin and host options in the control panel.  Often site designs can only accommodate a limited number of top level menu elements.  Taking additional space for the admin and host menus reduces the number of menus available to normal site navigation.  The new layout will allow designers to accommodate more designs while ensuring that the Admin and Host menus are always accessible to users in a standard location.

MegaAdmin

I am really looking forward to many of the new UI changes coming in DotNetNuke 6.0.  The new DDR Menu will play a key role in the new look and feel coming in the next release.  I am especially looking forward to seeing how designers will take advantage of this new feature.  Finally I would like to congratulate Mark.  His work on DDR menu is amazing and I can’t wait to play with the new Razor based templating.

Joe Brinkman
Author

I am a co-founder of DNN Corp. My primary focus is on Engineering Operations and Support. I regularly blog on new DotNetNuke releases and technical tips to help you get the most out of DotNetNuke.

14 comment(s) so far...

David O'Leary 3/29/2011

Awesome! Great choice. You should really come up with a way for users to contribute templates for everyone to use.

 
Stephan Snoek 3/29/2011

Great work. Especialy love that the Admin and Host items are now removed from the menu. In the past we have had lots of situations where the fixed width menu would cause problems with the page layout due to these 2 additional menu items.

 
Armand Datema 3/29/2011

Well I am very happy with this one ( after all the green example is mine ) I cant really give away thsis template as it is part of a skin. But I have my submission for the design challenge almost done, of-course done with a very nice DDRMenu based navigation.

 
Joe Brinkman 3/29/2011

@Armand - Glad to hear that we'll have some good working examples for the design challenge. It should give people a good idea of the power and flexibility of the new menu.

 
Phil Speth 3/31/2011

Wow... I have been talking about this for days, not knowing it was in the works.<br /><br />Adding Razor to the Menu brings it to a class that can compete with anyone out there.<br /><br />I definitely think this would be deserving of a contest. Here are some ideas:<br /> 1> obviously most beautiful - standards compliant...<br /> 2> Vendor category for any module developers that expose their<br /> content in an interesting way in the menu. <br /> (Latest blogs, Articles, Top Products, Weather...)<br /> 3> If you provide an example of accessing the Taxonomy features from razor then the pages can even be run dynamic queries based on the categories applied to a page.

 
ech01 3/31/2011

Really like this addition to DNN. I've been using DDR for awhile now and it has become my go to menu system. My only concern is that it isn't the easiest to work with, and the documentation and examples are sparse. Hopefully, DNN will put some work in on the usability and documentation as opposed to just releasing it upon the community. Muchos gracias, solid addition!

 
Joe Brinkman 3/31/2011

@Erik - One of the deliverables for 6.0 is to have the DDR Menu documentation up on the DotNetNuke Wiki. This will allow access to a larger number of people to help with documenting the menu. Mark will certainly help seed that effort with his initial docs, but I expect that other designers with DDR Menu expertise will be able to add to that documentation as well.

 
Joe Brinkman 3/31/2011

@Phil - We already have a design challenge underway. I would encourage designers to get involved in that one. If you are passionate about DDR Menu, then use it in your skin and spend a lot of effort on really showing off your menu skinning prowess as part of a larger design.

 
Jay Mathis 3/31/2011

Don't take this as a slam on DDR, I've never used it, it may be wonderful. But I have to wonder if this is a wise move. DNN already made the mistake of relying on a single developer for its menu component once before with less than optimal results. Now it seems we are going to do it again.<br /><br />I don't understand why DNN doesn't use the racehorse of a menu system it already has with the Telerik suite. You are already loading the DLL, why not use it? <br /><br />It would not be that difficult to change the Telerik menu wrapper object to support mega menus or use Razor for that matter.

 
Phil Speth 3/31/2011

Is Razor available now or soon?

 
Joe Brinkman 3/31/2011

@phil - It will be available soon. V2.0 of DDR Menu is still in beta.

 
Joe Brinkman 3/31/2011

@Jay - In this particular case, we are not relying on a single developer. We are relying on a community of developers. <br /><br />The reality is that building and supporting a Telerik Menu Provider wrapper was going to be more work than you might first assume. We have taken the "wrapper" approach on many different third party components and found that there was often an impedence mismatch between the way the component wanted to work and the way the core framework wants things to work. This is not an issue with DDR. Additionally, DDR is something that we could make happen for 6.0. Given everything else we are doing, Telerik did not look like it was a viable option in the timeframe we had available. Finally, DDR menu was something that was embraced by the DNN design community, and Telerik didn't seem to have the same level of designer support or enthusiasm around it.

 

Excellent!! Another reason to try and download the CTP just now.<br /><br />Good work!

 
John Cornelison 5/9/2011

Mega Like ++

Attend A Webinar
Start  Professional Edition Trial
Have Someone Contact Me

Like Us on Facebook Join our Network on LinkedIn Follow DNN Corporate on Twitter Follow DNN on Twitter

Advertisers

Sponsors

DotNetNuke Corporation

DotNetNuke (DNN) provides a suite of solutions that make designing, building and managing feature-rich sites and communities fast, easy and cost-effective. The DotNetNuke Platform CMS is the foundation for more than one million websites worldwide. DNN Social, our newest solution, enables businesses to create immersive, interactive communities. Thousands of organizations like True Value Hardware, Bose, Cornell University, Glacier Water, Dannon, Delphi, USAA, NASCAR, Northern Health and the City of Denver have leveraged DNN to deploy highly engaging business- critical websites. Our rapid growth in product sales and deployments resulted in DotNetNuke Corp. being named one of the fastest growing private companies in America by Inc. Magazine in 2011 and 2012.