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" /> + +