Apr13Written by:Will
4/13/2009

I am still reading Mitchel Seller’s book, Professional DotNetNuke Module Programming. It’s a great book so far, and I have already been using it as a quick desktop reference for my DNN development needs. However, I came across a page last night that confused me. I have been speaking at code camps recently about the new Skin Widgets available to DotNetNuke version 5. One of the things I show during the session is how to package a widget to be installed on another DNN website.
In the book, Mitchel describes the available manifest types being: Module, Provider, Skin, SkinObject, and Container. However, another type is Widget. That’s what we are going to talk about here. First of all, since Charles Nurse has done a great job of covering the new Manifest file, I will not go into huge detail on it, but I will show you the entire manifest file that I used for my demo.
Here are the blog posts about the DNN 5.0 manifest files that Charles Nurse put out there for background:
Following the roadmap and guidelines that Charles has left for us, we can move on to the Widget manifest file. The main difference begins with the PACKAGE node, near the top of the page. For a module, it will look like this:
<packagename="WillStrohl.ContactCollector"type="Module"version="1.0.0">
A Widget is only slightly different, as shown here:
<packagename="WillStrohl.Widgets"type="Widget"version="1.0.0">
Notice that the TYPE attribute differs from Module to Widget. This difference continues to the COMPONENTS child nodes. Specifically, the component node itself. There are various types that Charles has blogged about. Now we use the “Widget” value for the TYPE attribute. Then, the schema for the remaining child nodes also have a slight difference, but only in the element names themselves. However, the function is the same as you’ve been using in all previous manifest files.
<components>
<!-- It is important to identify the type as a widget for the installer -->
<componenttype="Widget">
<widgetFiles>
<!-- The name of the widget folder -->
<basePath>WillStrohl</basePath>
<!-- The listing of all of the widget files included in the zip file -->
<widgetFile>
<name>WillStrohl.Widgets.SampleWidget.js</name>
</widgetFile>
<widgetFile>
<name>WillStrohl.Widgets.TechnoratiInfoWidget.js</name>
</widgetFile>
<widgetFile>
<name>WillStrohl.Widgets.SocialBookmarkWidget.js</name>
</widgetFile>
<widgetFile>
<name>license.txt</name>
</widgetFile>
<widgetFile>
<name>releasenotes.txt</name>
</widgetFile>
<widgetFile>
<path>img</path>
<name>i_facebook.gif</name>
</widgetFile>
<widgetFile>
<path>EmbedWidgetResources\InjectScript</path>
<name>injectscript.snippet.htm</name>
</widgetFile>
</widgetFiles>
</component>
</components>
That’s all there is too it. Just replace a standard DNN 5 manifest file using my examples above, replacing the values with your own. Here is a complete example of my own manifest file.
4 comment(s) so far...
Whoaaaa. It's pretty cool to run into a website that makes me SLLOOWWW down and R E A D. Isn't there an easier way to simply download knowledge yet?
I'm trying to fix an upload error on a DNN 5.01 skin pack. The .dnn file isn't found in the temp directory during install, and yet i can see it in the temp folder? Does this mean there's an issue with the server not recognizing the .dnn file extension and what to do with it?
Ideas?
By Daniel Comp on
5/22/2009 |
It turns out that the manifest was zipped in the wrong place, so once I moved the file and re-zipped it, install, etc. things are fine. Is there a standard for file and manifest file/folder relationships - like an outline to follow?
By Daniel Comp on
5/22/2009 |
Yes. Which are you looking for? The relationship in the manifest, in the zip file, or both?
By Will on
5/22/2009 |
You can also use my "Dotnetnuke 5+ Skin Package Manifest Creator" here:
http://dotnetnuke.mywebsitedesigner.com.au By Adam Kirkbride on
2/20/2010 |