Introduction to Introduction to DotNetNuke DotNetNuke Scott McCulloch Scott McCulloch DotNetNuke Core Team DotNetNuke Core Team www.smcculloch.net www.smcculloch.net
Dec 27, 2015
Introduction to Introduction to DotNetNukeDotNetNuke
Scott McCullochScott McCulloch DotNetNuke Core TeamDotNetNuke Core Team
www.smcculloch.netwww.smcculloch.net
IBUYSPYIBUYSPY
Developed by Vertigo Software to Developed by Vertigo Software to showcase ASP.NET 1.0showcase ASP.NET 1.0
VB.Net/C#VB.Net/C# Dynamic Site Layout using User Dynamic Site Layout using User
ControlsControls Portal Module ImplementationPortal Module Implementation Portal Configuration using Sql ServerPortal Configuration using Sql Server Role-Based SecurityRole-Based Security Great Starting Point!Great Starting Point!
IBUYSPY - ProblemsIBUYSPY - Problems
Support/Enhancements – No longer Support/Enhancements – No longer being worked on! being worked on! (www.aspsmith.com/ibs)(www.aspsmith.com/ibs)
Missing FeaturesMissing Features– Multiple CommunitiesMultiple Communities– Portal ManagementPortal Management
CustomisationCustomisation– Module Development Module Development – Graphical ChangesGraphical Changes– Core ExtensibilityCore Extensibility
DotNetNukeDotNetNuke
The DotNetNuke ProjectThe DotNetNuke Project Started by Shaun Walker of Perpetual Started by Shaun Walker of Perpetual
Motion Interactive Systems Inc. in Jan. 2002 Motion Interactive Systems Inc. in Jan. 2002 as an extension to IBuySpy, initially called as an extension to IBuySpy, initially called IBuySpy Workshop.IBuySpy Workshop.
105,538 Registered Users (18105,538 Registered Users (18thth Nov, 2004) Nov, 2004) Now consists of 30 core team developers.Now consists of 30 core team developers. Large community support, ASP.NET forums.Large community support, ASP.NET forums. Written in VB.NETWritten in VB.NET Open Source license.Open Source license. 10,000 to over 50,000 lines of code10,000 to over 50,000 lines of code
TimelineTimeline
01/1/2002 - IBS Release01/1/2002 - IBS Release 24/12/2002 – Released on ASP.Net forums24/12/2002 – Released on ASP.Net forums
– Shaun Walker – Perpetual Motion (Canada)Shaun Walker – Perpetual Motion (Canada)- IBuySpy WorkshopIBuySpy Workshop
15/3/2003 – 15/5/200315/3/2003 – 15/5/2003- Re-branded as DotNetNuke (1.05 – 1.08)Re-branded as DotNetNuke (1.05 – 1.08)- Private AssembliesPrivate Assemblies
1/9/2003 – DNN 1.10 (x)1/9/2003 – DNN 1.10 (x)- Core team formed world-wideCore team formed world-wide- Stable release with some security patchesStable release with some security patches
Timeline (cont.)Timeline (cont.)
23/3/2004 – DNN 2.023/3/2004 – DNN 2.0– Complete Re-Write Complete Re-Write – 1500+ Source Control 1500+ Source Control
Transactions/MonthTransactions/Month- Provider Pattern for Data AccessProvider Pattern for Data Access- Skinning EngineSkinning Engine
4/6/2004 – DNN 2.14/6/2004 – DNN 2.1- Providers for Scheduler/Logging/RichTextProviders for Scheduler/Logging/RichText- Crucial bug fixesCrucial bug fixes
Timeline (cont.)Timeline (cont.)
The FutureThe Future- Multi-Lingual (2.2)Multi-Lingual (2.2)- Friendly Urls (2.2)Friendly Urls (2.2)- Search (2.2)Search (2.2)- Whidbey Providers (2.2)Whidbey Providers (2.2)- www.dotnetnuke.comwww.dotnetnuke.com (roadmap) (roadmap)
More Features!More Features!
Completing the Portal Completing the Portal ImplementationImplementation
Multiple Portals per InstallationMultiple Portals per Installation Extended Basic FeaturesExtended Basic Features
– User Membership, Role Membership, User Membership, Role Membership, Content AuthoringContent Authoring
Implement Advanced FeaturesImplement Advanced Features– Search Engine Optimization, Banner Search Engine Optimization, Banner
Advertising, Affiliate Relationship Advertising, Affiliate Relationship Management, and HostingManagement, and Hosting
Portal ArchitecturePortal Architecture
1 Installation (1DB/Web)
Host
CarPoint.ninemsn.com.au
BikePoint.ninemsn.com.au
BoatPoint.ninemsn.com.au
Core ExtensibilityCore Extensibility
Provider PatternProvider Pattern
““a a providerprovider is simply a contract is simply a contract between an API and the Business between an API and the Business Logic/Data Abstraction Layer.Logic/Data Abstraction Layer.””
Whidbey Pattern for ExtensibilityWhidbey Pattern for Extensibility Build new core features using this Build new core features using this
Pattern!Pattern! Modules built using this pattern as Modules built using this pattern as
well!well!
Portal Architecture for Data Portal Architecture for Data AccessAccess
Abstract Base Class
ConfigAccessDataProvider
SqlDataProvider
OracleDataProvider
Provider Pattern Provider Pattern EverywhereEverywhere
Data ProviderData Provider Rich Text ProviderRich Text Provider Logging ProviderLogging Provider Scheduler ProviderScheduler Provider Whidbey Providers (Membership, Whidbey Providers (Membership,
Role, Profile) coming soon!Role, Profile) coming soon! Everywhere customisation *may* Everywhere customisation *may*
occur!occur!
SkinningSkinning
The Skinning ProcessThe Skinning Process
Design
Design Skin in Any Editor(Designer)
Replace
Mark Dynamic Section in Skin
with special PlaceHolders
(Designer)
Pack
Package into Zip File for Distribution(Designer)
Deploy
Install into your portal
(Admin)
SetupSetup
1.1. Design HTML in any Design HTML in any editoreditor
Note: “Normal Design” Note: “Normal Design” as you would design any as you would design any websitewebsite
Design
Design Skin in Any Editor(Designer)
ReplaceReplace
2.2. Mark sections to inject Mark sections to inject module (ContentPane, module (ContentPane, LeftPane)LeftPane)
3.3. Mark dynamic Mark dynamic functionality based on functionality based on Skin Objects ([Title], Skin Objects ([Title], [Menu], [Login])[Menu], [Login])
Note: You can write your Note: You can write your own Skin Objects! (Not own Skin Objects! (Not Covered)Covered)
Replace
Mark Dynamic Section in Skin
with special PlaceHolders
(Designer)
PackPack
4.4. Pack up all files into a Pack up all files into a ZipZip
Pack
Package into Zip File for Distribution(Designer)
SetupSetup
5.5. Install through File Install through File Manager as “Skin Manager as “Skin Package”Package”
Note: You can apply at Note: You can apply at “Host”, “Portal”, “Page”“Host”, “Portal”, “Page”
Deploy
Install into your portal
(Admin)
Further NotesFurther Notes
You can write your own Skin Objects You can write your own Skin Objects (e.g. replacement menu’s) (e.g. replacement menu’s)
Container Packages are the content Container Packages are the content around a Modulearound a Module
You can write Skin’s as ASCX to skip You can write Skin’s as ASCX to skip conversion Processconversion Process
More InformationMore Information
Skinning Guide (/Documentation)Skinning Guide (/Documentation) Skinning Contest (Skinning Contest (
http://www.dotnetnuke.com/contesthttp://www.dotnetnuke.com/contest ) ) Skin Object Example Skin Object Example
(/DesktopModules/PageTitle/)(/DesktopModules/PageTitle/) Free/Buy Skins (Free/Buy Skins (
http://www.dnnskins.comhttp://www.dnnskins.com, , http://www.snowcovered.comhttp://www.snowcovered.com ) )
Module Module DevelopmentDevelopment
What are Modules?What are Modules?
Written in .NET code, C#, VB.NETWritten in .NET code, C#, VB.NET Promotes code reuse.Promotes code reuse. Allows you to extend DotNetNuke.Allows you to extend DotNetNuke. Customizable (using the module Customizable (using the module
container)container) Compiled assemblies.Compiled assemblies.
Development ProcessDevelopment Process
Setup
Initial Project Creation in
Visual Studio(Developer)
Develop
Create your Custom
Functionality(Developer)
Pack
Package Module for Installation(Developer)
Deploy
Install into Portal
(Admin)
SetupSetup
Create a new Class Project Create a new Class Project (/DesktopModules)(/DesktopModules)
Compilation Path (../../bin/)Compilation Path (../../bin/) Name Project Name Project
Appropriately Appropriately (CompanyName.Module)(CompanyName.Module)
Reference DotNetNuke Reference DotNetNuke ProjectProject
Setup
Initial Project Creation in
Visual Studio(Developer)
DevelopDevelop
Add User Controls to Add User Controls to ProjectProject
User Controls must User Controls must Implement Implement “PortalModuleControl”“PortalModuleControl”
Develop as “Normal” Develop as “Normal” Register Controls through Register Controls through
Portal for DebuggingPortal for Debugging
Develop
Create your Custom
Functionality(Developer)
PackPack
Write Xml Manifest File Write Xml Manifest File (ModuleName.dnn)(ModuleName.dnn)
Package into Zip FilePackage into Zip File Distribute Distribute
Pack
Package Module for Installation(Developer)
DeployDeploy
Install to your portal Install to your portal through “File Manager”through “File Manager”
Add to any page (Module Add to any page (Module will appear in list now)will appear in list now)
Deploy
Install into Portal
(Admin)
More InformationMore Information
Module Developers Guide Module Developers Guide (/Documentation)(/Documentation)
www.smcculloch.netwww.smcculloch.net (Sample Modules/CodeSmith Templates)(Sample Modules/CodeSmith Templates)
www.dotnetnuke.dkwww.dotnetnuke.dk (Tutorials/Dev Environment)(Tutorials/Dev Environment)
dnnjungle.vmasanas.netdnnjungle.vmasanas.net (Tutorials/VS.NET Enterprise Templates)(Tutorials/VS.NET Enterprise Templates)
ConclusionConclusion
Open Source Application with Strong Open Source Application with Strong Development CommunityDevelopment Community
Extensible through Provider PatternExtensible through Provider Pattern Customisable through Skinning & Customisable through Skinning &
ModulesModules ““Off the Shelf” Portal Application at Off the Shelf” Portal Application at
the right price!the right price!
Questions?Questions?