There 2 major changes in DNN 5 skin management
A. Admin skin uploads no longer possible
In DNN 4 an admin could install skins if the Host would allow him to.
In DNN 5 administrators cannot install skins anymore.
The reason for this is that installing a skin has the same security risks as installing a module (you can include server side script). For this reason installing modules has always been restricted to Host users, the same applies to Skins now.
If you are logged in a Host user, you can still install Portal skins, via: Admin > Extensions > Install Extension Wizard
B. Manage skin pages
Due to the changes mentioned before the location and the functionality of the skin management pages has changed too.
Skin management for Admins
Handeling and parsing skins is done from the Admin > Skins page.
Installing a Admin skin (aonly logged in as host) is done from the Admin > Extensions page
Installing skins / containers in DNN 5.
Install a Host skin, using the extension installer.
A. Login as Host
B. Menu: Host > Extensions
C. Click the "Install extension wizard" link.
D. Browse the skin package.
E. Click "Next"
You will see a warning if you are trying to install a legacy skin
F. Select the "Skin" or "Container" radio button and browse to the package (again).
If you are installing a "Skin & Container combined" package, you should select the Skin radio button.
G: Click "Next" until the skin is installed.
Install a portal skin.
Login as host and use: Admin > Extensions > Install Extension Wizard.
The rest is the same a for Host skins
Install the legacy skin, using copy / ftp.
A. Unzip the skin zip
B. FTP or copy the unzipped skin folder to the "Portals/_default/Skins" folder.
The skin will be installed and visible in the Skin manager, so you can apply it, but it will not be registered as an extension.
Converting a legacy skins to a DNN 5 skin.
The major difference between a legacy and a DNN 5 skin is the Manifest file.
This adds support for skin versioning, install notes, licensing info on install etc.
You can create one yourself or have DNN 5 do it for you; it will also package the skin into a zip file for you.
The Manifest File
In DNN 5 a skin is an extension, it has a manifest file (just like modules already had).
This is the main difference between a legacy (pre 5) and a DNN 5 skin.
The manifest is an XML file, with a .dnn extension.
It contains the attributes and contents of the skin package.
Skin manifest file Example:
<dotnetnuke type="Package" version="5.0">
<packages>
<package name="MySkin" type="Skin" version="0.1.0">
<friendlyName>My Skin</friendlyName>
<description>This is My Skin</description>
<owner>
<name>Me</name>
<organization>My Company</organization>
<url>http://www.mycompany.xyz</url>
<email>support@mycompany.xyz</email>
</owner>
<license>No warrenties and no support</license>
<releaseNotes>This is the first release of My Skin.</releaseNotes>
<components>
<component type="Skin">
<skinFiles>
<skinName>MySkin</skinName>
<basePath>Portals\_default\Skins\MySkin</basePath>
<skinFile>
<name>index.ascx</name>
</skinFile>
<skinFile>
<name>index.html</name>
</skinFile>
<skinFile>
<name>index.jpg</name>
</skinFile>
<skinFile>
<name>skin.css</name>
</skinFile>
<skinFile>
<name>skin.xml</name>
</skinFile>
</skinFiles>
</component>
</components>
</package>
</packages>
</dotnetnuke>
The different nodes and their meaning:
<packages>
As you can see the manifest contains a Packages node, there can be more then one package node inside the packages node (multi extension packages).
<package>
The package node has some attributes for the package, like its name, owner data, license and release notes.
<components>
The <components> part can contain multiple <component> tags.
This means you can add multiple components to a package, for instance a skin and a container, or a skin and a skin object.
<component>
Every <component> node contains info about a specific component, such as type (Skin / Container), base path (path to install to) and a "list" of included files.
Note: For a container change the type to "Container" (case sensitive!)
This should give you enough information to create your manifest files manually, but you can also use DNN 5 to create the manifest for you.
Use DNN to create your Manifest file
You have to install the legacy skin first if you want DNN to generate the package for you.
Note: ATM there is no support for creating packages with skin and container combined in one file, you will have to unzip the legacy package and install skin and container separately. Then you create DNN 5 package for both of them and combine the two into one package manually (explained later).
There are two ways to install a skin / container (explained above). You can use the extension installer, or copy the skin to the skins folder. If you used the copy method or you upgraded DNN, you will first have to do this:
Create a package from skins after an upgrade or installed using "copy / ftp".
A. Login as Host
B. Menu: Host > Extensions
C. Click the "Create new Extension" link
D. Select skins from the dropdown.
E. Enter the name for the skin; this should be the name of the skin folder you just copied to the skins folder.
F. Enter Friendly name, Description and Version for the skin and click "Next"
G. Enter the "Owner info" and click "Next"
The skin should be registered as an extension.
Now DNN can create your DNN 5 skin package.
Create a DNN 5.0 Package
A. From Menu: Host > Extensions, click the edit icon of the skin package.
B. Enter the package data in the screen and click "update skin"
Do not change the "Skin Package Name" or the wizard will not complete successfully, you can change this later by editing the generated extension package.
C. Click the "Create package" link.
D. Leave the checkboxes as they are and click "Next"
E. In the list under: "Choose Files to include", check if all files are included (they normally should be)
Please note that ATM you can change the folder path here but the wizard will fail if you do.
F. Click "next", review the Manifest file and click "next" again.
G. Enter the name for the Manifest file (you must enter the .dnn extension)
H. Enter the package name (this is the name of the package zip file), you must enter the .zip extension
If all goes well the skin package should be generated in the "Portals/_default" folder.
Combine a skin and a container in one DNN 5 package
Warning: do not try to pack a DNN 5 skin and a container the way you did in DNN 4 (Skins.zip and Containers.zip files, zipped together) , it will not install!
This is quite a simple task as you can combine multiple extensions in one package.
A. Convert both the skin and the container to a DNN package as described above.
B. Copy the converted skin package file.
C. Open both the copied skin package and the container package (the zip files)
C. Copy all the files but the manifest file for the container package, to the copied skin package.
D. Now open both the skin and containers manifest file in a text editor.
E. Select the <component>…</ component> block from the containers manifest file and paste it in the copied skins manifest file, below the skins existing <component>…</ component> block.
F. Save the copied skins manifest file
The new package you just created will install both the skin and the container in DNN 5.
The combined skin / container package will show up in the extensions list as a skin (the container in the skinpack will not be listed separately under containers)
They are both visible onder admin > skins, so you can use them as useual
reumelhof
Timo Design -- DotNetNuke Custom Skinning
SearchDotNetNuke.Com -- Extended DNN (forum) search
Codeplex page -- Token Replace plugin for FCK -- Free Skin Objects -- Example Skins