[Zope-PTK] Portal content wherever you want it

Phillip J. Eby pje@telecommunity.com
Sun, 21 May 2000 14:25:01 -0500


At 12:05 PM 5/21/00 -0400, Kevin Dangoor wrote:
>
>We make a Portal Specialist that will provide all sorts of nice Portal-y
>features. It will accept PortalContent as plug-ins (much the same way that

>LoginManager accepts UserSources as plug-ins). So, you just plug in any
>types of Portal content you want to be available in that Portal. Within each
>of these plug-ins, you'll be able to define the display methods for that
>type of content. I'm not sure about the icons, because there might be some
>other hooks for that. We can probably assume that that will be changeable as
>well.

This is definitely one way to do it, but it might be more work than you
want, since you'd have to make the PortalContent objects explicitly ask
their DataManager for the DTML methods.  What you'll probably want to do
instead, is have the portal (or your /Members folder) be an InjectionFolder
with DataInjectors for each kind of PortalContent.  (See the new ZPatterns
wiki for info on InjectionFolders and DataInjectors, coming in 0.4.0.)


>I believe ZPatterns 0.4.0 will allow RackMountables to show up anywhere you
>want them, and will refer back to their DataManager for various things,
>including Indexing. Based on Phillip's message from this morning, that means
>you can put the PortalContent anywhere in your ZODB, and it will follow the
>review policies that you have set up. These would be pluggable.

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.)

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.