From 330f15e634312c1dfe6165cf0af2172086aa3cde Mon Sep 17 00:00:00 2001 From: helmutm Date: Mon, 17 Nov 2008 09:50:50 +0000 Subject: [PATCH] use 'instanceName' attribute for controlling layout instances git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@2994 fd906abe-77d9-0310-91a1-e0d9ade77398 --- layout/base.py | 46 +++++++++++++++++++------------------------ layout/configure.zcml | 5 +++++ 2 files changed, 25 insertions(+), 26 deletions(-) diff --git a/layout/base.py b/layout/base.py index 0e36c85..ebf6f76 100644 --- a/layout/base.py +++ b/layout/base.py @@ -42,32 +42,6 @@ class LayoutNode(Node): class NodeLayoutInstance(LayoutInstance): - def getLayouts(self, region): - """ Return sublayout instances. - """ - if region is None: - return [] - result = [] - sublayouts = self.template.sublayouts - if sublayouts is not None: # hard-coded sublayouts - for l in region.layouts: - if sublayouts is None or l.name in sublayouts: - li = ILayoutInstance(self.context) - li.template = l - result.append(li) - return result - # sublayouts specified via subnodes of the current menu node - menu = self.context.getMenu() - subnodes = menu.getMenuItems() - names = region.layouts.keys() - for n in subnodes: - if n.viewName in names: - layout = region.layouts[n.viewName] - li = ILayoutInstance(n) - li.template = layout - result.append(li) - return result - @Lazy def targetView(self): request = self.view.request @@ -76,3 +50,23 @@ class NodeLayoutInstance(LayoutInstance): view.node = self.context return view + +class NavigationNodeLayoutInstance(NodeLayoutInstance): + + def getLayouts(self, region): + """ Return sublayout instances specified via subnodes of the current menu node. + """ + if region is None: + return [] + result = [] + menu = self.context.getMenu() + subnodes = menu.getMenuItems() + names = region.layouts.keys() + for n in subnodes: + if n.viewName in names: + layout = region.layouts[n.viewName] + li = component.getAdapter(n, ILayoutInstance, + name=layout.instanceName) + li.template = layout + result.append(li) + return result diff --git a/layout/configure.zcml b/layout/configure.zcml index 1ac17a2..fca78db 100644 --- a/layout/configure.zcml +++ b/layout/configure.zcml @@ -20,6 +20,11 @@ for="loops.layout.interfaces.ILayoutNode" factory="loops.layout.base.NodeLayoutInstance" /> + +