Warehouse Stock Clearance Sale

Grab a bargain today!


Professional DNN7
By

Rating

Product Description
Product Details

Table of Contents

INTRODUCTION xli CHAPTER 1: AN INSIDE LOOK AT THE EVOLUTION OF DNN 1 From Humble Beginnings 2 The Dot-Com Era 4 IBuySpy Portal 5 ASP.NET 6 IBuySpy Portal Forum 8 IBuySpy Workshop 9 Subscription Fiasco 11 Microsoft 13 DotNetNuke 14 Licensing 15 Core Team 17 XXL Fork 19 Trademarks 20 Sponsorship 21 Enhancements 22 Security Flaw 24 DotNetNuke 2.0 25 DotNetNuke.com Website 26 Provider Model 27 Open Source Philosophy 27 Stabilization 28 Third-Party Components 28 Core Team Reorganization 29 Microsoft Membership API 30 Breaking Changes 30 Web Hosters 31 DotNetNuke 3.0 32 Release Schedule 33 DotNetNuke Projects 34 Intellectual Property 35 Marketing 36 Microsoft Hosting Program 38 Infrastructure 39 Branding 40 Tech Ed 43 Credibility 44 Trademark Policy 45 ASP.NET 2.0 46 Reorganization 47 Microsoft Conferences 48 DotNetNuke 4.0 49 Slashdotted 52 Benefactor Program 52 Opportunists 56 Yin and Yang 57 A New Company 58 Larry Augustin 59 Performance 60 DotNetNuke Marketplace 61 Free Module Promotion 63 Conferences 64 Microsoft Valuable Professionals 65 Fundraising 65 Awards and Accolades 66 DotNetNuke OpenForce 07 66 SLA Program 67 More Fundraising 68 CodePlex 69 Security Issues 70 IP Disputes 71 Term Sheets 73 DotNetNuke OpenForce 08 75 DotNetNuke Professional 76 Series A Announcement 78 Physical Offices 79 DotNetNuke 5.0 80 Day of DotNetNuke 80 DNN-Europe 81 Snowcovered Acquisition 81 Telerik Partnership 82 Series B 83 Open-DocumentLibrary Acquisition 84 DotNetNuke Enterprise Edition 84 POET Vulnerability 85 DotNetNuke.com Overhaul 85 Active Modules Acquisition 87 Nik Kalyani Leaves DNN Corp 87 Cloud. Mobile. Social. 88 DotNetNuke 6.0 88 DotNetNuke World 2011 89 DotNetNuke Gets Social 90 Microsoft Azure Partnership 91 DNN World 2012 92 DotNetNuke 7.0 92 iFinity Acquisition 93 10-Year Anniversary 93 DNN Social 94 DotNetNuke.com Hacked 95 Rebranding 95 DNNCon 98 Scott Willhite Moves On 98 DNN 7.x Releases 99 My Departure from DNN Corp 99 Summary 102 CHAPTER 2: INSTALLING DNN VERSION 7 103 What You Need to Install DNN Platform Version 7 104 Installing the DNN Platform Using the Installation Package 104 Step 1: Download the Software 104 Step 2: Unzip the Package 105 Step 3: Create a Database in SQL Server 106 Step 4: Create a Database Account 106 Step 5: Configure IIS 107 Step 6: Set File and Folder Permissions 107 Step 7: Perform the Installation 107 Installing the DNN Platform Using the Web Platform Installer 110 Downloading the Software 111 Installing the DNN Platform 111 Upgrading the DNN Platform to Version 7 114 Getting a Trial Version of Evoq Content 115 Common Installation Issues 116 Summary 117 CHAPTER 3: DNN PLATFORM OVERVIEW 119 Core Platform Objects 119 Sites (Portals) 119 Pages (Tabs) 122 Theme (Skin) 124 Modules 125 Security 127 Users 128 Roles 128 Host 130 Admin 130 Summary 130 CHAPTER 4: SITE ADMINISTRATION 131 What Is Site Administration? 131 Common Administrative Tasks 132 Control Panel Sections 132 Admin 133 Tools 134 Help 134 Modules and Pages 134 Users 134 Edit Page 135 Admin Menu Features 135 Common Settings 135 Event Viewer 136 File Management 139 Page Management 148 Recycle Bin 151 Security Roles 155 Site Settings 162 User Accounts 181 Advanced Settings 185 Advanced Configuration Settings 185 Device Preview Management 186 Extensions 187 Google Analytics 187 Languages 188 Lists 189 Newsletters 189 Search Admin 190 Search Engine Site Map 191 Site Log 191 Site Redirection Management 191 Site Wizard 192 Skins 193 Taxonomy 194 Vendors 194 Best Practices for Site Administrators 195 Getting User Registration Right 195 Having a Naming Convention 195 Never Sharing User Accounts 196 Editing as a Content Editor 196 Fewer Administrators, Not More 197 Fewer Permissions, Not More 197 Never Using User Permissions 198 Having a Process and Standards 199 Getting to Know Your Features 199 Summary 199 CHAPTER 5: HOST ADMINISTRATION 201 Why Do You Need the Host? 202 What Is Host Administration? 202 Host Attributes 203 Host Menu Pages 203 Dashboard 204 Extensions 205 Tab: Installed Extensions 205 Tab: Available Extensions 208 Tab: Purchased Extensions 208 Tab: More Extensions 209 Buttons: Install Extension Wizard 209 Buttons: Create New Extension and Create New Module 210 File Management 210 Host Settings 210 The Buttons 210 Basic: Configuration 212 Basic: Host Details 213 Basic: Appearance 213 Basic: Payment Settings 213 Advanced: Friendly URL Settings 214 Advanced: Proxy Settings 214 Advanced: SMTP Server Settings 214 Advanced: Performance Settings 215 Advanced: jQuery Settings 216 Advanced: CDN Settings 216 Advanced: Client Resource Management 217 Advanced: Membership Management 218 Advanced: Login IP Filters 218 Advanced: Search Settings 218 Other: Request Filters 219 Other: Site Log 219 Other: Auto-Unlock Accounts After 219 Other: Allowable File Extensions 220 Other: Auto-Sync File System 220 Other: Allow Content Localization 220 Site Management 221 Configuration Manger 222 Device Detection Management 222 HTML Editor Manager 222 Lists 224 Schedule 224 Schedule Item Details 225 Configuration 227 SQL 227 Vendors 228 Additional Host Features on Admin Site Settings 228 Event Viewer 228 Site Settings 229 Advanced: Site Aliases 229 Advanced: SMTP Server Settings 230 Advanced: SSL Settings 231 Advanced: Messaging Settings 232 Advanced: Host Settings 232 Page Management 233 Advanced Configuration Settings 233 Languages 234 Additional Host Features on the Control Panel 235 Tools Menu 236 Modules Menu 236 Host Options on the Module Actions Menu 236 Integrating with a Third-Party Provider 238 Installing the Facebook Provider 238 Setting Up the Facebook Application 240 Activating the Facebook Provider 241 Summary 242 CHAPTER 6: MODULES 243 What Is a Module? 243 Where Do Modules Live on a Page? 244 Adding a Module to a Page 245 One Module Across Multiple Pages 246 One Module Across Multiple Sites 246 Working with Modules 247 Moving Modules 247 Module Settings and Action Menus 248 The Module Settings Tab 249 The Permissions Tab 249 The Page Settings Tab 251 Where to Get Modules 252 The DNN Store 252 Forge 252 Developing Your Own Modules 253 Viewing Modules and Extensions 253 Installing Modules into DNN 253 The Extension Verifi cation System 254 In Depth with the HTML Module 254 Administrating the HTML Module 256 HTML Pro Module Features in Evoq Content 256 Summary 256 CHAPTER 7: SYSTEM ARCHITECTURE 257 Patterns and Concepts 258 Provider Pattern 258 Service Locator Pattern 260 Inversion of Control (IoC) Container 261 Repository Pattern 262 Architectural Overview 264 Data Layer 264 Install Scripts 264 Upgrade Scripts 265 Script Syntax 265 Data Access Layer 267 Data Access Layer (DAL) 2 268 Business Layer 269 Presentation Layer 271 Namespace Overview 273 DotNetNuke.dll 273 DotNetNuke.Web.dll 274 Summary 274 CHAPTER 8: CORE DNN APIS 275 The CBO Class 275 Hydration Methods 276 The IHydratable Interface 277 Caching 278 The DataCache Class 278 GetCachedData 278 Event Logging 280 Creating New Logging Types 280 Logging an Event Using the Logging API 282 The EventLogController Class 282 Exception Management 283 The Exceptions Class 283 Scheduler 284 Module Interfaces 285 IModuleControl 286 IActionable 287 IPortable 289 Summary 290 CHAPTER 9: MEMBERSHIP SECURITY 291 DNN Membership Overview 291 Membership Provider 292 Authentication Providers 295 Membership Management Enhancements 301 Summary 306 CHAPTER 10: LOCALIZATION 307 Locales in DNN 308 Locale Detection 308 Content Localization 309 Resource Files 310 Application Resources 311 Global Resources 311 Local Resources 312 Resource File Handling 312 The Resource File Editor 315 Missing Resource Keys 317 The API 317 The GetString Method 318 The GetSystemMessage Method 319 Token Replacement Engine 322 Localizing Modules 324 Case 1: Handling Static Strings in the ASCX File 325 Case 2: Handling Static Text in Server Controls 325 Case 3: Handling Static Text Programmatically 327 Summary 328 CHAPTER 11: SEARCH 329 History 329 Objectives of the New Search Functionality 330 Apache Lucene 330 Lucene.Net 330 Lucene: A Document Store 330 Lucene versus Lucene.Net 331 Lucene.Net Contrib 331 Search Architecture 332 Platform Features 332 Site Crawler 333 Near Real-Time Searching 334 Speed 334 Auto-Preview 334 Site-Scoped Search 335 Module-Scoped Search 336 Advanced Search 336 Filtering by Tags 336 Filtering by Content s Modifi cation Time 337 Filtering by Search Types 337 Locale-Aware Search 337 Delta Indexing 338 Ranking 338 Lucene s Native Syntax 338 Ignore Words 339 Synonyms 339 Evoq Features 340 URL Crawler 341 Scoping Below a URL 341 DNN Role Impersonation 342 Windows Authentication 342 No Duplication with Site Crawler 342 File Crawler 343 Scoping by Folders 343 Scoping by File Extension 344 Crawling a File s Content 344 Excluding by Extension 345 Administration 345 Default Index File Location 345 Web-Farm Configuration 346 Re-Indexing 346 Getting Lucene Stats 347 Compacting 348 Custom Analyzer 348 Search Phases 348 Content Acquisition 348 Content Indexing 349 Content Searching 350 Module Integration 351 ModuleSearchBase 351 GetModifiedSearchDocuments 352 Entities 352 SearchType 353 SearchDocument 354 SearchQuery 356 SearchResult 357 APIs 358 Public APIs 358 Unsupported (yet Useful) APIs 358 Writing a New Crawler 360 Troubleshooting 361 Indexing 362 Querying 364 Luke 364 Summary 366 CHAPTER 12: URL MANAGEMENT 367 The History of DNN URL Schemes 367 TabId-Based URLs 367 Friendly URLs Version 1 368 Friendly URLs Version 2 368 Advanced URLs in DNN 7 369 Switching an Upgraded Site to Advanced Mode 370 SEO Focus on URLs 371 Understanding URL Structure in DNN 371 URL Configuration and Customization 372 Creating Custom URLs for DNN Pages 373 Advanced URL Creation for Evoq 374 Creating a Custom URL in Evoq 374 Creating a Custom URL Redirect in Evoq 375 Testing Custom URLs and Redirects in Evoq 377 Site- and Installation-Level URL Confi guration 381 Installation-Level Confi guration Options 381 Site Alias Confi guration 382 SSL URL Confi guration 384 Evoq Advanced URL Settings 384 Evoq Advanced URL Management Options 385 URL Creation for Developers 390 Custom Extension URL Providers 391 Installation and Configuration of Extension URL Providers 392 Testing of Extension URL Provider Functionality 392 Testing Extension URL Providers in Evoq 392 DNN URL Best Practices 394 Configuring URL Options for DNN Sites 394 Troubleshooting and Debugging DNN URLs 395 Using the Debug Mode for Advanced URLs 398 Summary 399 CHAPTER 13: BEGINNING MODULE DEVELOPMENT 401 A Guided Tour of Your Work Environment 403 ASP.NET Web Forms 403 The DNN Platform 404 Anatomy of a DNN Module 406 Your Toolbox 407 The Environment 408 DNN 408 SQL Server 410 IIS 410 To VM or Not to VM 411 Organizing Your Project 412 Inline versus External Module Creation 412 Hello World 412 The Razor Host Module 414 Hello World in Razor 415 Final Remarks 417 WAP versus WSP 417 Inside versus Outside the Root 417 Module Design Considerations 418 Three-Tiered Design and MVC 418 DAL 418 Client-Side versus Server-Side 419 Localization 420 About Modules, TabModules, Module Defi nitions 421 Packages 421 DesktopModules 422 ModuleDefinitions 422 ModuleControls 424 Modules 424 TabModules 424 A Guestbook Module 426 Module Templates and Build Tasks 426 Creating the Project 427 The Data Layer SQL 429 The Data Layer DAL 2 431 Settings 434 The UI 438 Results 446 Wrapping It Up 446 The Manifest 448 The Preamble 450 SQL Scripts 450 The Resource File 451 The Module Definition 451 Assemblies 451 Packing Up the Guestbook Module 451 Creating a Source Version 452 Build Automation 452 Summary 453 CHAPTER 14: DEVELOPING MODULES: USER INTERFACES 455 Understanding DNN and Module Interactions 455 Dialogs and AJAX Support 456 DNN AJAX Support 456 DNN Modal Dialogs 457 JavaScript, jQuery, and Custom Scripts 459 Using jQuery and jQuery UI 459 Including Knockout 460 Registering Custom Scripts and CSS 460 DNN jQuery Plugins 462 dnnAlert 462 dnnConfirm 463 dnnPanels 463 dnnTabs 466 Handling Postbacks 467 Implementing Consistent Design 468 Messages and Alerts 468 Forms and Buttons 469 Using Module CSS 470 Summary 471 CHAPTER 15: DEVELOPING MODULES: BUSINESS LOGIC 473 Navigating with the DNN API 474 DotNetNuke.Common Namespace 474 DotNetNuke.Common.Globals Class 474 DotNetNuke.Common.Lists.ListController 475 DotNetNuke.Common.Utilities.CBO Object 476 DotNetNuke.Common.Utilities.DataCache Object 476 DotNetNuke.Entities Namespace 477 -Info Objects 477 -Controller Objects 477 Host and PortalSettings Objects 478 DotNetNuke.Framework Namespace 480 AJAX Class 480 CDefault Class 480 PageBase Class 481 DotNetNuke.Security Namespace 481 Membership Namespace 481 Permissions Namespace 481 Roles Namespace 482 DotNetNuke.Services Namespace 482 Exceptions Class 482 Mail 483 Using Common DotNetNuke Controls 484 LabelControl Field Inputs 484 TextEditor Rich Text Editing 485 Leveraging Web API 486 Adding the Proper References 486 Defining the Web API RouteMapper 486 Creating the Controllers 488 Creating DNN Scheduled Jobs 490 Controlling Navigation and Module Views 491 Isolation Mode and Module Controls 491 Bypassing Isolation 493 Dynamically Loading Controls 493 Toggling Visibility of Sub-Controls 493 Managing Linking 493 Summary 494 CHAPTER 16: DEVELOPING MODULES: BEST PRACTICES AND MOVING FORWARD 495 Managing DNN References and Versions 496 Which Version to Reference 496 Enforcing the Dependency 496 Making Things Easier with NuGet 497 Managing External Dependencies 497 Future-Proofing Data Interactions 498 Bypassing the API 498 Managing Foreign Keys 499 Supporting objectQualifier and databaseOwner 500 Supporting Azure 500 Extension Verification Service (EVS) 501 What It Validates 501 Interpreting the Results 502 Errors 502 Warnings 502 Information Messages 503 System Errors 503 Getting Prepared for DNN neXt 503 Avoiding Deprecated Methods 504 Following Best Practices 504 Staying Active 504 Summary 504 CHAPTER 17: SKINNING 505 Skinning by Today s Standards 505 Parts of a DNN Skin 506 Skins 506 Containers 506 Skin Objects 506 Skin Packages 506 Installable Skin Packages 507 Content Panes 507 Navigation 507 Folder Structures 508 Skin Locations and Permissions 508 Container Locations 509 Skinning Approaches 510 HTML 510 ASCX 511 Preparing to Create a Skin 512 Preparing your Skinning Environment 512 Choosing an IDE 512 Setting Up Your Website in Visual Studio 512 Creating the Folder Structure 513 Creating Your First Skin 515 HTML Approach 515 ASCX Approach 515 Basic Layout 517 Setting Up a Test Page 517 Content Panes 517 Adding Test Content 519 Adding HTML Modules to the Page 519 Updating Module Titles 520 Adding Text to Your Modules 520 CSS 521 Overriding Basic Styles 524 Linking to Files in Your Skin 524 Document Setup 525 DOCTYPE 525 Skin Objects 526 Registering Skin Objects 526 Defining Skin Objects 526 Setting Up a Responsive Web Design Skin 529 Setting the Viewport Using the Meta Skin Object 529 Creating the CSS Using the Styles Skin Object 530 Conditionals for Internet Explorer 533 Available Skin Objects 533 Client Resource Management (CRM) 533 CSS 534 JS 534 Navigation 536 Sample Menu Structure 536 DDR 541 Menu Style 542 Menu Template 543 Creating Alternate Skins 546 Creating Containers 547 Creating the Folder Structure 547 Creating Your First Container 547 Additional Skin Objects for Containers 549 Styling Containers 549 Creating Additional Containers 550 Custom 404 and Pop-up Skins 554 Skin Thumbnails 555 Creating an Installable Skin Package 555 Packaging the Skin 556 Creating the Skin Package 556 Understanding the DNN Manifest 557 Advanced Skinning Techniques 558 Site Title for Logo 558 Page ID for Page-Specific CSS 558 Page Icon as Header Image 559 Summary 559 CHAPTER 18: PACKAGING AND DISTRIBUTION 561 The New Extensions Model 561 Creating New Extensions 562 Extension Configuration 564 Skin and Container Extension Configuration 564 Module Extension Configuration 565 Skin Object Configuration 570 Provider Extension Configuration 571 Authentication System Configuration 571 Core Language Pack Extensions Configuration 571 Extensions Language Pack Extensions Configuration 572 Using the Wizard to Create Packages 572 Building Packages with Manifest Files 573 Manifest Packages 573 Package Components 575 File Components 576 Assembly Components 576 Script Components 577 Cleanup Components 578 Confi g Components 578 Module Components 580 Skin and Container Components 582 SkinObject Components 583 Language Pack Components 583 Authentication System Components 584 Resource File Components 584 Provider Packages 585 Library Packages 585 Summary 585 CHAPTER 19: COMMERCIAL PHILOSOPHY 587 The Fundamentals 587 Technology 588 Market Conditions 589 Distribution Model 590 Branding 590 Results 591 Summary 591 CHAPTER 20: EVOQ CONTENT 593 Content Creation 593 Asset Manager 594 Flexible Content Layouts 595 Permissions, Workflow, and Versioning 595 Permissions 596 Workflow 596 AutoSave 596 Content Versioning 597 Version Compare 597 Optimization 597 Real-Time Personalization 597 Analytics 598 Integrations 599 Summary 600 CHAPTER 21: EVOQ ENGAGE 601 Management Tools 601 Persona Bar s Dashboard 601 Overview 602 Modules 603 Persona Bar s Manage Section 604 Assets 604 Users 604 Persona Bar s Settings 605 Connectors 605 Gaming Mechanics 606 General Settings 607 Tasks 608 Community Modules 608 Answers 609 Blogs 610 Challenges 610 Discussions 610 Ideas 610 Events 611 Wiki 611 Others 611 Activities 611 Activity Stream 611 Member Profile 612 Leaderboard 612 Group Spaces 613 User Badges 613 Summary 613 CHAPTER 22: THE DNN STORE 615 Buying from the Store 615 Locating Products 615 Product Search 616 The Search Filter 616 Product List Sorting 616 Product List Details 617 Other Ways to Shop 617 The Product Details Page 617 Making a Purchase 619 Managing Your Account 620 Accessing Your Downloads 620 Viewing Past Orders 621 Getting Support 622 Posting Reviews 623 Using the Watch List 624 The Referral Program 624 Managing Your Referral Profile 625 Referring Sales 625 DNN Referral Module 625 Referral Reports 626 Selling on the Store 626 Becoming a Vendor 627 Listing a Product 627 Managing Your Account 632 Managing Your Seller Profile 632 Viewing Your Sales 634 Vendor Charts and Reports 635 Analytics 636 Discounts 636 Using the Help Desk 640 Managing FAQs 640 Managing Product Reviews 641 The Vendor File Manager 641 Sales Tax Configuration 642 Summary 642 CHAPTER 23: DNN ON MICROSOFT AZURE 643 Azure Deployment Scenarios 644 Installing DNN on Azure Websites 644 Install Preparation 645 Preliminary Step 1: Opening a New Azure Subscription 645 Preliminary Step 2: Starting a Credentials File 645 Performing the DNN Installation 646 Step 1: Opening the Azure Site and Creating a New DNN Install 646 Step 2: Choosing the Resource Plan for Your Azure Website 647 Step 3: Creating the Azure Website 648 Step 4: Creating the Database Resource 649 Step 5: Creating a Database Server 650 Step 6: Creating the Azure Website 651 Step 7: Running the DNN Install Wizard 654 Step 8: Adding Domain Names 656 Step 9: Configuring SMTP 659 Step 10: Site Inspection 660 Remote Connections to Azure Websites 660 Remotely Accessing Azure Websites with FTP 661 Step 1: Creating FTP Credentials 661 Step 2: Obtaining the FTP Endpoint 661 Step 3: Opening the FTP Connection 662 Backing Up Your Azure Website 663 Creating a Combined Application/Database Backup 663 Step 1: Choosing the Correct Website Pricing Plan 663 Step 2: Linking the Database and File System 664 Step 3: Creating a Storage Account for Backups 665 Step 4: Creating a Container in the Storage Account 667 Step 5: Creating the Backup 667 Step 6: Creating Scheduled Backups 668 Upgrading to a New DNN Version 670 Preliminary Upgrade Steps 670 Preliminary Step 1: Taking a Backup of Your Installation 670 Preliminary Step 2: Checking Your Host User Credentials 670 Preliminary Step 3: Obtaining the Latest Upgrade Package 670 Preliminary Step 4: Checking Your Dependencies 671 Preliminary Step 5: Considering Using a Test Copy 671 Upgrading DNN 671 Step 1: Uploading the Upgrade Package 671 Step 2: Extracting and Copying the Upgrade Files 672 Step 3: Running the Upgrade Wizard 674 Step 4: Cleaning Up the Upgrade Folder 675 Step 5: Performing Testing and Backup 676 Moving an Existing DNN Site to Azure Websites 676 Preparing Your Installation for Migration 676 Preliminary Step 1: Performing a DNN Install on Azure Websites 676 Preliminary Step 2: Upgrading to the Latest DNN Version 677 Preliminary Step 3: Enabling Auto Add Site Alias 677 Preliminary Step 4: Testing the Database Export Process for Compatibility 677 Preliminary Step 5: Testing the Database Import Process for Compatibility 679 Performing a Site Migration 680 Step 1: Taking Your Existing Site Offline 680 Step 2: Copying and Compressing the Application Files 680 Step 3: Uploading and Unpacking Your Application Files 680 Step 4: Importing Your Database Backup 680 Step 5: Pointing Your Application at the Imported Database 680 Step 6: Trying Your Site 681 Step 7: Completing the Switchover 681 Managing and Troubleshooting Your Azure Website 682 Using Kudu 682 Environment 683 Debug Console 683 Process Explorer 683 Tools 683 Visual Studio Online 686 Other Useful Azure Websites Features 687 Autoscaling 687 Deployment Slots 688 WebJobs 688 Application Monitoring 688 Other Azure Resources 688 Summary 689 APPENDIX A: RESOURCES 691 APPENDIX B: SYSTEM MESSAGE TOKENS 697 INDEX 701

About the Author

About the authors and technical editors: Shaun Walker is the original creator of DNN, the founder of DNN Corp., a Microsoft MVP since 2004, and is currently the Director & Innovation Group Lead at Arrow Consulting & Design. Clinton Bland, Bruce Chapman, Cathal Connolly, Charles Nurse, Chris Paterra, Ashish Prasad, Nathan Rover, and Dennis Shiao each work at DNN Corp. on the DNN product. Erik van Ballegoij, Peter Donker, Will Strohl, and technical editor Brian Dukes are each DNN MVPs, nominated by other DNN users and recognized as exceptional community leaders. Israel Martinez, Mitchel Sellers, DNN Corp. co-founder Scott Willhite, Ralph Williams, Jr., and technical editor Sebastian Leupold are each DNN community members who contribute greatly to the DNN ecosystem. Visit us at wrox.com where you have access to free code samples, Programmer to Programmer forums, and discussions on the latest happenings in the industry from around the world.

Ask a Question About this Product More...
 
Look for similar items by category
Home » Books » Computers » Web » Web Design
This title is unavailable for purchase as none of our regular suppliers have stock available. If you are the publisher, author or distributor for this item, please visit this link.

Back to top