| About the Author | p. xiii |
| About the Technical Reviewer | p. xv |
| Acknowledgments | p. xvii |
| Introduction | p. xix |
| The Basics | p. 1 |
| What You Need to Know | p. 1 |
| Programming Experience | p. 1 |
| Web Experience | p. 2 |
| What You Need to Have | p. 12 |
| Hardware | p. 13 |
| Software | p. 13 |
| Configuring the Browser | p. 16 |
| Summary | p. 21 |
| The Express and DotNetNuke Combination | p. 23 |
| Microsoft .NET | p. 23 |
| Before .NET | p. 23 |
| What .NET Fixes | p. 25 |
| Garbage Collection | p. 26 |
| Safe Code | p. 28 |
| Versioned Assemblies | p. 28 |
| Complete Classes | p. 29 |
| Common Data Types | p. 30 |
| .NET Remoting | p. 31 |
| Reversion to Configuration Files | p. 31 |
| Discontinued Use of Pointers | p. 31 |
| The Evolution of DotNetNuke | p. 32 |
| DotNetNuke Features | p. 32 |
| Summary | p. 34 |
| Installation | p. 35 |
| Installing IIS | p. 36 |
| Steps for Installation | p. 36 |
| Installing Visual C# Express Edition | p. 39 |
| Installing Visual Web Developer | p. 42 |
| Installing DotNetNuke | p. 43 |
| A Better Install | p. 44 |
| Using VWD to Complete the DNN Install | p. 46 |
| Installing and Configuring SQL Server Express Edition | p. 57 |
| Installing SQL Server Express | p. 58 |
| Summary | p. 64 |
| Basic C# | p. 65 |
| The C# Integrated Development Environment | p. 65 |
| The Look and Feel | p. 66 |
| Creating a New Project | p. 67 |
| Starting the Project | p. 68 |
| Project Setup | p. 70 |
| Designing the Form | p. 75 |
| Adding the Code | p. 76 |
| Trying the Code | p. 96 |
| Summary | p. 98 |
| Visual Web Developer | p. 99 |
| The VWD IDE | p. 99 |
| The Look and Feel | p. 99 |
| The Code-Behind File | p. 107 |
| Coding the Event Handler | p. 112 |
| Adding More Controls | p. 118 |
| The New Web Screen | p. 119 |
| The HTML Code Page | p. 124 |
| Completing the Code-Behind | p. 125 |
| Changing State | p. 134 |
| Summary | p. 140 |
| DotNetNuke Basics | p. 143 |
| A DotNetNuke Review | p. 143 |
| What Now? | p. 144 |
| How DotNetNuke Works | p. 145 |
| A Look at Modules | p. 148 |
| Editing a DNN Site | p. 150 |
| Settings | p. 153 |
| The Project | p. 161 |
| Getting Started | p. 162 |
| Setting Up the Site | p. 163 |
| Creating Pages | p. 164 |
| Adding Modules to the Home Page | p. 165 |
| Adding Modules to the Menu Page | p. 171 |
| Adding Modules to the Inventory Page | p. 174 |
| Adding Modules to the Registration Page | p. 177 |
| Adding Modules to the Contacts Page | p. 179 |
| Summary | p. 180 |
| Creating a DNN Module | p. 181 |
| Creating the Module | p. 181 |
| Creating Tables | p. 185 |
| Viewing the SQL Results | p. 186 |
| Starting the Module | p. 188 |
| What Did You Do? | p. 188 |
| Enhancing the Module | p. 190 |
| The Database Layer | p. 190 |
| The Business Logic Layer | p. 206 |
| The Presentation Layer | p. 211 |
| Summary | p. 227 |
| Finishing the DotNetNuke Module | p. 229 |
| Setting Up the Code Transfer | p. 229 |
| The CalculateHours Method | p. 230 |
| The WeekPunches Class | p. 230 |
| The FillData Method | p. 233 |
| Initial State | p. 241 |
| Editing the ViewTimePunch Code | p. 242 |
| Member Variables | p. 242 |
| The DisplayWeek Method | p. 243 |
| The Combo Box Event Handler | p. 244 |
| The Punch Button Event Handler | p. 244 |
| The Page _Load Event Handler | p. 246 |
| Last Edit | p. 248 |
| Testing It All Out | p. 248 |
| Looking at the Data | p. 248 |
| Summary | p. 250 |
| DNN Permissions and Portals | p. 251 |
| Permissions | p. 251 |
| The Host Role | p. 251 |
| The Registered User | p. 256 |
| The Subscriber | p. 256 |
| All Users | p. 257 |
| Unauthenticated Users | p. 257 |
| The Administrator Role | p. 258 |
| Managing the Website | p. 258 |
| A New Role | p. 258 |
| Adjusting Page Permissions | p. 260 |
| Testing the Permissions | p. 261 |
| Managing Portals | p. 264 |
| What Is a DNN Portal? | p. 264 |
| Creating the Portal | p. 266 |
| Editing the Portal | p. 268 |
| The Look and Feel | p. 271 |
| Summary | p. 272 |
| DNN Hosting | p. 275 |
| Hosting | p. 275 |
| What You Get from a Host | p. 277 |
| Downloading Your Project | p. 277 |
| Finding a Host | p. 278 |
| Installing a Skin | p. 279 |
| Uploading a New Skin | p. 279 |
| Installing the Container | p. 284 |
| DNN Security | p. 286 |
| Unauthorized Break-Ins | p. 287 |
| Secure Sockets Layer | p. 290 |
| Summary | p. 291 |
| Creating a DNN Skin | p. 293 |
| What Is a Skin? | p. 293 |
| How DNN Does Skins | p. 293 |
| DNN Tokens | p. 295 |
| CSS Basics | p. 296 |
| Preparation | p. 298 |
| Using a Template | p. 299 |
| Editing the Skin | p. 307 |
| Rearranging the Table | p. 310 |
| Adjusting the .css File | p. 312 |
| Testing the Skin | p. 316 |
| Packaging the Skin | p. 316 |
| Creating the Test Harness | p. 317 |
| Uploading the Skin | p. 318 |
| Skin Edit Cycle | p. 320 |
| The Last Panel | p. 324 |
| Other Skinning Tasks | p. 325 |
| What Else Can Be Skinned? | p. 326 |
| Creating a Container | p. 327 |
| Copying a Template | p. 327 |
| Editing the Template | p. 330 |
| Packaging the Container | p. 333 |
| Summary | p. 337 |
| JavaScript and Ajax | p. 339 |
| JavaScript | p. 339 |
| What Can JavaScript Do? | p. 339 |
| JavaScript Syntax | p. 340 |
| When to Use JavaScript in ASP.NET | p. 341 |
| A Small Example | p. 341 |
| Debugging JavaScript | p. 351 |
| Ajax | p. 353 |
| Ajax and JavaScript | p. 354 |
| Ajax Limitations | p. 354 |
| ASP.NET and Ajax | p. 356 |
| A Small Ajax Example | p. 356 |
| Summary | p. 362 |
| Next Steps and Suggestions | p. 363 |
| ASP.NET Development | p. 363 |
| Investigating ASP.NET | p. 365 |
| Other .NET Stuff | p. 367 |
| More Fun with DotNetNuke | p. 367 |
| Modules | p. 367 |
| Other DNN Tricks | p. 368 |
| Summary | p. 369 |
| Index | p. 357 |
| Table of Contents provided by Ingram. All Rights Reserved. |