AW: AW: [Zope3-dev] Re: AW: override metadirectives before use
themnotafterwards
Roger ineichen
dev at projekt01.ch
Tue Apr 27 04:16:39 EDT 2004
Philipp von Weitershausen wrote:
> Roger,
>
> >>Indeed, we won't have to. I recommend, if you need to override a
> >>directive, create a new one in a different namspace, e.g.
> >>
> >> <roger:containerView ... />
> >
> >
> > Yes, I know. That's the long way with a lot of work form
> everybody who
> > is using this package.
> >
> > Lets make a better example:
> > Let's say I whould change the template contents.pt which is
> imported
> > by the class Contents.py in the zope.app.container.browser
> package. I
> > have different ways to do so:
> >
> > 1. Write a own directive <roger:containerView ... /> and use them
> > everywhere.
> >
> > -1, it's to much work for just use another template.
> >
> > -1, needs a lot of changes in many configure.zcml's
> > You have to provide a own configure.zcml lib for this.
> >
>
> I've looked at the code now and I don't like what I'm seeing.
> containerViews makes it quite hard indeed to customize just one
> template. The zope.app.container.browser.contents.Contents has a
> hard-wired reference to the contents.pt template, too. It
> should really
> use the browser:page directive with the template="" attribute.
>
> The containerViews directive when executed registers as bunch of
> predefined templates for the container. The benefit is that you only
> have to specify the permissions:
>
> <browser:containerViews
> for=".interfaces.IBuddyFolder"
> contents="zope.ManageContent"
> index="zope.View"
> add="zope.ManageContent"
> />
>
> > 4. Override the meta directive and let ZConfig use the new
> > overriden directive.
>
> Again, ZConfig has nothing to do with ZCML. ZConfig bootstraps the
> server (http, ftp, etc.) and the ZODB. That's it.
>
> > ++1, whould be a clean way for to change basic implementations.
> >
> > +1, I can write a own Contents class and a own
> contents.pt template
> > and register a new meta directive. I can exactly implement
> > what's have to replace.
>
> I still believe that overriding a meta directive is not
> necessary. The
> existing machinery simply needs to be good enough so that
> it's possible
> to customize every single bit.
>
> So, in order to able to customize IReadContainer's templates,
> I see two
> possibilities:
>
> 1. Get rid of containerViews and have explicit browser:page
> directives
> (e.g. in zope.app.folder). Container view customizations
> could choose to
> override any number of those browser:page directives.
>
> 2. Use the (not yet implemented) disable directive to disable
> any call
> to containerViews for the interface/class in question (e.g.
> IReadContainer); then register custom templates for the container
> manually, maybe falling back to Zope3's default templates where
> customization is not necessary.
>
> I prefer #1. I'd be willing to take a shot at it. Nonetheless, we do
> need #2 at some point, but probably not for X3.0.
Yeh, that whould be great.
> > Another question is, what's the target.
>
> You probably mean "goal". We're not shooting anyone here :)
>
> > Can anybody help with a easier way. The important part of
> this problem
> > is, it has to work by installing the package without to change
> > directives on other packages!
>
> That is the whole idea.
Yes
>
> Philipp
>
> _______________________________________________
> Zope3-dev mailing list
> Zope3-dev at zope.org
> Unsub:
> http://mail.zope.org/mailman/options/zope3-> dev/dev%40projekt01.ch
>
>
More information about the Zope3-dev
mailing list