You are previewing Professional DotNetNuke®5: Open Source Web Application Framework for ASP.NET.
O'Reilly logo
Professional DotNetNuke®5: Open Source Web Application Framework for ASP.NET

Book Description

DotNetNuke creator Shaun Walker leads this superlative author team of MVPs while delivering the latest update of a bestseller. They offer complete coverage of the major revisions to DotNetNuke 5, such as more granular administration, widgets, XHTML compliance, improved social networking, workflow, and better content management. They thoroughly cover installing, configuring, administering, and developing modules for DotNetNuke. You?ll learn portal and host administration, configuration in a hosted environment, developing and working with modules, designing a DotNetNuke portal with skins, integrating workflow in DotNetNuke, using DotNetNuke social networking tools, and much more.

Table of Contents

  1. Copyright
  2. About the Wrox DotNetNuke Series Editor
  3. About the Authors
  4. About the Technical Editors
  5. Credits
  6. Acknowledgments
  7. Introduction
    1. Who This Book Is For
    2. What This Book Covers
    3. How This Book Is Structured
    4. What You Need to Use This Book
    5. DotNetNuke Corporation
    6. Core Team Members & Trustees
    7. Core Team Members
    8. Project Team Leaders
    9. Conventions
    10. Source Code
    11. Errata
    12. p2p.wrox.com
  8. 1. An Inside Look at the Evolution of DotNetNuke
    1. 1.1. IBuySpy Portal
    2. 1.2. ASP.NET
    3. 1.3. IBuySpy Portal Forum
    4. 1.4. IBuySpy Workshop
    5. 1.5. Subscription Fiasco
    6. 1.6. Microsoft
    7. 1.7. DotNetNuke
    8. 1.8. Licensing
    9. 1.9. Core Team
    10. 1.10. XXL Fork
    11. 1.11. Trademarks
    12. 1.12. Sponsorship
    13. 1.13. Enhancements
    14. 1.14. Security Flaw
    15. 1.15. DotNetNuke 2.0
    16. 1.16. DotNetNuke (DNN) Web Site
    17. 1.17. Provider Model
    18. 1.18. Open Source Philosophy
    19. 1.19. Stabilization
    20. 1.20. Third-Party Components
    21. 1.21. Core Team Reorganization
    22. 1.22. Microsoft Membership API
    23. 1.23. "Breaking" Changes
    24. 1.24. Web Hosters
    25. 1.25. DotNetNuke 3.0
    26. 1.26. Release Schedule
    27. 1.27. DotNetNuke Projects
    28. 1.28. Intellectual Property
    29. 1.29. Marketing
    30. 1.30. Microsoft Hosting Program
    31. 1.31. Infrastructure
    32. 1.32. Branding
    33. 1.33. Tech Ed
    34. 1.34. Credibility
    35. 1.35. Trademark Policy
    36. 1.36. ASP.NET 2.0
    37. 1.37. Reorganization
    38. 1.38. Microsoft Conferences
    39. 1.39. DotNetNuke 4.0
    40. 1.40. Slashdotted
    41. 1.41. Benefactor Program
    42. 1.42. Opportunists
    43. 1.43. Yin and Yang
    44. 1.44. A New Company
    45. 1.45. Larry Augustin
    46. 1.46. Performance
    47. 1.47. DotNetNuke Marketplace
    48. 1.48. Free Module Promotion
    49. 1.49. Conferences
    50. 1.50. Microsoft Valuable Professionals
    51. 1.51. Fundraising
    52. 1.52. Awards and Accolades
    53. 1.53. DotNetNuke OpenForce 07
    54. 1.54. SLA Program
    55. 1.55. More Fundraising
    56. 1.56. CodePlex
    57. 1.57. Security Issues
    58. 1.58. IP Disputes
    59. 1.59. Term Sheets
    60. 1.60. DotNetNuke OpenForce 08
    61. 1.61. DotNetNuke Professional
    62. 1.62. Series A Announcement
    63. 1.63. DotNetNuke 5.0
    64. 1.64. Summary
  9. 2. Installing DotNetNuke Version 5
    1. 2.1. What You Need to Install DNN 5
    2. 2.2. Installing the Starter Kit
    3. 2.3. Upgrading to DotNetNuke 5
    4. 2.4. Common Installation Issues
    5. 2.5. Summary
  10. 3. Portal Overview
    1. 3.1. Portal Organization Elements
      1. 3.1.1. Parent/Child Portals
      2. 3.1.2. Pages
      3. 3.1.3. Panes
      4. 3.1.4. Skins
      5. 3.1.5. Containers
      6. 3.1.6. Modules
      7. 3.1.7. User Roles
    2. 3.2. Summary
  11. 4. Portal Administration
    1. 4.1. Who Is the Portal Administrator?
    2. 4.2. Where Do I Begin?
    3. 4.3. The Control Panel
    4. 4.4. The Site Wizard
    5. 4.5. Configuring Your Portal
      1. 4.5.1. Site Settings
        1. 4.5.1.1. Basic Settings
          1. 4.5.1.1.1. Site Details
          2. 4.5.1.1.2. Site Marketing
          3. 4.5.1.1.3. Appearance
        2. 4.5.1.2. Advanced Settings
          1. 4.5.1.2.1. Security Settings
          2. 4.5.1.2.2. Page Management
          3. 4.5.1.2.3. Payment
          4. 4.5.1.2.4. Usability Settings
          5. 4.5.1.2.5. Other Settings
        3. 4.5.1.3. Stylesheet Editor
    6. 4.6. Pages
      1. 4.6.1. Changing Navigational Structure
      2. 4.6.2. Extensions
      3. 4.6.3. Security Roles
        1. 4.6.3.1. Creating a New Role
        2. 4.6.3.2. Security Role—Advanced Setting
        3. 4.6.3.3. Public Roles and Membership Services
        4. 4.6.3.4. Delegating Authority or Assigning Privileges
      4. 4.6.4. Vendors
        1. 4.6.4.1. Banner Advertising
        2. 4.6.4.2. Vendors as Affiliates
      5. 4.6.5. Site Log
      6. 4.6.6. Newsletters
      7. 4.6.7. File Manager
        1. 4.6.7.1. Uploading Files
        2. 4.6.7.2. FTP with File Manager
      8. 4.6.8. Recycle Bin
      9. 4.6.9. Recycling Modules
      10. 4.6.10. Portal Cleaning Up
      11. 4.6.11. Event Viewer
      12. 4.6.12. Site Wizard
      13. 4.6.13. Solutions Explorer
      14. 4.6.14. What's New
    7. 4.7. Summary
  12. 5. Host Administration
    1. 5.1. Defining the Host
      1. 5.1.1. Where to Start?
      2. 5.1.2. Installing Additional Modules
    2. 5.2. Working with Host Settings
      1. 5.2.1. Host Settings: Basic
      2. 5.2.2. Host Details
      3. 5.2.3. Creating the Appearance
      4. 5.2.4. Host Payment Settings
      5. 5.2.5. Host Settings Advanced
      6. 5.2.6. Other Settings
      7. 5.2.7. jQuery
    3. 5.3. Host Portals
      1. 5.3.1. Portal Templates
      2. 5.3.2. Expired Portals
    4. 5.4. Host Module Definition
      1. 5.4.1. Module Package Settings
      2. 5.4.2. Installing a New Module
    5. 5.5. Host File Manager
    6. 5.6. Host Vendors
    7. 5.7. Host SQL
    8. 5.8. Host Schedule
      1. 5.8.1. Schedule Item Details
      2. 5.8.2. Schedule Status
      3. 5.8.3. Configuration
      4. 5.8.4. Considerations
    9. 5.9. Host Languages
      1. 5.9.1. Installing a New Language Pack
      2. 5.9.2. Globalization
    10. 5.10. Host Search Admin
    11. 5.11. Host Lists
    12. 5.12. Host SuperUser Accounts
    13. 5.13. Host Skins
      1. 5.13.1. Create New Skin
      2. 5.13.2. Install New Skin
    14. 5.14. Host Extensions
      1. 5.14.1. Container
      2. 5.14.2. Core Language Pack
      3. 5.14.3. Extension Language Pack
      4. 5.14.4. Library
      5. 5.14.5. Module
      6. 5.14.6. Provider
      7. 5.14.7. Skin
      8. 5.14.8. Skin Object
    15. 5.15. Summary
  13. 6. Modules
    1. 6.1. DotNetNuke Modules
      1. 6.1.1. Adding and Managing Modules on Pages
      2. 6.1.2. Module Layout
      3. 6.1.3. Module Settings
        1. 6.1.3.1. Basic Settings
        2. 6.1.3.2. Page Settings
        3. 6.1.3.3. Module-Specific Settings
    2. 6.2. Using Modules to Display Content
      1. 6.2.1. User Content Modules
        1. 6.2.1.1. Text/HTML
        2. 6.2.1.2. Banners
        3. 6.2.1.3. Google Adsense
        4. 6.2.1.4. Links
        5. 6.2.1.5. Search Input
        6. 6.2.1.6. Search Results
      2. 6.2.2. DotNetNuke Project Modules
        1. 6.2.2.1. Announcements
        2. 6.2.2.2. Blog
        3. 6.2.2.3. Documents
        4. 6.2.2.4. Events
        5. 6.2.2.5. FAQs
        6. 6.2.2.6. Feedback
        7. 6.2.2.7. Forms & Lists (Formerly User Defined Table)
          1. 6.2.2.7.1. Columns and Data Types
          2. 6.2.2.7.2. Adding Records Using Forms
          3. 6.2.2.7.3. Applying Security Permissions and Module-Specific Settings
          4. 6.2.2.7.4. Forms & Lists Display Options
          5. 6.2.2.7.5. Portable Formats for Transferring Layouts and Data
        8. 6.2.2.8. IFrame
        9. 6.2.2.9. Media
        10. 6.2.2.10. News Feeds (RSS)
        11. 6.2.2.11. Survey
        12. 6.2.2.12. Users Online
        13. 6.2.2.13. XML/XSL
      3. 6.2.3. Sub-Project Modules
    3. 6.3. Commercial and Open-Source Third-Party Modules
    4. 6.4. Summary
  14. 7. DotNetNuke Architecture
    1. 7.1. Technologies Used
    2. 7.2. Provider Model
      1. 7.2.1. Provider Model Usage
      2. 7.2.2. Provider Configuration
    3. 7.3. Custom Business Objects
      1. 7.3.1. CBO Hydrator
      2. 7.3.2. Using the CBO Hydrator
    4. 7.4. Architectural Overview
      1. 7.4.1. Presentation Layer
      2. 7.4.2. Business Logic Layer
      3. 7.4.3. Data Access Layer
      4. 7.4.4. Data Layer
        1. 7.4.4.1. Installation Scripts
        2. 7.4.4.2. Upgrade Scripts
        3. 7.4.4.3. Script Syntax
    5. 7.5. Security Model
      1. 7.5.1. Security in ASP.NET 2.0
      2. 7.5.2. DotNetNuke and ASP.NET 2.0
      3. 7.5.3. Security in DotNetNuke 4.0
        1. 7.5.3.1. Portals and Applications
        2. 7.5.3.2. Data Model for Membership
    6. 7.6. Namespace Overview
    7. 7.7. Summary
  15. 8. Core DotNetNuke APIs
    1. 8.1. Event Logging
      1. 8.1.1. The API
      2. 8.1.2. The Controller Classes
        1. 8.1.2.1. EventLogController
        2. 8.1.2.2. ExceptionLogController
    2. 8.2. Exception Handling
      1. 8.2.1. The Exception Handling API
      2. 8.2.2. The Exceptions Class
        1. 8.2.2.1. ProcessModuleLoadException Method
        2. 8.2.2.2. ProcessPageLoadException Method
        3. 8.2.2.3. LogException Method
        4. 8.2.2.4. ProcessSchedulerException Method
    3. 8.3. Scheduler
    4. 8.4. HTTP Modules
      1. 8.4.1. HTTP Modules 101
      2. 8.4.2. DotNetNuke HTTP Modules
        1. 8.4.2.1. URL Rewriter
        2. 8.4.2.2. Exception Management
        3. 8.4.2.3. Users Online
        4. 8.4.2.4. DNNMembership
        5. 8.4.2.5. Personalization
    5. 8.5. Module Interfaces
      1. 8.5.1. IActionable
        1. 8.5.1.1. Interface
        2. 8.5.1.2. ModuleAction API
          1. 8.5.1.2.1. Step 1: Register the Event Handler
          2. 8.5.1.2.2. Step 2: Display the Menu
          3. 8.5.1.2.3. Step 3: Notify the Portal of a Menu Item Selection
          4. 8.5.1.2.4. Step 4: Notify the Module That a Custom ModuleAction Was Clicked
      2. 8.5.2. IPortable
      3. 8.5.3. IUpgradeable
      4. 8.5.4. Inter-Module Communication
        1. 8.5.4.1. IModuleCommunicator
        2. 8.5.4.2. IModuleListener
      5. 8.5.5. ISearchable
      6. 8.5.6. DotNetNuke 5.0 New Core Interfaces
    6. 8.6. Summary
  16. 9. Member Role
    1. 9.1. Security in ASP.NET 3.5
    2. 9.2. DotNetNuke Membership Overview
      1. 9.2.1. Portals and Applications
      2. 9.2.2. Data Model for Users and Roles
      3. 9.2.3. Membership, Roles, and Profile Providers
    3. 9.3. Membership Provider
    4. 9.4. Roles Provider
    5. 9.5. Profile Provider
    6. 9.6. Summary
  17. 10. Client API
    1. 10.1. Postbacks and View State
    2. 10.2. What Is the DotNetNuke Client API?
    3. 10.3. Using the DotNetNuke Client API
    4. 10.4. Client-Side Script Caching
    5. 10.5. Client and Server Communication
      1. 10.5.1. Starting on the Server Side
      2. 10.5.2. On the Client Side
      3. 10.5.3. Returning to the Server Side
    6. 10.6. Client API's Callback
      1. 10.6.1. Life Cycle of a Client Callback
        1. 10.6.1.1. Setup and Registration
        2. 10.6.1.2. Client-Side Handling of the Callback
        3. 10.6.1.3. Page_Init Handling of Callback Requests
        4. 10.6.1.4. Handle the Client API Callback Event
        5. 10.6.1.5. Callback Response Handling
    7. 10.7. Client API–Enabled DotNetNuke Controls
      1. 10.7.1. Writing Custom Web Controls Using the Client API
    8. 10.8. Control Methods
    9. 10.9. Summary
  18. 11. Localization
    1. 11.1. Overview
      1. 11.1.1. Locales in DotNetNuke
      2. 11.1.2. Resource Files
        1. 11.1.2.1. Application Resources
        2. 11.1.2.2. Global Resources
        3. 11.1.2.3. Local Resources
    2. 11.2. The API
      1. 11.2.1. The GetString Method
      2. 11.2.2. The GetSystemMessage Method
      3. 11.2.3. Token Replacement Engine
    3. 11.3. Localizing Modules
      1. 11.3.1. Case 1: Handling Static Strings in the ASCX File
      2. 11.3.2. Case 2: Handling Static Text in Server Controls
      3. 11.3.3. Case 3: Handling Static Text Programmatically
      4. 11.3.4. Case 4: Localizing Images
    4. 11.4. Summary
  19. 12. Beginning Module Development
    1. 12.1. Understanding Your Module Project
      1. 12.1.1. Business Considerations
      2. 12.1.2. Determine Your Module Scope
      3. 12.1.3. Development Environment Considerations
        1. 12.1.3.1. Using Virtual Development Environments
        2. 12.1.3.2. Platform Choices
        3. 12.1.3.3. Web Project Types
        4. 12.1.3.4. Other Environment Considerations
    2. 12.2. Starting Development
      1. 12.2.1. Module Development Options
      2. 12.2.2. WROX.Suggestion Module Overview
      3. 12.2.3. Configuring for Module Development
        1. 12.2.3.1. Module Setup
        2. 12.2.3.2. Database Setup
        3. 12.2.3.3. Module Registration
        4. 12.2.3.4. Module Configuration in Visual Studio 2008
      4. 12.2.4. Developing with the Starter Kit
        1. 12.2.4.1. Creating the Project
        2. 12.2.4.2. Add Your Company Name
        3. 12.2.4.3. Set Project Properties
        4. 12.2.4.4. Data Provider Project
        5. 12.2.4.5. Finishing Development with the Starter Kit
        6. 12.2.4.6. Building Your Module for Distribution
        7. 12.2.4.7. DotNetNuke 5 Module Architecture and Directions
    3. 12.3. Summary
  20. 13. Developing Modules: the Database Layer
    1. 13.1. Database Design
      1. 13.1.1. WROX_Suggestion Table
        1. 13.1.1.1. WROX_AddSuggestion Stored Procedure
        2. 13.1.1.2. WROX_DeleteSuggestion Stored Procedure
        3. 13.1.1.3. WROX_GetSuggestion Stored Procedure
        4. 13.1.1.4. WROX_GetSuggestionIDs Stored Procedure
        5. 13.1.1.5. WROX_GetSuggestions Stored Procedure
        6. 13.1.1.6. WROX_UpdateSuggestion Stored Procedure
        7. 13.1.1.7. WROX_GetSuggestionModulesAllTabs Stored Procedure
        8. 13.1.1.8. WROX_GetSuggestionModulesThisTab Stored Procedure
      2. 13.1.2. WROX_SuggestionType Table
        1. 13.1.2.1. WROX_AddSuggestionType Stored Procedure
        2. 13.1.2.2. WROX_DeleteSuggestionType Stored Procedure
        3. 13.1.2.3. WROX_GetSuggestionTypes Stored Procedure
        4. 13.1.2.4. WROX_UpdateSuggestionType Stored Procedure
    2. 13.2. Concrete Data Provider
    3. 13.3. Data Abstraction Layer
    4. 13.4. Summary
  21. 14. Developing Modules: The Business Logic Layer
    1. 14.1. Developing the Business Logic Layer
    2. 14.2. Defining Properties for the Info Classes
      1. 14.2.1. SuggestionInfo Business Object
      2. 14.2.2. SuggestionTypeInfo Business Object
      3. 14.2.3. SuggestionIdInfo Business Object
      4. 14.2.4. SuggestionsDisplayInfo Business Object
      5. 14.2.5. Custom Business Object Helper Class
      6. 14.2.6. Optional Interface for the Business Layer Info Classes
        1. 14.2.6.1. IHydratable Interface
    3. 14.3. Creating Business Objects Using the Controller Classes
      1. 14.3.1. SuggestionController Class
      2. 14.3.2. SuggestionTypeController Class
      3. 14.3.3. SuggestionIdController Class
      4. 14.3.4. SuggestionsDisplayController Class
      5. 14.3.5. Optional Interfaces for the SuggestionController Class
        1. 14.3.5.1. ISearchable Interface
        2. 14.3.5.2. IPortable Interface
    4. 14.4. Summary
  22. 15. Developing Modules: The Presentation Layer
    1. 15.1. Module User Controls
      1. 15.1.1. View Control
        1. 15.1.1.1. CSS Styling within User Controls
        2. 15.1.1.2. Module Localization and Resource Files
        3. 15.1.1.3. View Control Resources
        4. 15.1.1.4. View Control Code-Behind Class
        5. 15.1.1.5. PortalModuleBase Class
        6. 15.1.1.6. DotNetNuke Optional Interfaces
        7. 15.1.1.7. Code-Behind Regions
      2. 15.1.2. Secondary View Control
        1. 15.1.2.1. Module Styling
        2. 15.1.2.2. Secondary View Control Resources
        3. 15.1.2.3. Secondary View Control Code-Behind Class
        4. 15.1.2.4. Code-Behind Regions
      3. 15.1.3. Settings Control
        1. 15.1.3.1. Module Styling
        2. 15.1.3.2. Setting Control Resources
        3. 15.1.3.3. Settings Control Code-Behind Class
        4. 15.1.3.4. Code-Behind Regions
      4. 15.1.4. Edit Control
        1. 15.1.4.1. Module Styling
        2. 15.1.4.2. Setting Control Resources
        3. 15.1.4.3. EditSuggestion.ascx.vb Code-Behind Class
        4. 15.1.4.4. EditSuggestion Code Regions
    2. 15.2. DotNetNuke Helper Functions
      1. 15.2.1. Exception Handling
      2. 15.2.2. Navigation URLs
    3. 15.3. Summary
  23. 16. Skinning DotNetNuke
    1. 16.1. ASP.NET 2.0 Master Pages Versus Skinning
    2. 16.2. A Brief Introduction to Master Pages
    3. 16.3. Why DotNetNuke Still Uses Its Skinning Engine
    4. 16.4. File Organization
    5. 16.5. Skin Parsing
    6. 16.6. Building DotNetNuke Skins
      1. 16.6.1. ASCX Skinning Method
      2. 16.6.2. Controlling Layout with Panes and Stylesheets
        1. 16.6.2.1. IDs and Classes
        2. 16.6.2.2. Handling Empty Panes
        3. 16.6.2.3. Using CSS and divs to Create Valid Layouts
      3. 16.6.3. Creating a Basic Container
      4. 16.6.4. Styles Guide — Stylesheet Inheritance and Core DotNetNuke Classes
      5. 16.6.5. Add Functionality with Skinobjects
        1. 16.6.5.1. Skinobjects Reference
    7. 16.7. Client-Side Widget Framework
      1. 16.7.1. Rotator Widget
      2. 16.7.2. Pane Collapse Widget
      3. 16.7.3. PNG Transparency Widget
      4. 16.7.4. Relocation Widget
      5. 16.7.5. Style Scrubber Widget
      6. 16.7.6. Stylesheet Widget
      7. 16.7.7. Visibility Widget
      8. 16.7.8. Custom Widgets
    8. 16.8. Super Stylesheets
      1. 16.8.1. Yahoo!'s YUI Grids, Fonts, and Reset Libraries
      2. 16.8.2. DNN Layouts
      3. 16.8.3. Rounded Corners
    9. 16.9. Creating a Skin Preview Image
    10. 16.10. Deploying Your Skin
    11. 16.11. Summary
  24. 17. Distribution
    1. 17.1. The New Extensions Model
    2. 17.2. Creating New Extensions
      1. 17.2.1. Extension Configuration
        1. 17.2.1.1. Skin and Container Extension Configuration
        2. 17.2.1.2. Module Extension Configuration
        3. 17.2.1.3. Skinobject Configuration
        4. 17.2.1.4. Provider Extension Configuration
        5. 17.2.1.5. Authentication System Configuration
        6. 17.2.1.6. Core Language Pack Extensions Configuration
        7. 17.2.1.7. Extensions Language Pack Extensions Configuration
    3. 17.3. Using the Wizard to Create Packages
    4. 17.4. Building Packages with Manifest Files
      1. 17.4.1. Manifest Packages
      2. 17.4.2. Package Components
        1. 17.4.2.1. File Components
        2. 17.4.2.2. Assembly Components
        3. 17.4.2.3. Script Components
        4. 17.4.2.4. Cleanup Components
        5. 17.4.2.5. Config Components
        6. 17.4.2.6. Module Components
          1. 17.4.2.6.1. IUpgradeable Interface and the eventMessage Section
        7. 17.4.2.7. Skin and Container Components
        8. 17.4.2.8. Skinobject Components
        9. 17.4.2.9. Language Pack Components
        10. 17.4.2.10. Authentication System Components
        11. 17.4.2.11. Provider Packages
        12. 17.4.2.12. Library Packages
    5. 17.5. Summary
  25. 18. DotNetNuke's Commercial Evolution
    1. 18.1. The Fundamentals
    2. 18.2. Software Industry Today—Inefficiency Spirals Costs
      1. 18.2.1. How Has That Been Made Possible?
      2. 18.2.2. Why Has the Cost and Therefore the Price of Business Software Been High?
    3. 18.3. DotNetNuke—Our Time Is Now!
    4. 18.4. DotNetNuke—Philosophy, Vision, Mission, and Values
    5. 18.5. The Commercialization of DotNetNuke
  26. A. Resources
  27. B. System Message Tokens