Jim Washington [EMAIL PROTECTED] writes:
Hi, Geoff
Your situation looks like application logic confusion enhanced by the
weirdness of DTML.
Application logic confusion in what way?
Perhaps I didn't give enough detail about what I'm doing. Here's a
little ASCI art that may clear things up:
CLASS META TYPE PROPERTIES
--
ZClass1 (blob) - id, displayOrder
\
\
\/
ZClass2 (chunk) - id, displayOrder, alignment, text
ZClass1 is basicly a container class for a bunch of displayable
subobjects.
Each blob can contain a variable number of chunks, although for the
purpose of creating a new blob I'm only concerned about it starting
with a single chunk.
Right now (if I create a number of sample blobs and chunks by hand)
users can manipulate the display order of individual chunks within a
blob. The can also manipulate the display order of blobs relative to
one another.
But now I need to give them the capacity to generate a new blob with
one default chunk. This _seems_ like it should be an easy thing to
do. And in fact I have no problem with creating a public add method.
My problem comes when I want to give these two new objects starting
values from the same form. Something like this works perfectly:
dtml-with "manage_addProduct['ChunkProduct']"
dtml-call "chunk_blobClass_add(_.None, _, NoRedir=1)"
/dtml-with
Where I change the add method of a blob to also always also add a
chunk and appropriately adjust the permession of my add method so that
anybody can use it.
The user will need to control the the displayOrder of the blob. It's
default chunk will always have a displayOrder of 1. The user also
needs to control the alignment and text of the default chunk.
And note again that when both the blob and it's chunk are created they
are given a random id based on ZopeTime, since I don't want my users
to have to care about the id of either object. Because of this I
don't need to worry about passing an id to either one of them from my
form...
I hope this at least manages to clear up my problem a bit.
Use a Python Script/Method to do the background heavy lifting. If you
are using with, let and REQUEST.set() to access your items, it can
be done much more simply and understandably in a Python Script/Method.
I'm open to doing this the Python Way as well, but I have the same
problem there.
-- Jim Washington
"Geoffrey L. Wright" wrote:
So:
I have a odd little problem that I can't seem to solve. I have two
zclasses. We'll call them zclass1 and zclass2. zclass2 lives inside
of zclass1. zclass1 has the following two properties: id and
displayOrder. zclass2 has the four properties: id, displayOrder,
alignment and content. In both cases the id is an automaticly
generated unique number based on ZopeTime.
My problem is that I need to make a public add method that generates a
new instance of zclass1 with a new instance of zclass2 inside of it.
I also need to be able to control set the displayOrder of zclass1, and
the alignment and content of zclass2 from the same form. The
displayOrder of zclass2 will be static for the time being, but I'll
ultimately need to control that as well.
I hacked the default add method of zclass1 so that it generates a new
instance of zclass2 each time, and using the Job Board HOWTO I managed
to make a public add method. So far so good. But now I can't for the
life of me figure out how to pass some form variables to one object
and some to the other, especially while they have some identically named
properties.
Any hints on this one?
___
Zope maillist - [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope
** No cross posts or HTML encoding! **
(Related lists -
http://lists.zope.org/mailman/listinfo/zope-announce
http://lists.zope.org/mailman/listinfo/zope-dev )