Hi,

I'm trying to create an inline interface to manage_edit.  If a user is
authenticated, instead of seeing the default views of each snippet of
content, they get a textarea with a submit button for each snippet.

I'm still new to all this, so I'm not sure how I should be going about
it: a zclass with the content as a property?  a product that subclasses
DTMLDocument and overrides the __call__ method? I settled on creating a
DTML method, "editable", which works fine if you call it from the url
(code included at bottom of mail):

        http://mysite.com/snippet/editable

Inside "editable", when I call <dtml-var __str__> the content of the
parent object is returned, which is what I wanted.  The plan was,
whenever I had a snippet which I wanted to be editable, I would call it
inside my dtml thus:

        <dtml-var snippet/editable>

which of course doesn't work.  Eventually I found I had to do...

        <dtml-var "snippet.editable(REQUEST)">

...because the editable method doesn't inherit the context of snippet
like it does when you call it from the URL, and I needed to authenticate
the user.  But now I'm finding that the <dtml-var __str__> inside the
editable method is actually rendering the content of the page that the
snippet is in, rather than the snippet itself.

How should I call the editable method of snippet in such a way that it
inherits the context of snippet rather than the context of its parent? 
I've tried <dtml-with snippet><dtml-var editable></dtml-with> but then
editable can't access any other objects, e.g. update_content, in the
folder.  Perhaps I should be going about this completely differently?

Thanks

Seb

------------------------------
editable is a DTML method:

<dtml-if "AUTHENTICATED_USER.has_role('Manager')">
        <form action="update_content">
        <input type="text" name="title:text" value="<dtml-var title_or_id>">
        <textarea name="data:text" cols="30" rows="20">
        <dtml-var __str__>
        </textarea>
        <input type="submit">
        </form>
<dtml-else>
        <dtml-var __str__>
</dtml-if>

update_content is an external method:

def update_content(self,REQUEST):
        self.manage_edit(data=REQUEST.form["data"],title=REQUEST.form["title"])
        return REQUEST.form["data"]

_______________________________________________
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 )

Reply via email to