introduction to dotnetnuke
DESCRIPTION
Introduction to DotNetNuke. Agus Kurniawan, MVP (C#) [email protected] Software Architect – PT. Astra International Tbk Group Leader of .NET Mobile - INDC. Agenda. History DotnetNuke overview More Features! Core Extensibility Skinning Module Development. A Little History. - PowerPoint PPT PresentationTRANSCRIPT
Introduction toIntroduction toDotNetNukeDotNetNuke
Agus Kurniawan, MVP (C#)Agus Kurniawan, MVP (C#)[email protected]@ai.astra.co.id
Software Architect – PT. Astra International Software Architect – PT. Astra International TbkTbk
Group Leader of .NET Mobile - INDCGroup Leader of .NET Mobile - INDC
AgendaAgenda
HistoryHistory DotnetNuke overviewDotnetNuke overview More Features!More Features! Core ExtensibilityCore Extensibility SkinningSkinning Module DevelopmentModule Development
A Little HistoryA Little History
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 being Support/Enhancements – No longer being worked on!worked on!
Missing FeaturesMissing Features– Multiple CommunitiesMultiple Communities– Portal ManagementPortal Management– Hierarchical Site Layout (Menu)Hierarchical Site Layout (Menu)
CustomizationCustomization– 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.
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 12/24/2002 – Released on ASP.Net forums12/24/2002 – Released on ASP.Net forums
– Shaun Walker – Perpetual Motion (Canada)Shaun Walker – Perpetual Motion (Canada)- IBuySpy WorkshopIBuySpy Workshop
3/15/2003 –5/15/20033/15/2003 –5/15/2003- Re-branded as DotNetNuke (1.05 – 1.08)Re-branded as DotNetNuke (1.05 – 1.08)- Private AssembliesPrivate Assemblies- Included MenuIncluded Menu
9/1/2003 – DNN 1.10 (x)9/1/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.)
3/23/2004 – DNN 2.03/23/2004 – DNN 2.0– Complete Re-Write Complete Re-Write – 1500+ Source Control 1500+ Source Control
Transactions/MonthTransactions/Month- Provider Pattern for Data Access Provider Pattern for Data Access
- http://msdn.microsoft.com/library/en-us/dnaspnet/html/asp02182004http://msdn.microsoft.com/library/en-us/dnaspnet/html/asp02182004.asp.asp
- Skinning EngineSkinning Engine 6/4/2004 – DNN 2.16/4/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.?)Search (2.?)- Client API (2.?)Client API (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
lenders.yourcompany.com
dealers.yourcompany.com
buyers.yourcompany.com
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 Authentication (Soon?)Authentication (Soon?) Everywhere customization *may* Everywhere customization *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])
You can write your own You can write your own Skin Objects! Skin Objects!
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.xd.com.au, http://www.xd.com.au, 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 (Skin.Xml)(Skin.Xml)
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 (/Documentation)Module Developers Guide (/Documentation) www.solpart.com www.solpart.com
(Menu Updates, Menu Module, and Skins)(Menu Updates, Menu Module, and Skins)
www.smcculloch.netwww.smcculloch.net (Sample Modules/CodeSmith Templates)(Sample Modules/CodeSmith Templates)
www.dotnetnuke.dkwww.dotnetnuke.dk (Tutorials/Dev Environment)(Tutorials/Dev Environment)
www.dnnjungle.comwww.dnnjungle.com (Tutorials/VS.NET Enterprise Templates)(Tutorials/VS.NET Enterprise Templates)
www.webhost4life.com / www.webhost4life.com / www.pureportals.comwww.pureportals.com(DotNetNuke hosting / Free DotNetNuke Portals)(DotNetNuke hosting / Free DotNetNuke Portals)
ConclusionConclusion
Open Source Application with Strong Open Source Application with Strong Development CommunityDevelopment Community
Extensible through Provider PatternExtensible through Provider Pattern Customizable through Skinning & Customizable through Skinning &
ModulesModules ““Off the Shelf” Portal Application at Off the Shelf” Portal Application at
the right price!the right price!
Questions?Questions?
www.DotNetNuke.comwww.DotNetNuke.comSpecial Thanks to:
Scott McCullochDotNetNuke Core Team
www.smcculloch.net [email protected]
Jon HenningDotNetNuke Core Team
www.solpart.com [email protected]