DotNetNuke Module Creation

Download Report

Transcript DotNetNuke Module Creation

Patrick J. Santry
Microsoft ASP.NET MVP
wwwCoder.com

DotNetNuke Overview
◦ Features

Module Development
◦ What are Modules?

Skinning
◦ Containers

Resources







Started by Shaun Walker of Perpetual Motion
Interactive Systems Inc. in Jan. 2002 as an
extension to IBuySpy, initially called IBuySpy
Workshop.
Consists of developers from various backgrounds.
Large community support, ASP.NET forums.
Written in VB.NET
Open Source license. BSD
Over 400,000 registered users and growing.
More than a starter kit, thousands of professional
implementations worldwide.







Multi portal implementation
Role based security
Skinning, provides flexibility of design.
Content is editable in-line and searchable
(full text).
Various tools provided – traffic log reporting,
file management, bulk email, payment
handling, vendor management.
Friendly URLs, SEO
Comes with several modules built into the
core. Hundreds of third party modules are
available (free and commercial)




What are Modules
Desktop Modules
Relation to DNN
Architecture



Provides a developer with a means of
extending DNN.
Third party modules can purchased for out of
the box solutions.
Core modules are included in DNN for basic
functionality.


Provide a basic look and feel via Containers
Contain administrative features
◦
◦
◦
◦
Security
Meta data
Positioning
Syndication

Architecture

New Interfaces


◦ Data Provider
◦ Data Abstraction
◦ Business Logic Layer
◦
◦
◦
◦
◦
◦
Personalization
Scheduler
Logging Provider
Importing / Exporting
Searching
Text Editor Provider
DNN User Controls
Other items




Provides abstraction layer to physical
provider
Reduces need for recompiling in order to
switch physical providers.
Separates physical providers from business
logic
DNN Providers
◦
◦
◦
◦
◦
Security and Membership Provider
Text/HTML Provider
Logging Provider
Scheduler
Friendly URLs




Each provider will contain unique logic for
dealing with each physical database.
Compiled into its own assembly for “plug and
play” use.
(For SQL) Contains methods corresponding to
stored procedures.
Defined in the Web.config


Contains overridable methods for doing
database operations
Located within the module’s project,
compiled into the same assembly as the
module.

Divided into two classes:
◦ ModuleInfo: Contains the properties for our object.
◦ ModuleController: Contains wrapper methods for
calling the abstraction layer to populate an arraylist
of objects (ModuleInfo).






User controls (ascx)
Inherits the PortalModuleBase: provides values
for Settings hash, ModuleID, security, TabID
Binds the objects from the controller class to
our controls.
Utilizes DNN user controls
This is your module (refer to DesktopModule)
Create an admin control (for populating
settings, and view control for viewing data)



Provided by the
DotNetNuke.Services.Personalization
interface.
Allows developer to store unique values for
each user
Provides both read and write of
personalization values and keys.


Provided by DotNetNuke.Services.Scheduling
Provides a means of running a process
outside of the user request (batch jobs).



Provided by Log.EventLog.EventLogController
Provides the ability to write to the DNN log
located under the admin menu.
Similar to the Windows event log, will log
code errors, informational (developer), etc.



Provided by
DotNetNuke.Entities.Modules.IPortable
Allows the developer to provide a means of
exporting data from within a module so it can
be inserted into another instance of that
module.
Must generate an XML file that is used in the
export and import process.



DNN provides it’s own indexing mechanism
for content.
Developer can define content to be indexed
in DNN’s catalog.
Will need to implement
DotNetNuke.Services.Search.ISearchable in
your class.


Default is FreeTextBox
Can be freely exchanged with another
provider (via the web.config)













Address – This control provides the address entry control that you see in
DNN when registering for an account within the portal.
DesktopModuleTitle – Provides the title area above a module.
DesktopPortalBanner – The banner ad area within the portal, includes the
login, banner ad, logo, and other items.
DesktopPortalFooter – The footer control for a portal.
DualListControl – A control containing two list controls for moving data
between the two.
Help – Help control for a module. Accepts localization information, and help
file references.
LabelControl – Contains properties for storing localization information, help
information, and other information provided the DNN core.
ListItemComparer – Used to compare items within a list.
ModuleAuditControl – For auditing a module, such as who created the
module and when the module was created.
SectionHeadControl – For creating collapsible areas within your module.
TextEditor – Discussed previously
UrlControl – Provides NavigateURL, friendly URLs, etc.
URLTrackingControl – For click tracking.


Easy distribution and install of modules via a
package which contains a definition file,
assemblies, ascx controls, content files, and
data provider (for database creation).
Starter Kits Available for DotNetNuke installs,
Modules, and Skins.






Separate look from content
Multiple skins per portal. Each page can have
unique skin.
Can be created using designer tools:
Expression Web
Contains HTML, CSS, Images
Easily Distributed via Zip Files
Skins can be assigned at the host or site level.



HTML File Containing Directives
XML File Containing Properties for Controls
Associated Files: CSS, Images, etc.
<TABLE class="pagemaster" border="0" cellspacing="0" cellpadding="0">
<TR>
<TD valign="top">
<TABLE class="skinmaster" width="770" border="0" align="center" cellspacing="0"
cellpadding="0">
<TR>
<TD id="ControlPanel" runat="server" class="contentpane" valign="top"
align="center"></TD>
</TR>
<TR>
<TD valign="top">
<TABLE class="skinheader" cellSpacing="0" cellPadding="3" width="100%" border="0">
<TR>
<TD vAlign="middle" align="left">[LOGO]</TD>
<TD vAlign="middle" align="right">[BANNER]</TD>
</TR>
</TABLE>
<Objects>
<Object>
<Token>[BREADCRUMB]</Token>
<Settings>
<Setting>
<Name>Separator</Name>
<Value><![CDATA[&nbsp;&raquo;&nbsp;]]></Value>
</Setting>
<Setting>
<Name>RootLevel</Name>
<Value>0</Value>
</Setting>
</Settings>
</Object>


Once the skin files are uploaded they
generate an ASCX file for the final skin.
You can create ASCX files directly, zip, upload
and install.



Similar to skinning, separates look from
function
Surrounds the module
Create the same as a skin:
◦ HTML with directives
◦ XML file for object properties
◦ Associated files


Once uploaded, DNN will parse into an ASCX
file.
Can use ASCX files directly




DotNetNuke.com – The official DNN site.
SnowCovered.com – Third party modules.
WWWCoder.com – DNN news, articles, and
resources.
Documentation at DotNetNuke.com