Learn More





DNN 7.3 Developer Quick Start

Return to previous page

  • 4/7/2015



DNN 7.3 Developer Quick Start

Last updated 4 years ago



(Enter the content of this article below)


The DNN 7.3 Developer Quick Start page is intended to be used as a resource that can help get DNN extension developers up to speed on the latest offerings available in 7.3.0.

Platform performance enhancements

Bruce Chapman's blog does an excellent job of summarising many of the performance enhancements made in 7.3.0. Whilst performance increases are always welcome, typically they are automatic and not something a developer need worry about i.e. existing code will simply work. However we recommend that module developers test their code against 7.3.0 in case they were accidentally relying on a sub-optimal piece of platform code e.g. in a few cases we found platform component's that were registering jQuery when they did not need to do so, so removed the unneeded registration to improve performance and reduce page size.

If a module developer was relying on that erroneous registration rather than using the jQuery API call's to within their extension, then the possibility exists that their module may not work as expected i.e. script may fail as no jQuery instance has been loaded. To rectify this simply use the jQuery API to register the necessary script. Note: this issue most commonly manifests as a module which contains javascript that doesn't work when the user is logged out, but does when the user is logged in - this is because when a host/admin user log's in the control panel registers jQuery i.e. it does the registration that should be in the module already.

Note: A number of skin/module vendors had incorrectly assumed that jquery-migrate would always be registered - rather than rely on them updating their extensions correctly, the DNN Platform team took the decision to add code to automatically register it for them in 7.3.1

Updated SharpZipLib

SharpZipLib is a 3rd party component included with DNN since it's earliest days that provides support for zipping and unzipping various compressed files (primarily used for .zip extensions). 7.3.0 updated this to a more recent version which amongst it's capabilities is support for ZIP64. The original .ZIP format had a 4 GiB limit on various things (uncompressed size of a file, compressed size of a file and total size of the archive), as well as a limit of 65535 entries in a .ZIP archive. In version 4.5 of the specification (which is not the same as v4.5 of any particular tool), PKWARE introduced the "ZIP64" format extensions to get around these limitations, increasing the limitation to 16 EiB (264 bytes).

This enhancement was backed out in the 7.3.1 release as it was found to cause issues with extensions that had built against the older version. As both the old and new share the same namespaces they cannot both be deployed.

dnnPanels enhancements

The dnnPanels jQuery Plugin was enhanced via a code contribution from Vicenç Masanas. It now has
  • support for setting the initial status of the panels, either open or closed. Current default status is open when the panel is the first of a group.
  • support an option to disable setting the status on a cookie. This way, whenever you returned to the page, the panels would always be in the same initial state.
  • provide expand() and collapse() methods that could be used on demand

HTML 5 tags as skin panes

The skinning engine was enhanced to support the header, footer, main, article, and aside HTML5 tags as valid tags for skin panes. Previously, only div, p, and td tags could be panes within a skin.

Portal level SMTP

Support for portal level SMTP was added via a contribution from Oliver Hine. The API was updated to work seamlessly with this new capability, but it is listed here in case any developer wishes to only use the "old" behaviour.

Added support for Google Analytics tracking code to support Display Advertising

Will Strohl added support for the new display analytics Demographics and Interest reports

Save/Restore Module with Settings/Content

Torsten Weggen contributed this enhancement that ensures that module "settings" as well as module "content" are exported and imported. This ensures that Page templates and Portal templates transfer more data on export and thus can ensure a better experience on import/installation. Torsten's contribution was tweaked to make it a new default behaviour, but it is listed here in case any 3rd party developers have been using custom solutions to solve this problem.

DDRMenu added to solution

After consultation with Mark Allan (DDRMenu's creator and main developer), we added the latest DDRMenu to the solution. This will allow for easiest debugging, as well as simplifying the process for users to submit bugs or enhancements via Github. Oliver Hine and Brian Dukes added fixes and enhancements to DDRMenu, including removing some hidden exceptions, adding template parameter support to Razor menu templates & action menu templates, as well as code cleanup.

API Cleanup

DNN contained a number of older APIs that have had "Testable" variants created. This was leading to some confusion with different methods in the different static and instance controllers. We took time to do a "cleanup". This should not effect any developers (unless they were directly accessing the "testable" controller internal classes - which are not guaranteed to remain binary compatible). The cleanup consisted of
  • copy methods from TestableXXXController to XXXController class
  • ensure XXXController implements ServiceLocator pattern
  • ensure all methods are extracted into IXXXController interface
  • replace all usages of TestableXXXXontroller by XXXController
  • obsolete TestableXXXController class

Log4Net diagnostics properties

The existing log4net capability was enhanced to support logging of "processid" and "appdomain" for diagnosing hard to reproduce issues.

Enhance dnnConfirm to support dynamic invocation

The pre-existing dnnConfirm jQuery Plugin was enhanced to remove the requirement it must be attached to an existing button, and support being called directly. The plugin now supports:

 $.dnnConfirm(); //only show the confirm box with default content;

$.dnnConfirm({actionUrl:''}); //will redirect to dnn site if click yes button;
$.dnnConfirm({text: 'Hello World'}); //show custom text;
$.dnnConfirm({callbackTrue: function(){alert('click yes button');}}); //show the alert when click yes button.

Updated Site template

The default site template has been enhanced via a few updates (see here and here ) - it's now responsive, and acts as a better example template of recent enhancements such as support for 404 page, search results and user profile.

51 Degrees - Device Detection is not Enabled By Default

The new version of 51 Degrees included in 7.3 is 100x faster and smaller than the previous version. The exponential proliferation of devices and browsers had caused growing pains and so the new version of 51 Degrees solves the problem in a different way, one which is faster and less memory intensive. This new version is included in 7.3, and a new option to disable device detection has been introduced. In 51 Degrees V3 there is an Enabled attribute in the 51Degrees.mob.config file which controls whether device detection is enabled or not. This configuration setting is now exposed through the Device Detection user interface in the product. On new DNN installs we should set the default value to Enabled=False, as the majority of sites do not use the device detection/redirection capability. Note that setting this to False does not completely disable 51 Degrees - if you have custom code that needs to retrieve device information based on a user agent string, you can still call the API directly and get back an object.
No sections defined
Subscribe to DNN Digest

DNN Digest is our monthly email newsletter. It highlights news and content from around the DNN ecosystem, such as new modules and themes, messages from leadership, blog posts and notable tweets. Keep your finger on the pulse of the ecosystem by subscribing.  

What is Liquid Content?
Find Out
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out