[Zope3-Users] Customisation of addform
Florian Lindner
mailinglists at xgm.de
Tue Nov 30 07:32:20 EST 2004
Roger Ineichen schrieb:
> Hi Florian
>
>
>>-----Original Message-----
>>From: Florian Lindner [mailto:mailinglists at xgm.de]
>>Sent: Tuesday, November 30, 2004 8:03 AM
>>To: dev at projekt01.ch; zope3-users at zope.org
>>Subject: Re: [Zope3-Users] Customisation of addform
>>
>>Roger Ineichen schrieb:
>>
>>>Hi Florian
>>>
>>>
>>>
>>>>-----Original Message-----
>>>>From: Florian Lindner [mailto:mailinglists at xgm.de]
>>>>Sent: Monday, November 29, 2004 10:05 AM
>>>>To: dev at projekt01.ch
>>>>Cc: zope3-users at zope.org
>>>>Subject: Re: [Zope3-Users] Customisation of addform
>>>>
>>>>Roger Ineichen schrieb:
>>>>
>>>>
>>>>
>>>>>>Is there a piece of code to see how the addform is being
>>>>>>generated? So I can see which macros and skin it uses.
>>>>
>>>>No, I think you missunderstood me.
>>>>The addform directive is creating the addform by using
>>
>>several macros
>>
>>>>and fill the slots in the macros. How do I know which macros
>>>>and slots
>>>>it is attempting to use?
>>>>
>>>>
>>>>
>>>>>See zope.app.rotterdam.standardmacros.py
>>>>
>>>>macro_pages = ('skin_macros', 'view_macros', 'dialog_macros',
>>>>navigation_macros')
>>>>
>>>>How does Zope knows which of these macro_pages to pick?
>>>
>>>
>>>Lookup in every macro page. Then a macro is registred as
>>>a view an theres no way to have to macros with the same name.
>>>So the Macros class can try till it's finds the macro in the
>>>mapping like:
>>>
>>>class Macros(object):
>>> implements(IItemMapping)
>>>
>>> macro_pages = ()
>>> aliases = {
>>> 'view': 'page',
>>> 'dialog': 'page',
>>> 'addingdialog': 'page'
>>> }
>>>
>>> def __getitem__(self, key):
>>> key = self.aliases.get(key, key)
>>> context = self.context
>>> request = self.request
>>> for name in self.macro_pages:
>>> page = getView(context, name, request)
>>> try:
>>> v = page[key]
>>> except KeyError:
>>> pass
>>> else:
>>> return v
>>> raise KeyError, key
>>>
>>>See in zope.app.basicskin.standardmacros.py
>>
>>Ok, that's clear now.
>>
>>Whats still really puzzling me is this question:
>>
>>The addform directive is creating the addform by using several macros
>>and fill the slots in the macros. How do I know which macros
>>and slots it is attempting to use?
>>For example: I want to create a customize a containerView.
>>How do I know
>>which macros it uses and which slots it fills?
>
>
> That's nearly impossible. Zope3 uses the contents.pt in containerViews
> for the contents.html view from the zope.app.container.browser folder.
>
> Belive me, theres no way to register another template for this directive.
> That's really hardcoded. Nobody fixed it till now. My ideea to let
> us override metaconfigure registrations, wasn't accepted. This makes it
> impossible to change templates which are declared as ViewPageTemplates
> in classes if such a class is used as a metadirective and registers Zope3
> stuff by the start process.
>
> What you can do is, copy another template.pt to the
> zope.app.container.browers.
>
> Like a patch. ;-(
Mmmhh.
No plans to change that in the future?
I think it would be better just to register a browser:page view with a
supporting view class which lists the folder contents (tal:repeat).
> The addform template comes from zope/app/form/browser/add.pt.
Thanks,
Florian
More information about the Zope3-users
mailing list