PacktLib: Professional Plone Development

Professional Plone Development

Credits

Foreword

About the Author

About the Reviewers

Preface

Getting Ready

Plone in Context

A Brief History

Competition

Plone-the-Application and Plone-the-Framework

Additional Considerations when Deciding on Plone

Licensing

The Plone Community, and Why You Belong There

Summary

The Case Study

High-Level Requirements

Modeling and Mock-Ups

Running the Project

Summary

The Development Environment

Prerequisites

Quick Start

Glossary

Creating a Zope Instance Manually

Understanding Eggs and Setuptools

Automating the Build Process with zc.buildout

Additional Development Tools

Learning to Help Yourself

Summary

Customizing Plone

Customization Basics

Persistent Settings and the ZODB

Configuration Using GenericSetup

Acquisition and Skin Layers

Overriding Zope 3 Components

Customization Best Practices

Summary

Developing a Site Strategy

Creating a "Policy Product"

Information Architecture

Summary

Security and Workflow

Security Primitives

Keeping Control with Workflow

Custom Workflow Installation

Protected and Trusted Code

Summary

Using Add-on Products

Finding and Evaluating Products

Playing it Safe

Installing a Product

Summary

Creating a Custom Theme

Background

The Theme Package

Tools and Techniques

Custom CSS Style Sheets

Image Resources

Managing Viewlets

Overriding Visual Elements

Summary

Developing New Functionality

Nine Core Concepts of Zope Programming

1. Object Publishing and Traversal

2. ZODB Persistence

3. Searching Objects Using the Catalog

4. Describing Functionality with Interfaces

5. Component Configuration with ZCML

6. Component Registries Using Utilities

7. Aspect-oriented Programming with Adapters

8. Views and Other Presentation Components

9. Synchronous Events

Summary

Custom Content Types

Content-Centric Design

Package Layout

Modeling with Interfaces

Using the Archetypes Framework

Installation and Configuration in the Policy Product

Functional Tests

Creating a New Portlet

Zope 3, Formlib, and the Role of Archetypes

Summary

Standalone Views and Forms

Pages Without a Specific Context

Writing Custom Forms

Automatically Generating Forms

The Form Controller Tool

Forms in Viewlets

Global Template Variables and Helper Views

Summary

Relational Databases

Relational Databases vs. the ZODB

Modeling Screenings and Reservations

Setting Up the Database

SQLAlchemy—Turning SQL Lead into Python Gold

Managing Database Connections

Writing the Database Utilities

Adding the User Interface

Summary

Users and Their Permissions

Defining a Membership Policy

Collaborative Workspaces

Advanced Member Management Options

Summary

Rich User Interfaces with KSS

Understanding KSS

KSS-Enabling Film Ratings

A Brief KSS Reference

KSS-Enabling the "my cinema" Functionality

Summary

Next Steps

Our Achievements So Far

Additional Functionality

Summary

Real-world Deployments

Server Management

Deployment Checklist

Zope Enterprise Objects

A Deployment Buildout

Moving the Code and Database to a Live Server

Zope as a Service

Backups and Database Maintenance

Summary

Setting Up a Production Server

Virtual Hosting

Caching

Summary

Authenticating with LDAP

LDAP and Active Directory

Connecting Plone to an LDAP Repository

Summary

Looking to the Future

Making Future Releases

Our Achievements

Where to Go Next

Summary

Index