From d384a11c32003cf079b151f16d305afdf451af17 Mon Sep 17 00:00:00 2001 From: helmutm Date: Sun, 7 May 2006 11:55:58 +0000 Subject: [PATCH] bug fix for nearestMenuItem(); prepare for view configurator usage git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@1199 fd906abe-77d9-0310-91a1-e0d9ade77398 --- browser/common.py | 7 +++++-- browser/node.css | 4 ++++ browser/node.py | 15 ++++++++++----- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/browser/common.py b/browser/common.py index 40291d7..a476e5a 100644 --- a/browser/common.py +++ b/browser/common.py @@ -46,9 +46,10 @@ class BaseView(object): # TODO: get rid of removeSecurityProxy() call self.context = removeSecurityProxy(context) self.request = request + self.setSkin(self.loopsRoot.skinName) + + def setSkin(self, skinName): skin = None - # TODO: get ISkinController adapter instead - skinName = self.loopsRoot.skinName if skinName and IView.providedBy(self.context): skin = zapi.queryUtility(ISkin, skinName) if skin is not None: @@ -59,6 +60,8 @@ class BaseView(object): def setController(self, controller): self._controller = controller # this is also the place to register special macros with the controller + if getattr(controller, 'skinName', None): + self.setSkin(controller.skinName.value) controller.skin = self.skin def getController(self): return self._controller controller = property(getController, setController) diff --git a/browser/node.css b/browser/node.css index 4c80e42..925ea0a 100644 --- a/browser/node.css +++ b/browser/node.css @@ -50,6 +50,10 @@ float: left; } +.flow-right { + float: right; +} + div.image { margin-top: 10px; margin-right: 5px; diff --git a/browser/node.py b/browser/node.py index 54ee818..4b00e4f 100644 --- a/browser/node.py +++ b/browser/node.py @@ -168,11 +168,16 @@ class NodeView(BaseView): @Lazy def nearestMenuItem(self): - if self.context.isMenuItem(): - return self.context - for p in self.parents: - if p.isMenuItem(): - return p + menu = self.menuObject + menuItem = None + for p in [self.context] + self.parents: + if not p.isMenuItem(): + menuItem = None + elif menuItem is None: + menuItem = p + if p == menu: + return menuItem + return None def selected(self, item): return item.context == self.nearestMenuItem