[Zope-Checkins] SVN: Zope/branches/five-integration/doc/ZOPE3.txt
first cut at Z3 support docs
Brian Lloyd
brian at zope.com
Wed Mar 16 04:50:38 EST 2005
Log message for revision 29485:
first cut at Z3 support docs
Changed:
A Zope/branches/five-integration/doc/ZOPE3.txt
-=-
Added: Zope/branches/five-integration/doc/ZOPE3.txt
===================================================================
--- Zope/branches/five-integration/doc/ZOPE3.txt 2005-03-16 03:38:35 UTC (rev 29484)
+++ Zope/branches/five-integration/doc/ZOPE3.txt 2005-03-16 09:50:38 UTC (rev 29485)
@@ -0,0 +1,271 @@
+Using Zope 3 Components in Zope 2 Applications
+
+ Background
+
+ Zope 3 is next major revision of Zope. It is designed to be more
+ 'programmer-centric' and easier to learn, use and extend. Zope 3
+ introduces an interface-centric component architecture that makes
+ it easier to develop and deploy components without requiring
+ developers to learn and understand the entire Zope framework.
+
+ Much more information on Zope 3 is available on the Zope 3 area
+ of the zope.org Website at http://dev.zope.org/Zope3/.
+
+ As of Zope 2.8, the "Five" project has been integrated into the
+ Zope 2 core. The "Five" project implements a compatibily layer
+ that allows many Zope 3 components and patterns to be used in
+ new and existing Zope 2 applications. This provides a number of
+ benefits::
+
+ - availability of Zope 3 technologies in Zope 2 like the
+ component architecture and declarative configuration
+
+ - you can gradually evolve your Zope 2 projects to better plan
+ for migration to Zope 3
+
+ - you start learning about Zope 3 right now, preparing yourself
+ better for the future. Since Zope 3 is open to contributions,
+ you could even influence your future for the better ;)
+
+
+ Features
+
+ The Five integration layer provides support for Zope 3 interfaces,
+ Zope Configuration Markup Language (ZCML), adapters, views,
+ utilities, schema-driven content, and Zope 3 add and edit forms.
+
+ Note that the Five layer does *not* attempt provide a ZMI user
+ interface for Zope 3 components.
+
+ Zope 2.8+ includes the essential Zope 3 packages, so it is not
+ necessary to install Zope 3.
+
+
+ Zope 3 Interfaces
+
+ Everything in the zope.interface package should work. Zope 3 interfaces
+ are the foundation of the component architecture, and also the foundation
+ of schemas.
+
+ Historically, Zope 2 has used the ``__implements__`` class attribute for
+ interface declarations. Zope 2 cannot detect Zope 3 interfaces and the
+ Zope 3 machinery cannot detect Zope 2 interfaces. This is a good thing,
+ as Zope 2 has no way to deal with Zope 3 interfaces, and Zope 3 cannot
+ work with Zope 2 interfaces. This means you can safely make a class
+ declare both a Zope 2 and Zope 3 interface independently from each
+ other. It's a rare case where you need this - you're usually better off
+ just switching to ``implements()`` for your application possible.
+
+ Switching from Zope 2 interfaces to Zope 3 interfaces is easy -- just
+ make your interfaces inherit from ``zope.interface.Interface`` instead
+ of ``Interface.Interface`` (or ``Interface.Base``). Next, change all
+ ``__implements__`` to ``implements()``.
+
+ You will also have to change any calls to ``isImplementedBy`` and such
+ in your application to ``providedBy``, as ``isImplementedBy`` has been
+ deprecated (you'll see the DeprecationWarnings in your Zope log).
+
+
+ ZCML
+
+ ZCML is the Zope Configuration Markup Language, an XML application.
+ Zope 3 code consists of a lot of components that can be plugged together
+ using ZCML.
+
+ If you put a 'site.zcml' in the home directory of your Zope instance,
+ this is the root of the ZCML tree. An example of 'site.zcml' is in
+ 'site.zcml.in'. If you don't place a site.zcml, Five falls back on
+ 'fallback.zcml'.
+
+ ZCML in Zope 2 with Five has a special directive, 'five:loadProducts',
+ to load the ZCML ('meta.zcml', 'configure.zcml') of all installed
+ Zope 2 products, if available.
+
+ Another special directive, 'five:loadProductsOverrides' is available to
+ load any overriding ZCML (overrides.zcml) in these products. In the
+ 'overrides.zcml' you can override existing views or adapters, in this
+ or in other products.
+
+ The Five integration layer tries to use the Zope 3 ZCML directives where
+ possible, though it does sometimes support only a subset of the possible
+ attributes. It also introduces a few directives of its own under the
+ ``five`` namespace. The supported directives are listed per namespace
+ in alphabetic order below.
+
+ zope ``http://namespaces.zope.org/zope``
+ ========================================
+
+ adapter
+ -------
+
+ Hook an adapter factory to an interface.
+
+ content
+ -------
+
+ Declare interface and permissions on content object. Declares Zope 2
+ permissions.
+
+ permission
+ ----------
+
+ Way to make Zope 2 permissions available to Five, ``title`` is
+ permission name.
+
+ redefinePermission
+ ------------------
+
+ Redefine a permission in included ZCML as another one.
+
+ service
+ -------
+
+ Declare a global service
+
+ serviceType
+ -----------
+
+ Declare a type of service.
+
+ skin
+ ----
+
+ Declare a skin, consisting of layers.
+
+ utility
+ -------
+
+ Declare a global utility.
+
+ browser ``http://namespaces.zope.org/browser``
+ ==============================================
+
+ page
+ ----
+
+ Declare a page view for an interface. Permission is a Zope 2
+ permission.
+
+ pages
+ -----
+
+ Declare multiple page views for an interface. Permissions are Zope 2
+ permissions.
+
+ defaultView
+ -----------
+
+ Declare the name of the view that should be used for the default when
+ viewing the object; i.e. when the object is traversed to without a view.
+
+ defaultSkin
+ -----------
+
+ Declare the default skin used.
+
+ interface
+ ---------
+ Define an interface in ZCML.
+
+ layer
+ -----
+
+ Declare a layer.
+
+ menu
+ ----
+
+ Declare a menu
+
+ menuItem, menuItems
+ -------------------
+
+ Declare menuItems
+
+ five ``http://namespaces.zope.org/five``
+ ========================================
+
+ implements
+ ----------
+
+ Make a class declare it implements an interface.
+
+ loadProducts
+ ------------
+
+ Loads ZCML in all Zope 2 products. First processes all ``meta.zcml``
+ files, then processes all ``configure.zcml`` files.
+
+ loadProductsOverrides
+ ---------------------
+
+ Loads overriding ZCML in all products (``overrides.zcml``).
+
+ traversable
+ -----------
+
+ Make a Zope 2 content class traversable in the Zope 3 manner using
+ Five. This is used to attached views, resources and other things to
+ Zope 2 objects.
+
+ defaultViewable
+ ---------------
+
+ Make a Zope 2 content class use a Zope 3 default view when looking at
+ it without any paths appended to it. This works then instead of
+ ``index_html`` in Zope 2.
+
+ pagesFromDirectory
+ ------------------
+
+ Load all *.pt files in a directory as pages. Useful when you want to
+ share templates between Five and CMF, so you can declare pages like
+ this is a similar way to setting up skin folders in portal_skins.
+
+ browser:editform
+ ----------------
+
+ Create an edit form based on a schema.
+
+ browser:addform
+ ---------------
+
+ Create an add form based on a schema.
+
+
+ Adapters
+
+ Generally, adapters can now be used in Zope 2 just as they are used in
+ Zope 3.
+
+
+ Zope 3 Views
+
+ Zope 3 views work in Zope 2 with Five, including layers and skins. To
+ make them work however, you need to make a Zope 2 class "traversable".
+ This can be done by using the 'five:traversable' directive in ZCML.
+
+
+ Schemas and Forms
+
+ With the Five layer, it is possible to use schema-based content using
+ the standard Zope 3 patterns.
+
+
+ Security declarations
+
+ Five aims to eradicate declareProtected, ClassSecurityInfo and
+ initializeClass from your Zope 2 code.
+
+ In order to do this, Five provides the Zope 3 way of declaring
+ permissions from ZCML, but uses the Zope 2 mechanisms to actually set
+ them. To declare permissions for methods and templates on views you use
+ the permission attribute on the browser:page directive, and specify a
+ Zope 2 permission (given a Zope 3 name). You can find a list of these
+ permissions in permissions.zcml in Five. The permission check takes
+ place before the view is executed.
+
+ The content directive can also be used to declare permissions on Zope 2
+ content classes. Note however that these permissions will be ignored by
+ views anyway, as they are trusted -- it only serves to protect directly
+ exposed methods on content classes (the python scripts and the ZPublisher).
Property changes on: Zope/branches/five-integration/doc/ZOPE3.txt
___________________________________________________________________
Name: svn:executable
+ *
More information about the Zope-Checkins
mailing list