Regards
Roger Ineichen

Projekt01 GmbH
www.projekt01.ch
_____________________________
END OF MESSAGE  

> -----Original Message-----
> From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] On 
> Behalf Of Florian Lindner
> Sent: Wednesday, April 13, 2005 7:49 AM
> To: [EMAIL PROTECTED]
> Cc: zope3-dev@zope.org
> Subject: Re: [Zope3-dev] RE: [Zope3-Users] page uses 
> foreignview:contextchanged
> 
> 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?

try this:

def __init__(self, context, request):
  self.context = context
  self.request = request

def getMacro(self):

  macrocode = ""
  # 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
    macrocode += view.index['mymacroname']

    # return all html code where get collected
    return macrocode 

The result of getMacro can be used in the folder view like:

<tal:block metal:use-macro="context/getMacro" />


btw; don't use getView(), use getMultiAdapter().

The method getView is deprecated and you should seee a TraceBack
if you use getView()!

Regards
Roger Ineichen

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

_______________________________________________
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