[Zope3-dev] IFolder and IAdding
Stephan Richter
srichter at cosmos.phy.tufts.edu
Mon Oct 30 10:34:02 EST 2006
On Saturday 21 October 2006 12:03, Tim Terlegård wrote:
> There's a really useful method "add" in IAdding. As the novice zope3
> developer I am I would like that method in IFolder (as well). Is there a
> good reason why IFolder or IWriteContainer doesn't have an add method?
> It's possible to add content to an IFolder through the IWriteContainer API,
> but I'd rather use an add method that chooses an appropriate ID for the
> object.
Choosing an ID is in general a presentation-specific task and requires the
request object. If you do not have this requirement, feel free to add the
method to your particular API.
> IAdding has some methods that seem to be about menus. Is this because
> IAdding should be used together with browser:addMenuItem that also does
> some menu stuff?
Yes.
> Is IAdding only supposed to be used when dealing with
> /@@+/somevieworfactory? I'd like to add stuff to the folder without
> using @@+ in the url.
"@@+" traverses to IAdding object.
You can write your own add views that do not use IAdding. This is what I do
most of the time, but is not acceptable for general-purpose folders, like the
default on in the ZMI.
> I want to use a formlib add form and I have a view called addEvent:
>
> <browser:page
> for="zope.app.folder.interfaces.IFolder"
> name="addEvent"
> class=".eventforms.EventAddForm"
> permission="zope.ManageContent"
> />
>
> Submitting the form fails though. formlib (AddFormBase) assumes that the
> context/folder provides IAdding and has an add method. So I can't use
> for="IFolder". And I can only use IAdding when having /@@+/ in the url.
Absolutely, iut has been designed this way.
> I guess I can make an adapter from IFolder to IAdding, but then I have
> to implement those menu methods that neither me or the folder care
> about.
Well, you should investigate, whether you need to use the entire adding
machinery including the menus at all. Note that you do not *have* to use
them. Writing your own adapter basically will duplicate IAdding.
> So what's the deal with IFolder and IAdding? Why doesn't IFolder have an
> add method?
See above.
> When should IAdding be used?
You should use it whenever you want to use it and it is necessary to use,
which is almost never. The ZMI is a very special use case.
> Can formlib only be used with folders that are adapted to IAdding?
Of course, just write your own form.
> Why does IAdding contain menu stuff?
I don't know.
> How do I use formlib without @@+?
Don't depend on IAdding.
Regards,
Stephan
--
Stephan Richter
CBU Physics & Chemistry (B.S.) / Tufts Physics (Ph.D. student)
Web2k - Web Software Design, Development and Training
More information about the Zope3-dev
mailing list