DotNetNuke: Skin vs Container vs Module - dotnetnuke

I've learned from THIS question that Skins, Containers and Modules are ASCX files but they weren't explained well. What are the differences of the these ASCX files?

Containers are "styling" for modules, but mainly just think of them as a Wrapper.
Modules provide Content and Functionality on your DNN website. The simplest way to think of a container, is to draw a box around the Content/Functionality in a module, that is your container.
If you notice the "careers 2.0" section of Stack Overflow on the right side of this page, the Careers 2.0" area at the top would be the module's title, while the list of jobs inside of that box would be the content provided by the module itself.
The skin provides the layout for a page. It will have sections to which modules can be added, called panes (e.g. ContentPane, LeftPane, HeaderPane, etc.).
Skins and containers are design elements, whereas modules provide functionality.

Related

How to make and use different page layouts?

I am new to DotNetNuke and come from a WP/Drupal background. I can't find any documentation on what I feel should just be a simple thing to do.
I need to have three different layouts, a Homepage layout which just uses a simple 12 column gird.
An InteriorA page where it uses a 9 col grid with a 3 col
Then an InteriorB page where it uses a 3-3-6-12 grid.
I dont see where I build and save these templates in code, then where to assign them to the pages I want to use them on.
Following up on the previous answer, resources available to you include the Xcillion theme that is provided with DNN installs. You will find the entire skin in /Portals/_defauilt/skins/Xcillion.
The "page layouts" are the .ascx files. The details of the layout are the "content panes" included in the .ascx files. They are the divs with IDs and the runat-server attribute.
You can define the layouts using different skin files, and then put content (modules) in the content panes that you would like to use. In other words, you can include the 3 layout possibilities in one .ascx, and place content appropriately.
The DNN Wiki has http://www.dnnsoftware.com/wiki/dotnetnuke-skins, with covers the basics of theming. You should be able to find more resources by Googling. One great resource on theme construction is DNN Hero's tutorials from DNN Creating. Start at dnnhero.com. This is a subscription service, though.
The location of these file is usually in a folder such as below:
\Portals_default\Skins
There are also skins which may be installed on a "portal" level:
These would be seen here:
\Portals\0\Skins
In here you should find a folder which is the name of the skin - And then the ASCX files for each individual skin file.

how to change DNN 7 Mega2DNN to Standard DNN menu

I has some problem, can anyone help?
how to change DNN 7 Mega2DNN to Standard DNN menu.
so it is one column going down
Thanks
The DDR Menu uses templates to conteol its behavior. Mega2DNN is one such template?
Assuming that the template is specified in your skin file, that's where you replace Mega2DNN with another template. Look at a skin file from the Gravity skin as an exmaple.
You will find a small collection of templates at http://dnnddrmenutemplates.codeplex.com/
The DNN Wike has a section on the DDR Menu, including a discussion of creating and configuring templates.
You may find it easy to modify an existing template, or you can create one from scratch. As for getting started, the ULTokens template creates a simple unordered list of links that you can style. The Superfish template creates a horizontal menu with dropdowns.
DNNCreative.com, a subscription site, has a nice tutorial

DotNetNuke module position and panes

I have been using DotNetNuke for a couple of weeks but there is one thing I can't figure out. How can I find out which pane a module currently resides in. I have used mostly version 7 but I have tried version 6 too. I can't find this information anywhere.
When a page is in Edit Mode in 7.x there is an option to move a module to a different pane by hovering over the Move Icon. DNN displays a list of panes where the module can be moved when the mouse is over the Move Icon. DNN knows what pane the module is currently in because the current pane is excluded from the list. However, under the Settings for a module there is no property to tell you in which pane the module resides.
This is really important because most skins have LOTS (20+) of different panes. Usually panes are collapsible it is quite hard to tell which pane a module is in based solely on the position of the module on the page. Knowing the current pane of one module is required to get the correct layout when you add new modules.
The only thing that works is to use process of elimination. I can figure out a module's current pane if I can find which pane is NOT in the list of panes where I can move that module. This method is tedious and un-usable if you are trying to work with modules via the Page Management admin screen. Am I missing where to find this property or is not available. If it is not available then is there are better way to position items that I am missing?
Layout Mode should show you the PANE names. If you don't have Pane Names then it is possible that the Skin you are using has hidden the the name of the pane, but why they would do that I don't know.
Here's an Example of one of the Panes in my MultiFunction skin (available on codeplex) when in Layout Mode
TopPane

Generating layouts with Prism (Silverlight)

I'm new to Prism and have a conceptual question.
What I want to build is a Silverlight app that can load its layout (and the modules that are used) from a config file. Imagine I have a number of modules (e.g. a Chart, a Treeview and a Newsticker) and I want to use my config file to determine which of those are visible in my app and also where they are located on screen.
So if I want to have an app with just a Graph and a Treeview but not a Newsticker, would it be enough to just create an XAML file that contains views to those two modules? Would this XAML file be the shell?
Could I then have different XAML files/shells/config files to "generate" different looking applications at startup?
I don't need to switch layouts at runtime, I just want to be able to easily configure my application to use a different set of modules. I would appreciate pointers in the right direction.
Here are some approaches that I found:
http://blog.roundthecampfire.net/2011/10/creating-composable-ui-with-f-and-prism.html
http://www.dotnetpatterns.net/content/147-Lesson-2-Prism-creating-a-dynamic-region-layout-with-templates

Silverlight Composite application

I'm trying to figure out what would be best solution to the problem I'm facing. I have a Silverlight application which should be composed from different modules. I can use Prism, place regions and load modules and fill regions with loaded modules but this is not enough in my situation. Here's what I want to accomplish:
For most views that gets loaded from different xap files, I should place an element somewhere in the shell, which will perform navigation to the dynamically loaded view.
That element (which links to dynamically loaded view) should support localization and should have dynamically assignable data templates, different module links should have different content/data template (I'm thinking writing data templates in xaml files on the server and reading them from silverlight via XamlReader, maybe there's a better way?).
Uri mapping and browser journal should work with navigation. Silverlight default navigation mechanism better suits my needs than the one found in Prism.
The architecture should support MVVM.
I think thats all. I just couldn't think of a good architecture which will satisfy all my needs. Any help would be greatly appreciated.
I do not know of a single product/solution that would cover all your requirements, so here are some comments on each:
If one area of the shell has a region that supports multiple items, you just register a control of type link/button etc with the same region name in each module. For example we register views based on the Telerik TadRibbonTab (instead of UserControl) with a region named "views" which is a RibbonBarTab with a region named "views". Every module then adds its its own button to the list. You can do the same thing with any multi-item container.
Localisation is a completely different issue and can be solved in a number of ways. See my answer here: Load Resources ".resx" from folder in Silverlight
A custom navigation mapper can be made to behave like the standard one, without messing up the support for Prism regions. The one we created encodes GUI information such as current selections (current view and item selections etc) into the URL. That means we are in total control of the state and the URL controls the state.
Hardly anything stops you using MVVM as that is one small feature for separating views from code-behind data.
I will be interested in what other solutions are proposed as we are always looking for new ideas too.

Resources