320 likes | 558 Views
DotNetNuke 4. Patrick J. Santry Microsoft ASP.NET MVP wwwCoder.com. DotNetNuke. DotNetNuke Overview Features Module Development What are Modules? Skinning Containers Resources. DotNetNuke Overview.
E N D
DotNetNuke 4 Patrick J. Santry Microsoft ASP.NET MVP wwwCoder.com
DotNetNuke • DotNetNuke Overview • Features • Module Development • What are Modules? • Skinning • Containers • Resources
DotNetNuke Overview • 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.
Features • 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)
Modules • What are Modules • Desktop Modules • Relation to DNN • Architecture
What are Modules? • 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.
Desktop Modules • Provide a basic look and feel via Containers • Contain administrative features • Security • Meta data • Positioning • Syndication
Module Development • Architecture • Data Provider • Data Abstraction • Business Logic Layer • New Interfaces • Personalization • Scheduler • Logging Provider • Importing / Exporting • Searching • Text Editor Provider • DNN User Controls • Other items
Provider Model • 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
Physical Providers • 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
Abstraction Layer • Contains overridable methods for doing database operations • Located within the module’s project, compiled into the same assembly as the module.
Business Logic Layer • 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).
Presentation Layer • 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)
Personalization • 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.
Scheduler • Provided by DotNetNuke.Services.Scheduling • Provides a means of running a process outside of the user request (batch jobs).
Logging Provider • 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.
Import / Export • 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.
Searching • 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.
Text Editor Provider • Default is FreeTextBox • Can be freely exchanged with another provider (via the web.config)
DNN User Controls • 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.
Items of Note • 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.
Skinning • 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.
Parts of a Skin • HTML File Containing Directives • XML File Containing Properties for Controls • Associated Files: CSS, Images, etc.
HTML Example <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>
XML Definition <Objects> <Object> <Token>[BREADCRUMB]</Token> <Settings> <Setting> <Name>Separator</Name> <Value><![CDATA[ » ]]></Value> </Setting> <Setting> <Name>RootLevel</Name> <Value>0</Value> </Setting> </Settings> </Object>
Generates an ASCX Files • 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.
Containers • 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
Resources • DotNetNuke.com – The official DNN site. • SnowCovered.com – Third party modules. • WWWCoder.com – DNN news, articles, and resources. • Documentation at DotNetNuke.com