[Zope] Modal behaviour wanted!

Casey Duncan casey@zope.com
Fri, 05 Apr 2002 16:31:48 -0700


I usually handle this one of two ways:

Pass the URL to come back to to the message/edit form. A convention is 
to used a "came_from" value such as:

http://foo.com/myobject/edit?came_from=http://foo.com/myobject/baz

Or sometimes simply using the HTTP_REFERER request variable works well 
enough though. So you could code it like so in ZTP:

<input type="hidden" name="came_from"
        tal:attributes="value request/came_from | request/HTTP_REFERER | 
request/URL1" />

hth,

Casey

Luca Manini wrote:
> Hi, 
> 
> I'looking for a standard and flexible way (a Zope idiom) to do in Zope
> what's really easy to do in a normal GUI (no web) for a very common
> problem.
> 
> Suppose I have an index_html that lists some items.
> Each item has a link that allows to edit it. 
> After edit I want to come back to the list [see 1]. 
> 
> The edit process will probably require: 
> 
> 1) a form (edit_html) to be displayed (to collect data),
> 2) a PythonScript (edit_script) to do the actual job, 
> 3) a form (edit_ack) to be shown (to say OK or ERROR)
> 
> If everything goes fine I will (probably) like to go back to
> index_html, if there is an error I will like to (at least once) go
> back to edit_html.
> 
> Of course I don't want the edit_html to know (hard-coded) that its
> "backlink" is index_html (it will not always be the case). 
> 
> I can accept edit_script and edit_ack to know who call them (it will
> be probably be edit_html), but also in edit_ack it would be nice to
> have a way to go back to the original caller (with a Cancel button).
> 
> 
> 
> When doing everything from a Python Product, things are somewhat
> easier because you are always in the context of the edited/added
> object and you can mantain some "editing state" and return the
> appropriate form; but how to do it just with DTML Methods and Python
> Scripts?
> 
> 	Any hint?
> 	TIA, Luca.
> 
> PS: Almost all the "small" Zope examples I've seen do not help a lot
>     in this regard because quite often they use the FORM action and a
>     single button (too simple for real cases), or they use a single
>     kitchen-sink DTML with <dtml-if> and some trick to hold state
>     (does not scale well).
> 
> [1] Note: that's the same like adding an Folder to a Folder, but:
> 
> 1) after adding the folder, you're sent back to the "right" place
>    because everything is done by manage_addFolder that is called in
>    the context of the contaning Folder and has the "backlink"
>    (self.manage_main) hard-coded in its python code.
> 
>    So this is not a general "solution".
> 
> 2) If everything goes fine you do not get any confirmation (ok you get
>    the list and you see the new Folder),
> 
> 3) If there is an error (ex: duplicated id) you are left with a Zope
>    traceback with NO LINK to the original place. 
> 
> 
> _______________________________________________
> Zope maillist  -  Zope@zope.org
> 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 )
> 
>