[Zope] [ZGotW] Issue #7 (Closed)
Zope Guru of the Week
ZGotW@palladion.com
Tue, 21 Mar 2000 20:18:55 US/Pacific
The current issue of "Zope Guru of the Week" has closed:
===================================================================
Issue #7 -- To ZClass or not to ZClass?
===================================================================
Status: Closed
Zen Level: Chela (4/8)
Keywords: ZClasses
Submitted by: Tres Seaver tseaver@palladion.com
-------------------------------------------------------------------
When building a Product using ZClasses, I often want to create
a "root" ZClass, which the manager will create in a normal
folder, and which will then expose the Product's other ZClasses
in its Add list. The DTML methods for the root are thus defined
within this root ZClass.
The Product ends up looking like::
Control Panel
+- FooProduct
+ FooItem_add_permission
+-FooRoot
+- FooItem
+- FooItem_add
+- FooItem_addForm
+- FooItem_factory
....
+- index_html
+- some_root_method_dtml
+ FooRoot_add
+ FooRoot_addForm
+ FooRoot_Factory
+ FooRoot_add_permission
* What are the drawbacks to this approach?
* Suggest alternatives.
-------------------------------------------------------------------
Reviewed by: Tres Seaver tseaver@palladion.com
-------------------------------------------------------------------
Hmmm, I don't seem to be doing so well on picking topics. Here
is what I had in mind:
* This site is an instance of the
"ZGotW product":http://www.zope.org/Members/tseaver/ZGotW,
which has a "main" factory, ZGotWRoot_factory, in its root
folder.
* This factory does *not* create an instance of a "folderish"
ZClass, but rather, creates a normal Folder and populates
it from a set of default DTML objects, along with a ZCatalog.
* Individual issues of ZGotW are created within this folder
as instances of the ZClass, ZGotWIssue, using the code in
those "cloned" DTML objects.
My rationale for adopting this approach, rather than creating
a "folderish" ZClass, was to allow each instance of the "root"
to be independently customized; the "common" behavior of a
ZGotW site is included in a set of utility methods, which can
be tweaked to enforce different policies, or change the
look-and-feel of a particular site.
The downside to this choice is duplication of code: should I
find a bug in the original, default code, I have to then fix it
in each instance as well as the Product.
Comments, anyone?
-------------------------------------------------------------------