You are previewing Professional Plone 4 Development.
O'Reilly logo
Professional Plone 4 Development

Book Description

Build robust, content-centric web applications with Plone 4.

  • The very first book on the newly released Plone version 4.

  • Learn how - and when - the professionals use Plone

  • Master the latest Plone technologies

  • Put theory into practice with a realistic case study built from chapter to chapter.

  • Written by Martin Aspeli, one of the Plone project’s most prolific core developers and responsible for several R&D efforts relating to Plone 4.0; and with a Foreword by Eric Steele, the Plone Release Manager.

In Detail

Aspeli’s years of experience in Plone development and project management are combined with an approachable writing style to create an engaging and highly-informative guide to working with Plone. Professional Plone 4 Development stands as an excellent resource for developers of all levels.

Plone is a web content management system that features among the top 2% of open source projects and is used by more than 300 solution providers in 57 countries. Its powerful workflow system, outstanding security track record, friendly user interface, elegant development model and vibrant community makes Plone a popular choice for building content-centric applications. By customising and extending the base platform, integrators can build unique solutions tailored to specific projects quickly and easily.

If you want to create your own web applications and advanced websites using Plone 4, Professional Plone 4 Development is the book you need.

The first edition of this book remains one of the most widely read and recommended Plone books. This second edition is completely revised and up-to-date for Plone 4.1, covering new topics such as Dexterity, Diazo, jQuery and z3c.form, as well as improved ways of working with existing technologies such as Buildout, SQLAlchemy and the Pluggable Authentication Service. It retains the writing style and comprehensive approach that made the first edition so popular

Built around a realistic case study, Professional Plone 4 Development will take you from an understanding of Plone’s central concepts, through basic customization, theming, and custom development, to deployment and optimization.

Table of Contents

  1. Professional Plone 4 Development
    1. Table of Contents
    2. Professional Plone 4 Development
    3. Credits
    4. Foreword
    5. About the Author
    6. About the Reviewers
    7. www.PacktPub.com
      1. Support files, eBooks, discount offers, and more
      2. Why Subscribe?
      3. Free Access for Packt account holders
    8. Preface
      1. What this book covers
      2. What you need for this book
      3. Who this book is for
      4. Conventions
      5. Reader feedback
      6. Customer support
        1. Downloading the example code
        2. Errata
        3. Piracy
        4. Questions
    9. I. Getting Ready
      1. 1. Plone in Context
        1. A brief history of Plone
          1. What is new in Plone 4?
        2. Plone-the-application and Plone-the-framework
        3. Additional considerations when deciding on Plone
          1. Licensing
        4. The Plone Community, and why you belong there
        5. Summary
      2. 2. Introduction to the Case Study
        1. Background and high-level requirements
        2. Modeling and mockups
        3. Information architecture
        4. Running the project
        5. Summary
      3. 3. The Development Environment
        1. Installers
        2. Glossary of terms
        3. Prerequisites
          1. Creating an isolated Python environment
        4. A minimal buildout
        5. Buildout basics
          1. The buildout directory
          2. Buildout defaults
          3. Packages and distributions
        6. The development buildout
          1. Development tools
            1. Buildout extensions
            2. mr.developer
            3. buildout.dumppickedversions
          2. Development Zope instance
            1. plone.reload
            2. Products.PdbDebugMode
            3. Products.PrintingMailHost
            4. Products.DocFinderTab
          3. Test runner
            1. Coverage reporting
            2. Continuous integration
          4. Omelette
          5. The zopepy interpreter
          6. ZopeSkel
          7. z3c.checkversions
          8. jarn.mkrelease
          9. Tools in the browser
        7. Learning to help yourself
          1. Find the documentation
          2. Use the Source, Luke!
          3. Become familiar with the debugger
          4. Look at the logs
        8. Summary
    10. II. Customizing Plone
      1. 4. Basics of Customization
        1. Persistent settings and the ZODB
          1. Where are persistent settings stored?
        2. Using GenericSetup for configuration
          1. GenericSetup and Plone's Add-ons Control Panel
        3. Acquisition and skin layers
        4. Overriding Component Architecture components
        5. Customization best practices
          1. Using source control
          2. Writing tests
          3. Considering migration requirements
        6. Summary
      2. 5. Developing a Site Strategy
        1. Creating a policy package
          1. Distribution details
          2. Changes to setup.py
          3. Changes to configure.zcml
        2. Updating the buildout
          1. Working sets and component configuration
        3. Creating an extension profile
          1. Writing tests for customizations
          2. Making a change with the extension profile
        4. Activating the package
        5. Rebuildout, restart, reapply?
        6. Summary
      3. 6. Security and Workflow
        1. Security primitives
          1. Users and groups
          2. Permissions
          3. Roles
          4. Manipulating permissions and roles programmatically
        2. Keeping control with workflow
          1. Interacting with workflow in code
        3. Installing a custom workflow
          1. Designing a workflow for Optilux Cinemas
          2. Building the workflow
            1. Exporting
          3. Amending the policy package
            1. Role and permission settings
            2. Workflow definition
            3. Mapping workflows to types
            4. Adding the Staff group
            5. Writing the tests
        4. Protected and trusted code
          1. Restricted Python
        5. Summary
      4. 7. Using Add-ons
        1. Finding and evaluating add-ons
        2. Playing it safe
        3. Installing an add-on
          1. Amending the buildout and policy package
          2. Adding tests
        4. Summary
      5. 8. Creating a Custom Theme
        1. Background
          1. Diazo primer
        2. Creating a Diazo theme
          1. Creating a theme distribution
          2. Adding the theme distribution to the buildout
            1. Installing lxml in Mac OS X
          3. Adding the theme and rules
            1. Managing CSS and JavaScript resources
            2. Adding the rest of the rules
            3. Enabling the theme automatically
          4. Adding tests
        3. Variations on the theming approach
          1. Separate public and editing interfaces
          2. Reading the theme from a separate server
          3. Sharing a theme across multiple systems
        4. Overriding visual elements
          1. Registering a browser layer
          2. The layout policy view
          3. Overriding templates
        5. Summary
    11. III. Developing New Functionality
      1. 9. Nine Core Concepts of Zope Programming
        1. About the examples
        2. Object publishing and traversal
          1. Containment and URLs
          2. Acquisition chains
          3. Path traversal
        3. Persistence in the ZODB
          1. Transactions
          2. Object persistence
          3. ZODB BLOBs
        4. Searching for objects using the catalog
        5. Describing functionality with interfaces
          1. Using interfaces in catalog searches
        6. Component configuration with ZCML or Grokkers
          1. Python directives and grokkers
        7. Component registries using utilities
          1. Global utilities
          2. Named utilities
          3. Local utilities
          4. Tools
        8. Modelling component aspects with adapters
          1. Multi-adapters
          2. Named adapters
          3. Adapter factories
        9. Views and other presentation components
          1. Content providers and viewlets
        10. Synchronous events
          1. Object events
        11. Summary
      2. 10. Custom Content Types
        1. Content-centric design
        2. Choosing a content type framework
        3. Creating a distribution
          1. Contents of the distribution
        4. Using the Dexterity framework
          1. What is in a content type?
          2. Basic configuration
          3. Schemata and fields
            1. Form hints in the schema
            2. Validation
            3. Vocabularies
            4. Rich text fields
            5. Files, images, and BLOBs
            6. Content reference fields
          4. Unique content identifiers
          5. Indexers
          6. Content security
            1. Add permissions
            2. Schema permissions
          7. Views and browser resources
            1. Icons and stylesheets
            2. Main content views
          8. Installing and registering types
            1. Add permissions
            2. Adding catalog indexes and metadata columns
            3. Adding the stylesheet
          9. Integration tests
        5. Installation and configuration in the policy package
          1. Adjusting the security policy
          2. Adjusting navigation tree properties
          3. Enabling content object versioning
          4. Site policy tests
        6. Using the schema extender
          1. Adding the schema extender and registry
          2. Defining the registry settings
          3. Creating the schema extender, vocabulary, and indexer
          4. Adding tests
        7. Using portlets
          1. Creating a new portlet
          2. Configuring and registering new portlet types
          3. Assigning portlets automatically
        8. Summary
      3. 11. Standalone Views and Forms
        1. Pages without a specific context
          1. Templates in skin layers
          2. Views available on all objects
          3. Views on the navigation root
          4. Invoking standalone pages
        2. Writing custom forms
          1. Processing form actions
            1. Checking form submit buttons
            2. Performing redirects
          2. Form input converters
        3. Generating forms automatically
        4. Creating a control panel view
        5. The form controller tool
        6. Writing new viewlets
        7. Global template variables and helper views
        8. Functional testing of views
        9. Summary
      4. 12. Relational Databases
        1. Relational databases versus the ZODB
        2. Modeling screenings and reservations
          1. Screening query and reservation services
        3. Setting up the database
        4. Database connectivity in Zope
          1. SQLAlchemy basics
        5. Managing database connections
        6. Working with the database
          1. Mapping the database tables
          2. Querying the database
          3. Updating and inserting records
          4. Testing the database
        7. Adding the user interface
          1. Updating the Film and Cinema views
          2. Custom traversal
            1. Implementing the screening view
            2. Implementing the reservations form
            3. Tests
        8. Summary
      5. 13. Users and their Permissions
        1. Defining a membership policy
          1. Updating the site policy product
          2. Managing user metadata
        2. Collaborative workspaces
        3. The Pluggable Authentication Service
          1. Anatomy of a PAS plugin
          2. A Facebook authentication plugin
            1. Package configuration
            2. Facebook OAuth authentication
            3. Testing the plugin
            4. Installation
        4. Summary
      6. 14. Dynamic User Interfaces with jQuery
        1. KSS and jQuery in Plone 4
        2. Managing JavaScript resources
        3. Overlays
        4. Background requests and DOM manipulation
        5. Summary
      7. 15. Summary and Potential Enhancements
        1. What we have achieved
        2. Additional functionality
          1. Additional reporting and analytics
          2. More advanced ticketing
          3. Internationalization
            1. Translating content
            2. Translating user interface strings
        3. Summary
    12. IV. Real-world Deployments
      1. 16. Zope on the Server
        1. Deployment checklist
        2. Scaling Zope
          1. Zope Enterprise Objects (ZEO)
          2. RelStorage
        3. A deployment buildout using RelStorage
        4. Moving code, configuration, and data to a server
          1. Releasing distributions
          2. Source distributions from tags
          3. Tagging the build
          4. Deploying the build
          5. Managing data
        5. Managing Zope processes
          1. Supervisor
          2. Unix init scripts
          3. Windows services
        6. Backups and maintenance
          1. Backups
          2. ZODB packing
          3. Log monitoring and rotation
        7. Summary
      2. 17. Setting up a Production Server
        1. Server components
          1. Virtual hosting
          2. Web server
          3. Caching reverse proxy
          4. Load balancer
          5. Other services
          6. Common configurations
            1. Deploying on UNIX with minimal configuration
            2. Deploying on UNIX with SSL
            3. Deploying on UNIX with maximum flexibility
            4. Deploying on Windows
        2. Hardware and operating system concerns
          1. Hardware
          2. Buildout or system packages
          3. Operating system configuration
        3. Caching and optimization
          1. Application-level problems
          2. Optimizing resources
            1. Resource Registries resource merging
            2. A crash course in caching
            3. Caching configuration and rulesets
        4. Testing and benchmarking
        5. Summary
      3. 18. Authenticating with LDAP or Active Directory
        1. LDAP and Active Directory
          1. Setting up a test environment
        2. Connecting Plone to an LDAP repository
          1. Configuring PAS plugins manually
        3. Summary
      4. 19. Looking to the Future
        1. Making future releases
          1. Managing migrations and upgrades
          2. Migration profiles
        2. What we have achieved
        3. Where to go next
        4. Summary
    13. Index