Commit d45ac7a3 authored by Hanno Schlichting's avatar Hanno Schlichting

Updated Five documentation to clarify its role in regard to Zope packages.

parent 000c143e
...@@ -11,6 +11,8 @@ Trunk (unreleased) ...@@ -11,6 +11,8 @@ Trunk (unreleased)
Restructuring Restructuring
+++++++++++++ +++++++++++++
- Updated Five documentation to clarify its role in regard to Zope packages.
- Removed the deprecated ``five:containerEvents`` directive, which had been - Removed the deprecated ``five:containerEvents`` directive, which had been
a no-op for quite a while. a no-op for quite a while.
......
============
Five Changes
============
This change log is discontinued. For changes after Five 1.5.2 see Zope's main
CHANGES.txt file.
Five 1.5.2 (2007-01-10)
=======================
* Added support for the <securityPolicy /> ZCML directive known from
Zope 3.
* View methods which aren't explicitly declared as allowed must be marked
private explicitly to avoid being web publishable.
* i18n: Synced FiveTranslationService implementation with Zope 3.3. This makes
sure that the TestMessageFallbackDomain is used if registered.
* site/metaconfigure: Local site hook now only applied once per class, so
multiple <five:localsite> tags for the same class won't cause config
errors.
Five 1.5.1 (2006-11-04)
=======================
* site: Fixed small bug in FiveSiteManager. (issue #2198)
* browser: processInputs now decodes strings in lists and tuples.
* formlib: Removed redundant subpageform.pt and pageform.pt. Added missing
error view configuration.
* Made the __call__ method of ViewMixinForAttributes have the same signature
as the original attribute. This aids some pathological request parameter
marshalling.
* Fixed #2168: Missing import
* Port code from Zope 3 making resource directories recursive.
Thanks to Richard Waid.
Five 1.5 (2006-08-13)
=====================
* Enabled the viewlet related directives by default.
* Added acquisition wrappers to viewlets before updating or rendering.
* Allow multiple uses of the <class>/<content> directive.
* Moved the custom 'provider:' tales expression back into Five. Made the
provider directive acquisition wrap the resultant content provider so that
simple providers that need security declarations (e.g. those that render
pagetemplates) can work with the Zope 2 security machinery.
* Added Five.browser.pagetemplatefile.ViewPageTemplateFile as an alias
to ZopeTwoPageTemplateFile and as a Zope 2 correspondence to
zope.app.pagetemplate.ViewPageTemplateFile.
* Added tests to make sure that views are not blocked by acquired attributes.
* Changed the tests to reflect that defaultView no only works for views
(and not on attributes).
* The FiveSiteManager classes now work again, but are deprecated for the
new zope.component support. There is also a method to migrate Five.site
to zope.component.
Five 1.5c (2006-05-29)
======================
Restructuring
-------------
* Zope 2.10+ now includes site.zcml as part of its instance creation
skel directory. As a consequence Five now requires this file to exist
in every instance. If upgrading a site from Zope 2.9 to 2.10, you will
need to copy site.zcml and package-includes/ from your installed Zope
installation location (skel/etc/) into the etc/ directory of your upgraded
instance.
The rationale for requiring this new file is to bring Zope 2 instances
closer in consistency to Zope 3 instances. It also eases use of Zope 3
coding techniques in Zope 2 and removes some confusion when trying
to run pure Zope 3 applications on Zope 2.
* Zope 2.10+ uses the Zope 3 PageTemplate engine (incl. TAL and
TALES). A bunch of special and magic code in Five has become
obsolete with this, some other had to be readjusted.
Bugfixes
--------
* Fixed an issue where <browser:page> based views that didn't have
template or attribute defined weren't getting BrowserView mixed in.
* Fixed an issue where new-style classes could not be used for
view components with <browser:page>.
* Provided the 'default' layer alias for backwards compability. It
was deleted by accident during the Zope 3.3 port.
* Five.testbrowser does not swallow cookies anymore, based on patch by
Daniel Nouri.
* Five.testbrowser capitalizes headers in the same way as the Zope2
HTTPResponse. i.e. content-length -> Content-Length.
Five 1.5b (2006-05-04)
======================
Features
--------
* Support for Zope 3.3. This requires Zope 2.10.
* five:defaultViewable and five:traversable are now unessecary and
deprecated, as the functionality exists in the Zope core publisher
from Zope 2.10 and up.
Five 1.4.2 (2006-11-04)
=======================
Bugfixes
--------
* browser: processInputs now decodes strings in lists and tuples.
* formlib: Removed redundant subpageform.pt and backported pageform.pt fixes
from Zope 3. Added missing error view and i18n configuration.
This change requires Zope 2.9.5 or higher.
* Made the __call__ method of ViewMixinForAttributes have the same signature
as the original attribute. This aids some pathological request parameter
marshalling.
* Backported Zope 2.10's pythonproducts zope app handling to help resolve
an issue with ConnectionStateError's.
* Port code from Zope 3 making resource directories recursive.
Thanks to Richard Waid.
Five 1.4.1 (2006-08-13)
=======================
Bugfixes
--------
* Allow multiple uses of the <class>/<content> directive.
* Fix problem with WebDAV/HEAD requests due to new traversal order.
* Made the pythonproducts monkey patching more robust by checking to
ensure patches aren't reapplied and cleaning up after itself.
* Backported the new traversal lookup order from Zope 2.10 (attribute, adapter,
acquired attribute).
* Made the provider directive acquisition wrap the resultant content provider
so that simple providers that need security declarations (e.g. those that
render pagetemplates) can work with the Zope 2 security machinery.
* Added acquisition wrappers to viewlets before updating or rendering.
Restructuring
-------------
* Enabled the viewlet related directives by default.
* Added Five.browser.pagetemplatefile.ViewPageTemplateFile as an alias
to ZopeTwoPageTemplateFile and as a Zope 2 correspondence to
zope.app.pagetemplate.ViewPageTemplateFile.
Five 1.4 (2006-05-29)
=====================
Bugfixes
--------
* Fixed an issue where <browser:page> based views that didn't have
template or attribute defined weren't getting BrowserView mixed in.
* Fixed an issue where new-style classes could not be used for
view components with <browser:page>.
* Five.testbrowser does not swallow cookies anymore, based on patch by
Daniel Nouri.
* Five.testbrowser capitalizes headers in the same way as the Zope2
HTTPResponse. i.e. content-length -> Content-Length.
Five 1.4c (2006-05-04)
======================
Features
--------
* Added Viewlet and Content Provider support.
Bugfixes
--------
* Made sure that events are fired as expected in add and edit forms.
* Made sure LocalizerLanguages class normalized language codes to
xx-yy, instead of xx_YY or xx-YY.
* Fixed a problem with the new traversal look-up order and the root
object (OFS.Application.Application).
Five 1.4b (2006-03-31)
======================
Features
--------
* Add python-packages-as-zope-products support which basically allows
for using any python package as a zope product without it having to
live in Products/
* Add zope.formlib support. Please see ``doc/formlib.txt`` for more
information.
* Port zope.testbrowser to Zope 2. You can now use
Products.Five.testbrowser.Browser in functional tests.
* Make the ``browser:addMenuItem`` directive available.
* Add a file argument to the five:loadProducts and
five:loadProductOverrides directives. Use this in the Five site.zcml
to load all the Product meta before any Product configure.
NOTE: Anyone who copied the Five site.zcml to their
$INSTANCE_HOME/etc/ directory is going to need to update it.
Five 1.3.8 (2006-11-04)
=======================
Bugfixes
--------
* browser: processInputs now decodes strings in lists and tuples.
* Port code from Zope 3 making resource directories recursive.
Thanks to Richard Waid.
* Made the __call__ method of ViewMixinForAttributes have the same signature
as the original attribute. This aids some pathological request parameter
marshalling.
Five 1.3.7 (2006-08-13)
=======================
Bugfixes
--------
* Allow multiple uses of the <class>/<content> directive.
* Fix problem with WebDAV/HEAD requests due to new traversal order.
* Backported the new traversal lookup order from Zope 2.10 (attribute, adapter,
acquired attribute).
* fiveconfigure.py: Removed import of deprecated 'LOG' object from 'zLOG'
in favor of the facilities provided by Python's 'logging' module.
Five 1.3.6 (2006-05-29)
=======================
Bugfixes
--------
* Fixed an issue where <browser:page> based views that didn't have
template or attribute defined weren't getting BrowserView mixed in.
* Fixed an issue where new-style classes could not be used for
view components with <browser:page>.
Five 1.3.5 (2006-05-04)
=======================
Bugfixes
--------
* Made sure that events are fired as expected in add and edit forms.
* Made sure LocalizerLanguages class normalized language codes to
xx-yy, instead of xx_YY or xx-YY.
* Fixed a problem with the new traversal look-up order and the root
object (OFS.Application.Application).
Five 1.3.4 (2006-03-31)
=======================
Bugfixes
--------
* Added the ``class`` ZCML directive as an alias to ``content``.
Five 1.3.3 (2006-03-26)
=======================
This version is also included in Five 2.9.2
Bugfixes
--------
* Fixed look-up order during Five traversal. It is now as follows:
1. If an object has __bobo_traverse__, use it.
2. Otherwise do attribute look-up or, if that doesn't work, key item
lookup.
3. If neither __bobo_traverse__ nor attribute/key look-up work, it
tries to find a Zope 3-style view.
This change requires Zope 2.9.2 or higher.
* A local utility registered with an derived interface will now be available
by the inherited interface as well, in the same way as Zope3.
Five 1.3.2 (2006-02-25)
=======================
Bugfixes
--------
* Five's traversing machinery now mimicks the ZPublisher correctly:
When no Zope 3-style view is found, first the object's original
``__bobo_traverse__`` is tried. If that does not exist, Traversable
resorts to attribute look-up.
* Unit tests that did i18n via Localizer would fail because the
request attribute that keeps Localizers list of preferred languages
did not exist.
Five 1.3.1 (2006-01-08)
=======================
Bugfixes
--------
* Fix an adapter look-up bug in the local site implementation that was
due to an oversight during the port to Zope 3.2.
Five 1.3 (2006-01-07)
=====================
This version is also included in Zope 2.9.0.
Bugfixes
--------
* Fix functional test for local sites and re-enable it for standard
test runs.
* If one class was set to have a localsite hook twice, removing the hook
would be attempted twice during the cleanup of unit tests, and the
tests would fail.
* Fix cleanup of five:traversable.
Five 1.3c (2005-12-06)
======================
This version is also included in Zope 2.9b1.
Restructuring
-------------
* (b6) No longer use the ``defaultLayer`` directive, it's been deprecated.
* (b4) Cleaned up security test.
* (b4) Made Five send a ContainerModifiedEvent when appropriate.
Bugfixes
--------
* (b6) Fixed the form i18n messages to work with Zope 3.2 beta 1.
* (b3) Made the creation of custom skins work again. It was broken in
the port to Zope 3.2.
* (b2) Fixed bug that broke WebDAV access for five:defaultViewable
objects. The __browser_default__ now modifies only GET and POST
requests.
* (b2) Fixed some event recursion compatibility modes.
Five 1.3b (2005-11-02)
======================
Restructuring
-------------
* Support for Zope 3.2 was added. Five now requires Zope 2.9 (which
ships with Zope 3.2).
* As scheduled, the temporary fork of the new test runner
(``zope.testing``) at ``Five.testing`` was removed. So was the
``runtests.py`` script. Use the regular Zope test runner
(``test.py`` or ``bin/zopectl test``) to run tests.
* To reflect the Component Architecture simplification in Zope 3 since
the X3 3.0 release, ``IFiveUtilityService`` was renamed to
``IFiveUtilityRegistry`` and ``SimpleLocalUtilityService`` was
renamed to ``SimpleLocalUtilityRegistry``. The old names are still
available for a short period of time.
* Event support: ``<five:containerEvents/>`` is the default.
* Due to an incompatability with Zope 3.2's ObjectWidget and Zope 2's
Page Templates, Five now ships with its own ObjectWidget
implementation (which is just a thin wrapper around Zope's one to
make it work in Zope 2). If you use the ObjectWidget, please change
your imports to ``Products.Five.form.objectwidget.ObjectWidget``.
* Backwards compatability for Zope 3-style interfaces of Zope 2
components has been removed as that functionality is now in the Zope
2 core as of Zope 2.9.
Five 1.2.6 (2006-08-13)
=======================
* Allow multiple uses of the <class>/<content> directive.
* Fix problem with WebDAV/HEAD requests due to new traversal order.
* Backported the new traversal lookup order from Zope 2.10 (attribute,
adapter, acquired attribute).
Five 1.2.5 (2006-05-29)
=======================
Bugfixes
--------
* Fixed an issue where <browser:page> based views that didn't have
template or attribute defined weren't getting BrowserView mixed in.
* Fixed an issue where new-style classes could not be used for
view components with <browser:page>.
Five 1.2.4 (2006-05-04)
=======================
Bugfixes
--------
* Made sure that events are fired as expected in add and edit forms.
* Made sure LocalizerLanguages class normalized language codes to
xx-yy, instead of xx_YY or xx-YY.
* Fixed a problem with the new traversal look-up order and the root
object (OFS.Application.Application).
Five 1.2.3 (2006-03-31)
=======================
Bugfixes
--------
* Added the ``class`` ZCML directive as an alias to ``content``.
Five 1.2.2 (2006-03-26)
=======================
Bugfixes
--------
* A local utility registered with an derived interface will now be available
by the inherited interface as well, in the same way as Zope3.
* Fixed look-up order during Five traversal. It is now as follows:
1. If an object has __bobo_traverse__, use it.
2. Otherwise do attribute look-up or, if that doesn't work, key item
lookup.
3. If neither __bobo_traverse__ nor attribute/key look-up work, it
tries to find a Zope 3-style view.
Five 1.2.1 (2006-02-25)
=======================
Bugfixes
--------
* Five's traversing machinery now mimicks the ZPublisher correctly:
When no Zope 3-style view is found, first the object's original
``__bobo_traverse__`` is tried. If that does not exist, Traversable
resorts to attribute look-up.
* Unit tests that did i18n via Localizer would fail because the
request attribute that keeps Localizers list of preferred languages
did not exist.
Five 1.2 (2006-01-07)
=====================
Bugfixes
--------
* Fixed bug that broke WebDAV access for five:defaultViewable objects. The
__browser_default__ now modifies only GET and POST requests.
* Fixed some event recursion compatibility modes.
* Fixed loops in zcml loading due to events in some cases.
* Made Five send a ContainerModifiedEvent when appropriate.
* Fix cleanup of five:traversable.
* If one class was set to have a localsite hook twice, removing the
hook would be attempted twice during the cleanup of unit tests, and
the tests would fail.
Restructuring
-------------
* Cleaned up security test.
* Added monkey so that ++skin++ works with Zope <= 2.8.4.
Five 1.2b (2005-11-02)
======================
Features
--------
* Added IMarkerInterfaces adapter: This adapter provides methods for
inspecting and assigning marker interfaces. 'edit-markers.html' (or
'manage_interfaces' in the ZMI) allows to change the behavior of specific
objects by adding or removing marker interfaces TTW.
* Added the five:registerClass directive: This does the necessary Zope 2
registration for Five-based content. It is no longer necessary to add an
``initialize()`` function to the product's __init__ in order to register
a meta type to be addable through the ZMI. See doc/products/ViewsTutorial
for an example how to use the directive.
* Local site support: Five has now support for creating local sites
and thereby local utilities. This is mostly needed for allowing CMF
to convert it's portal tools into local utilities. See
doc/localsite.txt for more information
* Event support: When ``<five:containerEvents/>`` is specified, Five
makes the standard Zope 2 containers send events instead of using
manage_afterAdd, manage_beforeDelete and manage_afterClone. These
methods are still called for a class declared
``<five:deprecatedManageAddDelete class=.../>``, and are called in
compatibility mode with a deprecation warning for classes that don't
use this directive.
Restructuring
-------------
* Removed backwards compatibility for Five 1.0 Zope core interfaces.
* Removed backwards compatibility for Zope 2.7 and 2.8.0.
* Added a (temporarily) forked copy of the "new-and-improved" test
runner and supporting ``zope.testing`` package, lifted from
http://svn.zope.org/zope.testing. This code should be removed for
Five 1.3, which will use the updated version of ``zope.testing`` in
the Zope 2.9 / Zope 3.2 tree.
There is a test runner invoking script in the ``Five`` package. For
example, to run the Five tests with the new test runner, simply
execute the following command line from your instance home::
$ bin/zopectl run Products/Five/runtests.py -v -s Products.Five
* Moved the ``Five.testing`` package down to ``Five.tests.testing``,
in order to make room for the 'zope.testing' code.
* Removed backwards compatibility for some moved classes (AddForm,
EditForm, ContentAdding)
Five 1.1 (2005-10-04)
=====================
Features
--------
* When Zope was not in debug mode, an error in a ZCML file would cause Five to
stop loading ZCML completely, making all subsequent products "dead". The
effect would typically be that objects appeared to have no views at all.
Now a ZCML error will only stop the ZCML loading for that product, but the
rest of the products will load as usual. A traceback will still be printed
in the event log.
In debug mode the behaviour has not changed; a ZCML error will stop Zope
startup completely, and print a traceback if running in foreground mode.
Restructuring
-------------
* The deprecated FivePageTemplateFile was removed, and the erroneous use of
this by EditView was changed.
Bugfixes
--------
* Repaired 'forms.txt' test which expected an error page when passing
'handle_errors' as False; it now expects an Unauthorized traceback.
Note that this test fails on Zope 2.8.1, which incorrectly ignored
'handle_errors'.
* FiveTraversable should only do a view lookup and not call the traverse
method of its superclass.
* Fixed manage_beforeDelete triggering for classes using five:sendEvents.
* The redefinePermission directive was falsely registered under the
``zope`` namespace, not the ``meta`` namespace as it is in Zope 3.
* Some parts of add.pt and edit.pt were not translated correctly or not
translated at all. The fix depends on TAL changes in Zope 2.8.1 and changes
in Zope X3-3.0.1 (shipped with 2.8.1). Form i18n is still broken with older
Zope versions.
* 'zope' domain translations are now set up by default. Form i18n needs them.
* Added backwards compatibility for some moved classes (AddForm, EditForm,
ContentAdding)
* The ZPT variable 'container' makes little sense in Zope3/Five, but is now
always set to be the same as 'here' which is normal Zope2 behaviour.
It is in Five 1.0.x set to be the same as 'view' which breaks some templates.
* In some hard to replicate cases, using the "modules" variable in ZPT cause
an AuthenticationError. Using the secure module importer fixes this.
* If you used some parts of Zope 3 (for example the mail delivery) Five 1.1
transaction backport would conflict with Zope 3s transaction module.
This is now solved.
Five 1.1b (2005-07-13)
======================
Features
--------
* Zope 3-style i18n support has been provided. Apart from being able
to register translations through ZCML, Five now lets Zope 2 ZPTs
automatically use Zope 3 translation domains. Fallback to an
old-style translation service (e.g. Localizer or PTS) is supported.
This also includes the detection of preferred languages. See
``doc/i18n.txt`` for more information.
* Added support for Zope 3 -> Zope 2 interface bridging. This
functionality will be part of Zope 2.9, with Five you can already
use it in Zope 2.7/2.8. Since Zope 2 interfaces are rarely used and
their Zope 3 equivalents are more meaningful (for the Component
Architecture), the preferred way of dealing with interface migration
is to write Zope 3 interfaces and bridge them to Zope 2 ones as
needed. To bridge, use the ``Interface.bridge.fromZ3Interface()``
function.
* Support for the standard <factory />, <modulealias /> and <hook />
ZCML directives was added.
* The default browser view name for all objects is now 'index.html',
just as it is in Zope 3. This means that a view by that name will
be looked up if no specific view name is given in the URL.
Restructuring
-------------
* Restructured the Five source code to be easier to navigate in.
Three subpackages were created, Five.browser, Five.form and
Five.skin.
* The former test product, ``FiveTest``, was converted into separate
modules that provide the mock objects for the corresponding tests
and are located right next to them. Common test helpers have been
moved to the Five.testing package. Overall, the testing framework
was much simplified and the individual tests clean up after
themselves much like they do in Zope 3.
* Relocated Zope core interfaces. Future Zope versions will ship with their
own z3 interfaces. Five now patches the older Zope versions to make sure
you can always find the interfaces in 'AccessControl.interfaces',
'Acquisition.interfaces', 'App.interfaces', 'OFS.interfaces' and
'webdav.interfaces'. Please don't use the aliases in 'Five.interfaces' or
'Five.bbb.*interfaces' - they are only provided for backwards
compatibility.
* Zope 2.8 HTTPRequest is no longer patched. It has the required methods.
Bugfixes
--------
* The ZPT variable 'container' did not always contain the parent object
of the context.
* The deprecated get_transaction method is no longer used in Zope 2.8.
Five 1.0.2 (2005-07-12)
=======================
This version is also included in Zope 2.8.1
* Fixed some issues with bridged interfaces: Bases and Methods were not
bridged correctly. extends() was never True.
* zope.security.checkPermission now behaves exactly like
Five.security.checkPermission (in fact, the former now calls the
latter through the indirection of Zope 3 security policies).
* Fixed a bug with resource directories. Resources within those were
not rendering their absolute URL correctly.
Five 1.0.1 (2005-05-31)
=======================
This version is also included in Zope 2.8.0
* Changed license headers to the ones used in the Zope.org repository.
This makes merging between the main development line of Five (hosted
on codespeak.net) and the version integrated into Zope 2.8 much
easier. The actual copyright ownership isn't affected because Five
had been contributed to the Zope project anyway (which was blessed
by all Five contributors).
* Made automatically generated add and edit forms unicode-aware.
ZPublisher does not automatically decode incoming form values to
unicode, so AddView and EditView emulate this behaviour themselves
now. They also take care of setting the right charset on the
outgoing form so that ZPublisher will encode it accordingly when
sending the response to the client. (In Zope 3, all charset
negotation between the client and the server takes place in the
publisher.)
* Added ``IHTTPCharset`` adapter for ``IHTTPRequest`` so that
application can find out the preferred character set of the HTTP
client (Zope 2 applications needs to take care of their own charset
header). The adapter is used for the automatically-generated forms
when determining encodings for unicode field content.
* Modified edit.pt to make sure editforms have only one body tag.
* Fixed the ``INameChooser`` adapter for ObjectManagers (e.g. Zope 2
folders) and added unit tests.
* Fixed small bug in BrowserDefault which caused an error if the class is
defaultViewable but the object's interfaces have no defaultView.
Five 1.0 (2005-04-27)
=====================
Features
--------
* Zope 3 style ``ISized`` adapters for objects are now exposed to the
ZMI and other Zope 2 frameworks via the known ``get_size`` method,
provided this is turned for the class in question via the
five:sizable ZCML directive.
* There is now a standard standard_macros. Five page templates can use
context/@@standard_macros/view to get the default site layout, and
people can register their own standard_macros in a skin.
* The addform and editform directive now supports the widget ZCML
subdirective, which previously was ignored.
* Five now supports the vocabulary ZCML directive.
Bugfixes
--------
* Add and edit forms are now protected properly.
* The checkbox widget did not work correctly in its off state, this
has been fixed.
Five 0.3 (2005-03-11)
=====================
* Five now uses the Zope 2 page template engine, not the Zope 3
engine. This allows better integration with Zope 2-based page
templates, such as macros.
It uses TrustedExecutables technology (thanks to Dieter Maurer) to
turn off Zope 2 security in page templates, so Five's security
behavior is very similar to what it was before.
* Five now supports the browser:menu, menuItem and menuItems
directives.
* A new Five-specific directive has been added:
five:pagesFromDirectory. This adds one page for each .pt file in a
directory to the specified interface. This is useful for Five
integration with CMF and other systems that have Page Templates
macros that need to be shared between Zope2 and Five.
* Five.security.checkPermission has been changed from a (unused)
method for checking the existence of permissions. Use
zope.app.security.permission.checkPermission if you need that
functionality.
Instead Five.security.checkPermission is now a Five version of
zope.security.checkPermission, which checks if the current user has
a permission on an object.
* Support for browser:editform. You can now use schemas for editing.
* Support for browser:addform; add forms using '+'. You can now browse
to 'container/+/addsomething.html' to get to a schema-driven add
form.
* Fixed a traversal bug which caused Zope to give the wrong error when
a page could not be found (missing docstring instead of not
found). Zope 2.7.4 (or higher) is required for this fix.
Five 0.2b (2004-09-24)
======================
* Added utility module, 'bridge', allowing reuse of Zope 2 interfaces
(by introspecting them to create equivalent Zope 3 interfaces).
* five:viewable was renamed to five:traversable, five:viewable still
works but is deprecated; a deprecation warning is emitted when it is
used.
* like in Zope3, an ITraverser adapter is looked up to determine what
happens when traversing into a Five traversable object.
* added five:defaultViewable to make instances of a class directly
viewable using browser:defaultView. This is hookable by the use of a
IBrowserDefault adapter
* deprecated use of Products.Five.api as public API for other products
to use, instead import directly from Products.Five. Retired
Traversable and Viewable from the public API; use ZCML directives
(five:traversable, five:defaultView) instead of mixins to make
instances of classes work with Five.
* classes that Five monkeypatches now have a __five_method__
attribute, making it easier for Five not to stomp on existing methods.
* registered absolute_url view and IAbsoluteURL adapter for *
* zope.app.traversing is registered by default, to make special
namespaces available (eg: @@, ++resource++)
* we now have resources (FileResource, ImageResource,
PageTemplateResource) and directory resources.
* Zope 3 'StandardMacros' now works with Five as well.
* browser:page now correctly handles the allow_attributes and protects
the named attributes on the view with the same permission used for
the view.
* zopeconf.py will try to find etc/zope.conf on INSTANCE_HOME. This
requires Zope 2.7.2, as earlier Zope versions have a bug in this
area which causes them to look in lib/python/Testing.
* Exposed the Zope 3 event system to Five. A class can be made to send
out event notifications using the five:sendEvents directive. Events can
be subscribed to using the subscriber directive.
* Change in findProducts so that non-filesystem products are skipped.
Five 0.1 (2004-07-30)
=====================
Initial public release (mainly Martijn's work)
...@@ -6,7 +6,7 @@ Five contributors. ...@@ -6,7 +6,7 @@ Five contributors.
Five contains source code derived from: Five contains source code derived from:
- Zope 3, copyright (C) 2001-2005 by Zope Corporation. - Zope, copyright (C) 2001-2005 by Zope Corporation.
- metaclass.py is derived from PEAK, copyright (C) 1996-2004 by - metaclass.py is derived from PEAK, copyright (C) 1996-2004 by
Phillip J. Eby and Tyler C. Sarna. PEAK may be used under the same Phillip J. Eby and Tyler C. Sarna. PEAK may be used under the same
......
...@@ -53,5 +53,5 @@ world. ...@@ -53,5 +53,5 @@ world.
Dieter Maurer for use of code from TrustedExecutables within Five Dieter Maurer for use of code from TrustedExecutables within Five
under the ZPL. under the ZPL.
The Five developers would like to thank the Zope 3 developers, in The Five developers would like to thank the Zope developers, in
particular Jim Fulton, for the mountain to stand on. particular Jim Fulton, for the mountain to stand on.
...@@ -15,32 +15,19 @@ THE LAW OF FIVES IS NEVER WRONG." -- Principia Discordia ...@@ -15,32 +15,19 @@ THE LAW OF FIVES IS NEVER WRONG." -- Principia Discordia
What is Five? What is Five?
------------- -------------
The goal of five is to allow Zope 2 developers to use Zope 3 A couple of years back an attempt was made to rewrite Zope 2 from scratch and
technology right now, inside of Zope 2. Additionally, this allows a provide an upgrade path from current Zope 2 to the new version. This project
gradual evolution of Zope 2 code to Zope 3. used the name Zope 3. The attempt of writing a newer version of a full blown
application server similar to Zope 2 failed. Instead the project generated a
Five already makes the following Zope 3 technologies available in Zope whole lot of underlying technologies and new concepts packaged up in reusable
2: libraries.
* Zope 3 interfaces Five is the project that integrates those technologies and packages into
Zope 2. It's name is a pun on the original naming of Zope 2 + Zope 3 = Zope 5.
* ZCML (Zope Configuration Markup Language) Among others, it allows you to use zope.interface, ZCML-based configuration,
adapters, browser pages (including layers, and resources), zope.schemas,
* Adapters object events, as well as zope.i18n message catalogs.
* Zope 3 views, even for standard Zope objects We've tried to keep the Five experience as close to that of the integrated
Zope packages as possible, so this means that what you learn while using Five
* layers & skins should also be applicable to the Zope packages directly.
* schema/forms machinery, including edit and add forms.
* Zope 2 security declarations in ZCML instead of in Python code.
* Content Providers and Viewlets
For more information, see ``doc/features.txt``.
How to use Five
---------------
Please see ``doc/manual.txt``.
Five, a Zope Integration project
================================
What is Five?
-------------
A couple of years back an attempt was made to rewrite Zope 2 from scratch and
provide an upgrade path from current Zope 2 to the new version. This project
used the name Zope 3. The attempt of writing a newer version of a full blown
application server similar to Zope 2 failed. Instead the project generated a
whole lot of underlying technologies and new concepts packaged up in reusable
libraries.
Five is the project that integrates those technologies and packages into
Zope 2. It's name is a pun on the original naming of Zope 2 + Zope 3 = Zope 5.
Among others, it allows you to use zope.interface, ZCML-based configuration,
adapters, browser pages (including layers, and resources), zope.schemas,
object events, as well as zope.i18n message catalogs.
We've tried to keep the Five experience as close to that of the integrated
Zope packages as possible, so this means that what you learn while using Five
should also be applicable to the Zope packages directly.
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
# FOR A PARTICULAR PURPOSE. # FOR A PARTICULAR PURPOSE.
# #
############################################################################## ##############################################################################
"""Mimick the Zope 3 skinning system in Five. """Mimick the zope.app.basicskin skinning system.
$Id$ $Id$
""" """
......
...@@ -19,7 +19,7 @@ from zope.interface import implements, Interface ...@@ -19,7 +19,7 @@ from zope.interface import implements, Interface
from zope.component import adapts from zope.component import adapts
class IAdaptable(Interface): class IAdaptable(Interface):
"""This is a Zope 3 interface. """This is a Zope interface.
""" """
def method(): def method():
"""This method will be adapted """This method will be adapted
......
...@@ -24,9 +24,9 @@ class Two(object): ...@@ -24,9 +24,9 @@ class Two(object):
'Another class' 'Another class'
class IOne(Interface): class IOne(Interface):
"""This is a Zope 3 interface. """This is a Zope interface.
""" """
class ITwo(Interface): class ITwo(Interface):
"""This is another Zope 3 interface. """This is another Zope interface.
""" """
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
Container events Container events
================ ================
Zope 3 container events are used to inform subscribers that an object is Zope container events are used to inform subscribers that an object is
about to be added/removed from a container, and also after it has been about to be added/removed from a container, and also after it has been
done. This is used for bookkeeping and cleaning up in subobjects. done. This is used for bookkeeping and cleaning up in subobjects.
...@@ -155,7 +155,7 @@ Same thing for clone:: ...@@ -155,7 +155,7 @@ Same thing for clone::
Old class with deprecatedManageAddDelete Old class with deprecatedManageAddDelete
======================================== ========================================
We specifiy that our class is deprecated (using zcml in real life):: We specify that our class is deprecated (using zcml in real life)::
>>> setDeprecatedManageAddDelete(MyContent) >>> setDeprecatedManageAddDelete(MyContent)
>>> setDeprecatedManageAddDelete(MyFolder) >>> setDeprecatedManageAddDelete(MyFolder)
......
...@@ -20,11 +20,10 @@ def test_directives(): ...@@ -20,11 +20,10 @@ def test_directives():
""" """
Test ZCML directives Test ZCML directives
There isn't much to test here since the actual directive handlers There isn't much to test here since the actual directive handlers are
are either tested in other, more specific tests, or they're either tested in other, more specific tests, or they're already tested in
already tested in Zope 3. We'll just do a symbolic test of the original Zope packages. We'll just do a symbolic test of adapters and
adapters and overrides of adapters here as well as registering overrides of adapters here as well as registering meta directives.
meta directives.
But first, we load the configuration file: But first, we load the configuration file:
......
...@@ -40,9 +40,9 @@ using this name, since it is very generic and not very meaningful. The viewlet ...@@ -40,9 +40,9 @@ using this name, since it is very generic and not very meaningful. The viewlet
has no Java counterpart, since Java does not implement content providers using has no Java counterpart, since Java does not implement content providers using
a component architecture and thus does not register content providers a component architecture and thus does not register content providers
specifically for viewlet managers, which I believe makes the Java specifically for viewlet managers, which I believe makes the Java
implementation less usefull as a generic concept. In fact, the main design implementation less useful as a generic concept. In fact, the main design
goal in the Java world is the implementation of reusable and sharable goal in the Java world is the implementation of reusable and sharable
portlets. The scope for Zope 3 is larger, since we want to provide a generic portlets. The scope for Zope is larger, since we want to provide a generic
framework for building pluggable user interfaces. framework for building pluggable user interfaces.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment