class Composite (Plugin):
- def __init__ (self, sons=[], *args, **kwds):
+ def __init__ (self, sons=[], active=None, *args, **kwds):
Plugin.__init__ (self, *args, **kwds)
self.sons=sons
+ self.active=active
def insert (self, plugin):
self.sons.append(plugin)
+ # xxx currently there is no guarantee that exactly one son will be active
def template_env (self, request):
# this is designed so as to support a template like
# {% for son in sons %} {{ son.rendered }} ...
+ def is_active (son):
+# print 'comparing >%s< and >%s<'%(son.domid,self.active)
+ return son.domid==self.active
ranks=range(len(self.sons))
- return { 'sons':
+ env = { 'sons':
[ { 'rendered': son.render(request),
+ 'rank': rank,
+ 'active': is_active(son),
+ # this should probably come from son._settings..
'title': son.title,
- 'uuid': son.uuid,
+ 'domid': son.domid,
'classname': son.classname,
- 'rank': rank}
+ }
for (son,rank) in zip(self.sons,ranks) ]}
+ return env
- # xxx need a way to select an active son, like e.g.
- # Composite (active='some string')
- # and we could then try to find that string in either title or uuid or some other place
- # in which case the corresponding 'son' entry in template_env above would son.active=True