Firstly, thanks for the response i appreciate it.
I also am not sure what you are shooting for. With version 3.2, DNN for the first time exposed the raw data in xml format that represented the navigation hierarchy (see page 3 in
this document). This xml can be used in any manner people see fit. If we just stopped here, designers most likely would be out of luck, for transforming the XML using XSLT or other DOM manipulation is typically not something in a designer's arsenal. Typically sites use some form of web control to display navigation structure (i.e. Tree, Menu, Dropdown, etc.) and assigning properties to a control is fairly straight forward. This is where the provider model comes in. It marries the XML to the actual control. If there is another control you would like to use instead, all that is necessary to work with it is have someone create a provider with it.
I guess it all depends on where you draw the line between developer and designer, if your workflow is that the designer delivers some comps and your developers 'make it work' then you're most likely going to have to interate back and forth to get it right or compromise on your design's functionality to save time. The other option is to move the line so that your designer moves into the developers realm as much as possible (the trend in user experience); building out the design and deciding how the thing is constructed in terms of using tables or divs controls etc and such then typically the representation will be more accurate and made faster. Problem with the later is that there’s a big learning curve with DNN. The documentation, as you say, talks about XML, XSLT and can be very hard to follow for many designers. If you want something done you have to find a control that can be customized to fit your vision, then get a developer to make a provider and probably alter the control.
You state that you would like a module that exposes the core HTML, CSS, and JS. This statement confuses me, since the HTML that would be given to you is not static. Like I mentioned earlier we do offer the XML, which can be transformed to HTML however you like (assuming you know XSLT).
Most good designers can create anything they can imagine (in terms of navigation systems) between HTML,CSS,JS and Flash. Its a very familiar area because designers have a perfectionist drive to marry up their concepts perfectly with the end product, whereas developers in my experience are more concerned with with the behind the scenes aspects of functionality. My point with all this, i feel the way its designed doesn't leverage this abundance of knowledge, instead of empowering designers by giving them the environment theyre used to they're hitting a wall. Maybe its just a learning curve with XSLT, personally im not familar with it but from what ive read so far it seems powerful, maybe all that we really need is some more documentation, tutorials and examples.
You also state that the main navigation is completely different than utility navigation. I assume by this you are referring to the main nav and the module actions. From my programmer's perspective I definitely see them as the same. XML node hierarchy -> glue (provider) -> WebControl + Properties -> HTML.
What i mean is that a designer will spend a huge amout of time making sure a websites navigation is sexy as hell, a great deal of the overall design time is spent on the menu's intricate details because its the most highly used aspect of the site. People scroll over content; its about visual priority and menu is something that users have to focus on and interact with rather than glance over. I wouldn’t give a module dropdown menu on an admin-only interface the same sort of attention. So even though they work from the same mechanism, the concern might be 95:5 and my observation was that it doesn’t make sense to define the rule set by the minority.
Templates is an interesting idea, however, I am not sure how you would define an action in a template, like fly out to the right instead of below... Are you just referring to templating an individual menu item? This is kind of possible today through the lefthtml, righthtml property paradigm.
I have actually coded my own menu module, i basically hooked into the tab objects for the portal and added the admin/host nodes, hooked into the security aswell and looped through it all creating what i need. I've only exposed a few properties at this point because i was thinking about how templating could work. And i wanted to talk about it the idea, it shouldn’t be this hard and if there’s a way that my experience as a designer new with the product can help people and maybe the project reduce that learning curve then its probably worthwhile.
What i was thinking for templates was very much like putting your portal/container skin idea. You've got wrapper HTML and sub-templates for each tab item, so for example if you're building a horizontal menu your item template might be <div class=[x]><a class=[x] href=[x]>[text]</a></div> or it might be a table or span or a mixture of these. As much as possible is kept out in the open and can freely be changed. The security is invisible still, users only get shown what they should have access to see.
For examples sake, if i wanted to have all the tabs spewed into their own tables then use javascript to hide and show those layers based on mouse click. All that i need from the control is the URL/Text parsed for each item, the rest of the functionality can be controlled externally. With the wrapper template, the item templates, css and javascript. Using eventx script to marry css with javascript events onclick of the link with x class hide these tables and show this one.