Am Samstag, 9. April 2005 02:21 schrieb Roger Ineichen:
> Behalf Of Florian Lindner
>
> > Sent: Friday, April 08, 2005 8:18 PM
> > To: zope3-dev@zope.org; [EMAIL PROTECTED]
> > Subject: Re: [Zope3-dev] RE: [Zope3-Users] page uses foreign
> > view:contextchanged
> >
> > Am Mittwoch, 6. April 2005 18:26 schrieb Roger Ineichen:
> > > Hi Florian
> > >
> > > Behalf Of Florian Lindner
> > >
> > > > Sent: Wednesday, April 06, 2005 11:10 PM
> > > > To: zope3-dev@zope.org; [EMAIL PROTECTED]
> > > > Subject: Re: [Zope3-dev] RE: [Zope3-Users] page uses foreign
> > > > view: contextchanged
> > > >
> > > > Am Mittwoch, 6. April 2005 17:01 schrieb Roger Ineichen:
> > > > > Hi Florian
> > > > >
> > > > > Behalf Of Florian Lindner
> > > > >
> > > > > > Sent: Wednesday, April 06, 2005 10:22 PM
> > > > > > To: zope3-users@zope.org
> > > > > > Subject: [Zope3-Users] page uses foreign view: context changed
> > > > > >
> > > > > > Hello,
> > > > > > I'vw a viewA on a objectA including a macro:
> > > > > >
> > > > > >
> > > > > > <metal:block define-macro="info">
> > > > > >   <span tal:replace="context/__name__" />
> > > > > > </metal:block>
> > > > > >
> > > > > > A view of objectB uses this macro and inserts it into its
> > > >
> > > > own viewB:
> > > > > I can't follow. What do you try to say?
> > > > > What is "A view of objectB" and "its own viewB"?
> > > >
> > > > A object uses a macro which is defined in a view of
> >
> > another object.
> >
> > > > In this macros I want to access the data from the object
> >
> > the view was
> >
> > > > originaly registered for.
> > >
> > > Ok, I was thinking about that you mean somthing like this.
> > > This isn't possible. Or let's say you mix up some parts.
> > >
> > > The macro which you suggest is just a page template. This template
> > > you are useing in a view. If this macro is also used in
> >
> > another view,
> >
> > > it has in this usecase nothing to do with the other view. There is
> > > no relation, if you register a page template as a macro and a second
> > > time as a view, between the macro and the view.
> > >
> > > Perhaps I don't understand this correctly. Can you post the ZCML
> > > directive, then I see what you mean?
> >
> > Ok, I've understand the problem.
> >
> > What I want:
> >
> > A folderish object f has a view. This should display
> > information from the
> > children of f. The children provide this information as a
> > snippet of HTML
> > code which could be inserted directly in f's view.
> >
> > f
> >
> > |- a
> > |- b
> > |- c
> > |- d
> >
> > The view of f should iterate through [a,b,c,d] and get the
> > snippet from every
> > object. The snippets should be in the same order like the
> > objects in the
> > folder. Only direct children should be called.
> >
> > The problem I see with pagelets that the order is undefinied
> > and that all
> > children (recursivly) and not only direct children are called.
> >
> > Or is the best way to implement a own MacroCollector for that?
>
> No pagelets are not the concept for collecting information
> from objects others then the context.
>
> If you like to use parts of the pagelet concept, you can use
> pagedata adapters. But I whould use a simply view on the folder
> for this.
>
> Write a view 'childView' for childs and a view 'folderView' for
> folder "f" with a method getHTML like:
>
>
> def __init__(self, context, request):
>   self.context = context
>   self.request = request
>
> def getHTML(self):
>
>   htmlcode = ""
>
>   # get the childs of folder 'f'
>   childs = self.context.values()
>
>   for item in childs:
>
>     # get the 'childView' for each item
>     view = zapi.getMultiAdapter((self.context, item), name='childView')
>
>     # call the view, this returns the html code of the view
>     htmlcode += view()
>
>   # return all html code where get collected
>   return htmlcode
>
> The view 'childView' is a page template where contains the html.
>
>
> The result of getHTML can be used in the folder view like:
>
> <tal:block content="structure context/getHTML" />
>
> I think this is the easiest way. You can also implement some
> permission checks before you access the childs. If you use
> different permissions on childs.

Hi Roger,

thanks, that works for so fine.
I've replaced your getMultiAdapter call by 
  view = getView(item, "childInfo", self.request)
I think that's a little bit nicer.

One more question: How can I use only a specific macro of the view?

Thx,
Florian
_______________________________________________
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com

Reply via email to