[Zope-PTK] Portal content wherever you want it

Kevin Dangoor kid@kendermedia.com
Sun, 21 May 2000 16:05:52 -0400


----- Original Message -----
From: "Phillip J. Eby" <pje@telecommunity.com>
To: "Kevin Dangoor" <kid@kendermedia.com>; "Steve Alexander"
<steve@cat-box.net>; "Chris Withers" <chrisw@nipltd.com>
Cc: <zope-ptk@zope.org>
Sent: Sunday, May 21, 2000 3:25 PM
Subject: Re: [Zope-PTK] Portal content wherever you want it


> (See the new ZPatterns
> wiki for info on InjectionFolders and DataInjectors, coming in 0.4.0.)

Thanks for the updated docs. When do you think 0.4.0 will be ready?

> Yes, exactly.  Specifically, you use an InjectionFolder-derived folder
> somewhere in the path to where your PortalContent DataSkins will be
stored.
>  You add DataInjectors to the approriate tab of the InjectionFolder,
> configuring them for what object types they will serve as DataManagers
for.
>  Last, but not least, you add IndexingAgents, RuleAgents,
> AttributeProviders and SheetProviders to each DataInjector to configure
it.
>  One kind of AttributeProvider you can add will be ClassExtender - a
simple
> container that lets you add methods and properties which will be set in
the
> DataSkins.  (ClassExtender probably won't get built until the 0.5.0 cycle,
> however.)

ClassExtender will be useful, indeed.

Maybe the Zope root should eventually be replaced with an InjectionFolder.
Or maybe we should set up objects to work regardless of whether there is a
DataInjector above them.

Here's what I'm ultimately thinking: wouldn't it be neato if I could create
a Document object in one part of the ZODB, and it doesn't get cataloged or
anything. In another part, I configure a DataInjector for Document so that
an IndexingAgent will catalog it and a RuleAgent will email people about the
addition.

In fact, I believe someone just sent a message to the Zope list within the
last 24 hours about getting DTML Documents to automatically index themselves
in ZCatalog.

> This all sounds rather complex, but that's probably due more to the funky
> names than anything else.  In all probability the front-end name of
> "DataInjector" will be "Customizer", and InjectionFolder will be "Folder
> w/Content Customizer Support".  So, in plain English...  You put your
> portal content objects somewhere underneath a folder with customizer
> support if you want to customize them.  You add a customizer to that
folder
> for each kind of thing you want to customize.  And you put things in each
> customizer for each data management, indexing, rule-handling, or other
> customization you want to make.

This is great! What happens in a scenario like this:

InjectionFolder A
  DataInjector for Documents
  InjectionFolder B
    DataInjector for Links
    Document

Will the Document in B be handled by A's DataInjector? In other words, are
DataInjectors acquired?

Also, do you forsee any big performance penalty for all of this wonderful
flexibility?

Kevin