You are previewing Pro Drupal 7 for Windows Developlers.
O'Reilly logo
Pro Drupal 7 for Windows Developlers

Book Description

Drupal is a powerful and flexible open source framework for content management. As an open-source community-driven environment, Drupal has attracted mostly Linux and Macintosh programmers. Until now, that is.

Drupal 7 incorporates features that make it compatible with Windows servers and Windows development tools. The new version opens the doors for Windows developers to build Drupal sites, including custom modules, all without leaving Visual Studio. Many enterprises are in need of a secure, high-quality web solution that integrates seamlessly with their back-end systems. And many of these back-end systems are in enterprises and powered by Windows servers. Naturally, these organizations have developers who focus on Windows development tools. This book provides a bridge to Drupal for Windows developers by speaking their language.

It starts with the Drupal page model, which Windows programmers can contrast against the ASP.NET page model. The book then describes the various features of Drupal: the hook model, theming, roles, caching, and the data abstraction layer that lays the foundation for integration with enterprise-level databases and external systems. Pro Drupal 7 for Windows Developers focuses on topics important for the programmer who is new to Drupal:

  • Quick up-to-speed introduction to Drupal for developers so that they can get over that critical learning curve.

  • A "just enough" introduction to the important features of Drupal, including the page model, the hook architecture, the theming layer, and custom module development.

  • Step-by-step tutorials on building, testing, and deploying custom modules for internal use or for sharing with the Drupal community.

