Zope 3 Developer's Handbook

A practical guide to developing and administering content management systems with Zope

Stephan Richter

Publisher: New Riders, 2005, 426 pages

ISBN: 0-672-32617-5

Keywords: Python, Web Programming

Last modified: July 18, 2021, 10:05 p.m.

A practical guide to developing and administering content management systems with Zope

Zope is a powerful, award-winning open source platform for building Web-based content management systems. A highly flexible content management solution, Zope is used by thousands of people around the world, including many large corporations who trust Zope to be quick to set up and stable to run. When coupled with numerous plug-ins and Zope's interoperability with Web technologies, the complexity of choosing a solution becomes simple.

Zope 3 Developer's Handbook provides a wealth of knowledge to the Zope developer looking for a complete guide and reference. Written by luminaries in the Zope community, the Zope 3 Developer's Handbook has expert solutions to many of the problems associated with installing and maintaining a content management system with Zope.

From simpler tasks, such as creating schemas and widgets, to more difficult ones, like using XML-RPC or providing online help systems, Zope 3 Developer's Handbook answers all the questions.

  • Part I: Zope 3 from a User's Point of View
    • Chapter 1: Installing Zope 3
      • Zope 3 Installation Requirements
      • Installing Zope from SVN
      • Installing the Source Distribution
      • Installing the Binary Distribution of Zope
      • Installing the Source Distribution in Windows Without Using make
    • Chapter 2: The New Web-Based Zope User Interface
      • Getting Comfortable with the ZMI
      • Help and Documentation
      • The Scripter's World
      • The Content Space Versus the Software Space
    • Chapter 3: Installing New Zope Packages
      • Step 1: Determining the Installation Directory
      • Step 2: Fetching the Wiki Application from SVN
      • Step 3: Registering the Package
      • Step 4: Confirming the Installation
      • Step 5: Adding a Sample Wiki Instance
    • Chapter 4: Setting Up Virtual Hosting
  • Part II: The Ten-Thousand-Foot View
    • Chapter 5: The Zope 3 Development Process
      • From Idea to Implementation
      • Zope 3 Naming Rules
    • Chapter 6: An Introduction to Interfaces
      • Advanced Usages of Interfaces
      • Using Interfaces
    • Chapter 7: The Component Architecture: An Introduction
      • Services
      • Adapters
      • Utilities
      • Factories (Object Classes/Prototypes)
      • Presentation Components: Views, Resources, Skins, and Layers
      • Global Versus Local Components
    • Chapter 8: Zope Schemas and Forms
      • Schemas Versus Interfaces
      • The Core Schema Fields
      • Autogenerated Forms Using the forms Package
    • Chapter 9: Introduction to the Zope Configuration Markup Language (ZCML)
      • Using XML
    • Chapter 10: Introduction to Zope's I18n and L10n Support
      • Diving into I18n and L10n
      • Locales
      • Messages and Message Catalogs
      • Internationalizing Message Strings
      • Extracting Message Strings
    • Chapter 11: Metadata and the Dublin Core
      • The Dublin Core
      • The Dublin Core Elements
      • Further Readings
    • Chapter 12: Porting Applications from Zope 2 to Zope 3
      • Porting an Application by Redesign
      • Porting Using Compatibility Layers and Scripts
  • Part III:Content Components—The Basics
    • Chapter 13: Writing New Content Objects
      • Step 1: Preparing to Write the Content Object
      • Step 2: Creating the Initial Design
      • Step 3: Writing the Interfaces
      • Step 4: Writing Unit Tests
      • Step 5: Implementing Content Components
      • Step 6: Running Unit Tests Against the Implementation
      • Step 7: Registering the Content Components
      • Step 8: Configuring Some Basic Views
      • Step 9: Registering the Message Board with Zope
      • Step 10: Testing the Content Component
    • Chapter 14: Adding Views for Content Objects
      • Step 1: Creating the Message Details View
      • Step 2: Specifying the Default View
      • Step 3: Adding the Threaded Subtree View
      • Step 4: Adding Icons
      • Step 5: Final Testing
    • Chapter 15: Custom Schema Fields and Form Widgets
      • Step 1: Creating a Field
      • Step 2: Creating a Widget
      • Step 3: Using the HTML Field
    • Chapter 16: Securing Components
      • Step 1: Declaring Permissions
      • Step 2: Using the Permissions
      • Step 3: Declaring Roles
      • Step 4: Assigning Roles to Principals
    • Chapter 17: Changing Size Information
      • Step 1: Implementing the Adapter
      • Step 2: Writing and Running Unit Tests
      • Step 3: Registering the Adapter
    • Chapter 18: Internationalizing Packages
      • Step 1: Internationalizing Python Code
      • Step 2: Internationalizing Page Templates
      • Step 3: Internationalizing ZCML
      • Step 4: Creating Language Directories
      • Step 5: Extracting Translatable Strings
      • Step 6: Translating Message Strings
      • Step 7: Compiling and Registering Message Catalogs
      • Step 8: Trying the Translations
      • Step 9: Updating Translations on-the-Fly
  • Part IV: Content Components—Advanced Techniques
    • Chapter 19: Events and Subscribers
      • Step 1: Developing the Mail Subscription Interface
      • Step 2: Implementing the Mail Subscription Adapter
      • Step 3: Testing the Adapter
      • Step 4: Providing a View for the Mail Subscription
      • Step 5: Writing an Event Subscriber
      • Step 6: Testing the Message Mailer
      • Step 7: Using the New Mail Subscription System
      • The Theory Behind Events
    • Chapter 20: Approval Workflow for Messages
      • Step 1: Making a Message Workflow-Aware
      • Step 2: Creating a Workflow and Its Supporting Components via a Browser
      • Step 3: Assigning a Workflow
      • Step 4: Testing the Workflow
      • Step 5: Creating a Review Messages View for Message Boards
      • Step 6: Adjusting a Message Thread
      • Step 7: Automating the Creation of Workflow and Friends
      • The Theory Behind Workflows
    • Chapter 21: Providing Online Help Screens
      • Creating Help Files
      • Registering the Online Help Topics
    • Chapter 22: Object-to-Filesystem Mapping, Using FTP as an Example
      • Step 1: IPlainText Adapters
      • Step 2: The Virtual Contents File Adapter
      • Step 3: The IReadDirectory Implementation
      • Step 4: Putting the Icing on the Cake: A Special Directory Factory
    • Chapter 23: Availability of Content via XML-RPC
      • Step 1: Creating Methods: XML-RPC Presentation Components
      • Step 2: Testing the XML-RPC Views
      • Step 3: Configuring the New Views
      • Step 4: Testing XML-RPC Features in Action
    • Chapter 24: Developing New Skins
      • Step 1: Preparing for a New Skin
      • Step 2: Creating a New Skin
      • Step 3: Customizing the Base Templates
      • Step 4: Adding a Message Board Intro Screen
      • Step 5: Viewing a List of All Message Board Posts
      • Step 6: Adding a Post to the Message Board
      • Step 7: Reviewing Pending Messages
      • Step 8: Viewing Message Details
      • Step 9: Replying to Messages
  • Part V: Other Components
    • Chapter 25: Building and Storing Annotations
      • Implementing an Alternative Annotations Mechanism
      • Step 1: Developing the Interfaces
      • Step 2: Implementing the KeeperAnnotations Adapter
      • Step 3: Writing and Performing Unit Tests
      • Step 4: Configuring the KeeperAnnotations Component
      • Step 5: Writing Functional Tests and Configuration
    • Chapter 26: New Principal-Source Plug-ins
      • Step 1: Defining the Interface
      • Step 2: Writing the Tests
      • Step 3: Implementing the Plug-in
      • Step 4: Registering the Principal Source and Creating Basic Views
      • Step 5: Taking the Plug-in for a Test Run
    • Chapter 27: Principal Annotations
      • Step 1: Creating the Principal Information Interface
      • Step 2: Creating the Information Adapter
      • Step 3: Registering the Components
      • Step 4: Testing the Adapter
      • Step 5: Playing with the New Feature
    • Chapter 28: Creating New Browser Resources
      • Creating a Resource File
    • Chapter 29: Registries with Global Utilities
      • Step 1: Defining the Interfaces
      • Step 2: Implementing the Utility
      • Step 3: Writing Tests
      • Step 4: Providing a User-Friendly UI
      • Step 5: Implementing ZCML Directives
      • Step 6: Setting Up Some Smiley Themes
      • Step 7: Integrating Smiley Themes into the Message Board
    • Chapter 30: Local Utilities
      • Step 1: Defining the Interfaces
      • Step 2: Implementing a Smiley
      • Step 3: Registering the Themes
      • Step 4: Providing Views
      • Step 5: Working with the Local Smiley Theme
      • Step 6: Writing Tests
    • Chapter 31: Vocabularies and Related Fields/Widgets
      • Step 1: The Vocabulary and Its Terms
      • Step 2: Testing the Vocabulary
      • Step 3: The Default Item Folder
    • Chapter 32: Exception Views
      • Step 1: Creating an Exception
      • Step 2: Providing an Exception View
      • Step 3: Testing the Exception View
  • Part VI: Advanced Topics
    • Chapter 33: Writing New ZCML Directives
      • Step 1: Developing the Directive Schema
      • Step 2: Implementing the Directive Handler
      • Step 3: Writing the meta Configuration
      • Step 4: Testing the Directive
    • Chapter 34: Implementing TALES Namespaces
      • Step 1: Defining the Namespace Interface
      • Step 2: Implementing the Namespace
      • Step 3: Testing the Namespace
      • Step 4: Wiring the format Namespace into Zope 3
      • Step 5: Trying the format Namespace
    • Chapter 35: Changing Traversal Behavior
      • Step 1: Creating a Non-Case-Sensitive Folder
      • Step 2: Creating the Traverser
      • Step 3: Creating and Running Unit Tests
      • Step 4: Creating and Running Functional Tests
    • Chapter 36: Registering New WebDAV Namespaces
      • Step 1: Creating the Namespace Schema
      • Step 2: Implementing the IPhoto to IImage Adapter
      • Step 3: Unit-Testing and Configuring the Adapter
      • Step 4: Registering the WebDAV Schema
      • Step 5: Creating and Running Functional Tests
    • Chapter 37: Using TALES Outside Page Templates
      • The TALES Filesystem Runner
      • Trying Out the New TALES Runner
    • Chapter 38: Developing New TALES Expressions
      • An Overview of TALES Expressions
      • Step 1: Implementing the SQL Expression
      • Step 2: Preparing and Implementing the Tests
      • Step 3: Trying Your New Expression in Zope
    • Chapter 39: The Life of a Request
      • What Is a Request?
      • Finding the Origin of a Request
      • The Request and the Publisher
  • Part VII: Writing Tests
    • Chapter 40: Writing Basic Unit Tests
      • Implementing the Sample Class
      • Writing Unit Tests
      • Running the Tests
    • Chapter 41: Doc Tests: Example-Driven Unit Tests
      • Integrating a Doc Test
      • Doc Tests in a File
      • Shortcomings of Doc Tests
    • Chapter 42: Writing Functional Tests
      • The Browser Test Case
      • Testing ZPT Page Views
      • Running Functional Tests
    • Chapter 43: Creating Functional Doc Tests
      • Setting Up the Zope 3 Environment
      • Setting Up TCPWatch
      • Recording a Session
      • Creating and Running the Test
    • Chapter 44: Writing Tests Against Interfaces
      • The ISample Interface
      • The ISample Interface Tests
      • Implementations of the ISample Interface
      • Writing Tests for the Implementations
      • Running the Tests
  • Appendix A: Attribution-NonCommercial-NoDerivs License 2.0
  • Appendix B: Zope Public License (ZPL) Version 2.1

Reviews

Zope 3 Developer's Handbook

Reviewed by Roland Buresund

Good ******* (7 out of 10)

Last modified: June 11, 2008, 1:13 p.m.

Fairly good cookbook

Contains a lot of receipts for Zope 3 (or rather, a development version of the same).

Is a bit uneven, as it sometimes assumes generic knowledge, and at other times assumes you're an Zope 2 expert (which is sometimes fundamentally different).

All in all, it is worth having on your desk, if you intend to work with Zope 3.

Comments

There are currently no comments

New Comment

required

required (not published)

optional

required

captcha

required