A month or so ago I started a series of blogs about the new Features Module that will be a major focus of the upcoming Cambrian release. I had intended to publish these blogs on a frequent basis, but a "busy" life got in the way.
Anyway, now I am back "blogging" I intend to continue this series of blogs on the Features Module, by giving an update on some changes, and looking at the other parts of this module.
Features Module Updates
So first off, there have been a few cosmetic changes in the module since my first two posts - designed to make the module look more like the module it replaces "Module Definitions".
So instead of a "TreeView" on the left we have a drop-down box at the top, which is used to choose the type of Feature to display (in this case "Not Specified" displays all the installed features). If you then select the pencil "edit" icon you will then be redirected to an "Edit Feature" page (for example for the default DNN Authentication Feature)
The top half of this "Edit Page" depends on the feature type being edited. In this case we are editing an Authentication System. The bottom half of the page (which by default is collapsed) shows the common "package" settings for the feature.
This UI paradigm more closely follows the design of other core modules and so it was felt that this was a better approach (pending a more complete overhaul to the admin UI). At the bottom of the page are three command buttons "Update Feature", Create Feature Package" and "Cancel". These are fairly straigtforward - "Update Feature" is used to save changes, "Create Feature Package" is used by a Feature developer to "package" their Feature ready for distribution, and Cancel is used to return to the main List.
Most of the time their will also be a fourth command button "Uninstall Feature" which is used to Uninstall (or delete) a feature. In this case the "button" is suppressed as the basic DNN Authentication System is considered a "System" feature - as the site might not function without it.
Create Feature Package Wizard
The Features Module allows developers to create packages for distibuting their Features. The old Module Definitions Module and the old Languages Module had these features but in our new "Universal" system where all extensions are types of "Features", this packaging is now available to all Feature types. Clicking on the "Create Feature Package" command button launches the new "Create Package Wizard". In this example, I am using the "Links" module. The first page displays the information about the Feature
The next page display a list of files. The "folder" chosen depends on the feature type and for some features is a best guess at which folder to use. However, you can edit the folder field and click the "Refresh Fil List" command button to update the lower display
The list shows ALL the files in the folder selected (as well as the files in child folders). In this case you can see that my "Links" module folder contains addition language files (for the dutch and turkish languages) as I had been working on some Localization issues. I don't want these files in my package so I can simply "remove" these files from the list.
Next the Wizard displays a list of "assemblies" to include. Again, as with the files list, the Wizard makes a best guess attempt at determining which assemblies to include - for example by using the project file. But as with the files list you can add, edit or delete assemblies in the list.
On the enxte page the Wizard asks if you are just generating a manifest or whether you want to create a zip package, and prompts you for the file names.
Finally the last page of the Wizard provides a "Report" of the packaging operation.
Uninstall Feature Wizard
To uninstall a feature you can select the red cross "Delete" button in the list or you can select the "Uninstall Feature" command button in the Edit Page - either way the operation is only available if the Feature is not "flagged" as a System Feature. Using the Links modules as an example again, selecting "delete" or "uninstall" will start the "Uninstall Feature Wizard". The first page again displays information about the Feature (just to ensure you know which feature you have chosen to delete). To uninstall the feature you will need to click the "Uninstall Feature" command button. Notice that in this case as we are requiring you to select Delete/Uninstall twice there is no "alert" pop-up for you to confirm your choice. As with the old Module Definitions module you can choose to optionally delete all the files associated with the Feature OR to just "unregister" the Feature.
Once you click the Uninstall button, you will get a report of the uninstall. In this case (see below) there was a failure caused by an issue with Uninstall SQL Script.
This shouldn't have happened - but it does serve as a demonstration. Unlike the old Module delete function we do now attempt to give you a full report of what happened.
This blog has been pretty long, but I hope you will have been able to get a sense of the potential power of this new system. In my next Blog I will start describing how the new Installer/Uninstaller works and how developers can start to adopt the new features we have incorporated into the system.