Table of Contents

  1. Copyright
  2. About the Author
  3. About the Technical Reviewer
  4. Acknowledgments
  5. Preface
  6. I. Drupal Basics
    1. 1. Wherefore Drupal?
      1. 1.1. What is a CMS?
        1. 1.1.1. Content Management on the Web
        2. 1.1.2. Open Source Content Management Tools
      2. 1.2. The LAMP Stack
      3. 1.3. The Drupal Core
      4. 1.4. Security
      5. 1.5. Content Types
      6. 1.6. Contributed Modules
      7. 1.7. Themes
      8. 1.8. The Drupal Design Philosophy
      9. 1.9. Database
      10. 1.10. Forms
      11. 1.11. Security
      12. 1.12. Menus and Paths
      13. 1.13. Users, Roles, and Permissions
      14. 1.14. Summary
    2. 2. The Page Lifecycle
      1. 2.1. The Drupal Page Lifecycle
        1. 2.1.1. Configuration Bootstrap
        2. 2.1.2. Page Cache Bootstrap
        3. 2.1.3. Database Bootstrap
        4. 2.1.4. Variable Bootstrap
        5. 2.1.5. Session Bootstrap
        6. 2.1.6. Page Header Bootstrap
        7. 2.1.7. Language Bootstrap
        8. 2.1.8. Full Bootstrap
      2. 2.2. Menu Handler
        1. 2.2.1. Drupal vs. the .NET Page Lifecycle
      3. 2.3. Menus
        1. 2.3.1. The Menu Tree
      4. 2.4. Theming
      5. 2.5. Summary
    3. 3. PHP and MySQL
      1. 3.1. PHP
        1. 3.1.1. Just Enough PHP Syntax
          1. 3.1.1.1. Scripting Blocks
          2. 3.1.1.2. Comments
          3. 3.1.1.3. Types
          4. 3.1.1.4. Strings
          5. 3.1.1.5. Operators
          6. 3.1.1.6. Conditional Statements
          7. 3.1.1.7. Objects
          8. 3.1.1.8. Arrays
          9. 3.1.1.9. Loops
          10. 3.1.1.10. Functions
          11. 3.1.1.11. Exceptions
        2. 3.1.2. Drupal Coding Conventions
          1. 3.1.2.1. Control Structures
          2. 3.1.2.2. Function Calls
          3. 3.1.2.3. Function Declarations
          4. 3.1.2.4. Arrays
        3. 3.1.3. Naming Conventions
        4. 3.1.4. Doxygen
      2. 3.2. MySQL
        1. 3.2.1. MySQL vs. SQL Server
        2. 3.2.2. Enterprise Data
      3. 3.3. Summary
    4. 4. Drupal Installation and Configuration
      1. 4.1. Drupal as a Standard Service
      2. 4.2. Installing Drupal for Yourself
        1. 4.2.1. Apache Configuration
        2. 4.2.2. Database
        3. 4.2.3. Site Configuration
        4. 4.2.4. Clean URLs
      3. 4.3. Visual Studio
        1. 4.3.1. Drupal Project
        2. 4.3.2. Debugging
      4. 4.4. Summary
  7. II. Development
    1. 5. Module Development
      1. 5.1. Blocks
      2. 5.2. Modules
      3. 5.3. Hooks
      4. 5.4. Forms
        1. 5.4.1. Form Validate Hook
        2. 5.4.2. Form Submit Hook
        3. 5.4.3. XML Data Source
        4. 5.4.4. Helper Functions
        5. 5.4.5. Building the Block
      5. 5.5. Menus
      6. 5.6. Summary
    2. 6. Content Types and Permissions
      1. 6.1. Creating Content
        1. 6.1.1. Creating Content
      2. 6.2. WYSIWYG Editing
      3. 6.3. Custom Content
      4. 6.4. Permissions
        1. 6.4.1. Users and Roles
          1. 6.4.1.1. Adding a Role
        2. 6.4.2. Programming Permissions
          1. 6.4.2.1. The Permission Hook
          2. 6.4.2.2. Access Hook
      5. 6.5. Attached Fields
        1. 6.5.1. Form Alter
        2. 6.5.2. Accessing Fields
        3. 6.5.3. Updating Field Information
      6. 6.6. Summary
    3. 7. Theming
      1. 7.1. The Theme Layer
      2. 7.2. Subtheme Creation
      3. 7.3. Theme Debugging Tools
      4. 7.4. CSS Classes
      5. 7.5. The Theme Function
        1. 7.5.1. The Theme Hook
      6. 7.6. Templates
        1. 7.6.1. The HTML Template
        2. 7.6.2. Template Variables
        3. 7.6.3. Page Rendering
        4. 7.6.4. Template Interaction
        5. 7.6.5. Other Templates
        6. 7.6.6. Template Specificity
      7. 7.7. Summary
    4. 8. Testing
      1. 8.1. Getting Started
      2. 8.2. Testing Fundamentals
        1. 8.2.1. Test-Driven Development
      3. 8.3. Developing Tests
        1. 8.3.1. Developing a Unit Test Harness
        2. 8.3.2. Web Testing
          1. 8.3.2.1. Assign a Block to a Region
          2. 8.3.2.2. Getting a Page
          3. 8.3.2.3. Changing the User Profile
          4. 8.3.2.4. Testing Administration Values
          5. 8.3.2.5. Negative Tests
      4. 8.4. Code Coverage
      5. 8.5. Summary
  8. III. Databases and Deployment
    1. 9. The Database Layer
      1. 9.1. Data Abstraction
        1. 9.1.1. The Database API
      2. 9.2. Programming Against the Database API
      3. 9.3. Static Queries
        1. 9.3.1.
          1. 9.3.1.1. Prefixing
          2. 9.3.1.2. Placeholders
          3. 9.3.1.3. Fetching Result Sets
      4. 9.4. Dynamic Queries
        1. 9.4.1. Dynamic Select Query
          1. 9.4.1.1. Simple Select Query
          2. 9.4.1.2. Joins
          3. 9.4.1.3. Fields
          4. 9.4.1.4. The Distinct Property
          5. 9.4.1.5. Expressions
          6. 9.4.1.6. Ordering
          7. 9.4.1.7. Grouping
          8. 9.4.1.8. Ranges and Limits
          9. 9.4.1.9. Counting
          10. 9.4.1.10. Query Alteration
        2. 9.4.2. Dynamic Insert Query
          1. 9.4.2.1. Multi-Insert Form
        3. 9.4.3. Dynamic Update Query
        4. 9.4.4. Dynamic Delete Query
        5. 9.4.5. Dynamic Merge Query
          1. 9.4.5.1. Expressions
        6. 9.4.6. Conditional Clauses
          1. 9.4.6.1. Nested Conditionals
          2. 9.4.6.2. Null Values
        7. 9.4.7. Error Handling
        8. 9.4.8. Transactions
      5. 9.5. Summary
    2. 10. Deployment
      1. 10.1. The .info File
      2. 10.2. The .install File
        1. 10.2.1. Building the .install File
          1. 10.2.1.1. The Enable and Install Hooks
            1. 10.2.1.1.1. The Install Hook
            2. 10.2.1.1.2. The Enable Hook
            3. 10.2.1.1.3. Module Changes
          2. 10.2.1.2. The Disable and Uninstall Hooks
            1. 10.2.1.2.1. The Disable Hook
            2. 10.2.1.2.2. The Uninstall Hook
          3. 10.2.1.3. The Update Hook
            1. 10.2.1.3.1. Creating an Update
            2. 10.2.1.3.2. Updating Your System
      3. 10.3. Delivering your Module
        1. 10.3.1. Documentation
      4. 10.4. Summary
  9. A. Windows Development Environment
    1. A.1. WAMP Stack
    2. A.2. Development Environments
    3. A.3. WampServer
    4. A.4. Visual Studio and VS.Php
    5. A.5. IIS and SQL Server
      1. A.5.1. Summary and Caveat
    6. A.6. Drush
      1. A.6.1. Installing Drush
      2. A.6.2. Running Drush
    7. A.7. Summary
  10. B. From Start to Omega: Using the Omega Starter Kit
    1. B.1. 960 Grid System
    2. B.2. Designing in Photoshop
    3. B.3. Omega Sub-Theme
      1. B.3.1. Creating your Omega Sub-Theme
      2. B.3.2. Mapping Photoshop to Omega
      3. B.3.3. Configuring Zones
      4. B.3.4. Blocks
      5. B.3.5. Content Generation
    4. B.4. Theming with CSS
      1. B.4.1. Theming with Images
      2. B.4.2. CSS Positioning
      3. B.4.3. Template File
    5. B.5. Summary
  11. C. Selected Reference Material
    1. C.1. Core Template Variables
    2. C.2. SimpleTest Reference
    3. C.3. Install Hooks
    4. C.4. Schema API
      1. C.4.1. Schema API Classes
      2. C.4.2. Schema API Functions and Methods
      3. C.4.3. Schema Hook
    5. C.5. Globals
    6. C.6. Field CRUD API
    7. C.7. Field Attach API
    8. C.8. Drush Reference
    9. C.9. Summary