PacktLib: Plone 3 Products Development Cookbook

Plone 3 Products Development Cookbook


About the Authors

About the Reviewers


Getting Started


Installing Python on Linux

Installing Plone on Linux

Installing Plone on Windows

Checking out code from a version controlsystem

Creating a Plone site

Using Development Tools


Accessing an IPython powered shell

Taking advantage of an enhanced interactive Python debugger with ipdb

Discovering Zope/Plone APIs and docstrings with DocFinderTab

Opening an online Python shell on Plone using Clouseau

Debugging Zope exceptions with PDBDebug Mode

Applying code changes on-the-fly using plone.reload

Creating Content Types with ArchGenXML


Installing ArchGenXML

Configuring ArgoUML

Creating a model

Generating code

Customizing generated code

Installing the product

Automatically installing products in your Zope instance

Prevent Bugs through Testing


Working with paster-generated test suites

Creating a test suite with ArchGenXML

Creating doctests with iPython

Zope functional testing

Using Selenium functional tests

Creating a Custom Content Type with Paster


Creating an Archetypes product with paster

Adding a content type into a product

Changing the base class in paster content types

Adding fields to a content type

Adding a custom validator to a content type

Modifying the view of a content type with jQuery

Creating Lightweight Content Types


Creating a product package structure

Creating a folderish content type

Creating the user interface for Zope 3 content types

Creating content types with Dexterity

Improving Product Performance


Installing CacheFu with a policy product

Improving performance by tweaking expensive code

Testing server load and benchmarking our code



Adding i18ndude support to ArchGenXML

Installing i18ndude standalone

Using i18ndude

Using Placeless Translation Services for i18n support

Using zope.i18n approach

Overriding others' translations

Using i18n with ArchGenXML

Using i18n with paster-created products

Adding i18n support to any product

Translating content

Setting language options

Adding Security to your Products


Creating a new permission

Adding a new role

Adding user groups

Testing security customizations

Protecting operations with permissions

Managing security with workflows

Adding configuration options in Plone control panel

Improving User Interface with KSS


Preparing a form to take full advantage of KSS

Changing end user pages with client-side KSS

Submitting data via AJAX

Creating Portlets


Creating a portlet package

Customizing a new portlet according to our requirements

Testing portlets

Assigning portlets automatically

Extending Third-Party Products


Using skin layers

Overriding Zope 3 components

Customizing Zope 3 browser templates and files

Subscribing to others' events

Using the ZCA to extend a third-party product: Collage

Interacting with other Systems: XML-RPC


Creating a configuration form

Registering a local utility

Registering a global utility

Getting our Products ready for Production


Installing and configuring an egg repository

Submitting products to an egg repository

Writing a production buildout

Creating a Policy Product

Creating a Policy Product