From f01df3662c4ed0fb545d682a0d114af50480955e Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Sat, 3 Dec 2011 17:07:20 +0100 Subject: [PATCH] work in progress: basic procedure for determining breadcrumbs list --- README.txt | 4 +++- browser/common.py | 4 ++-- browser/concept.py | 13 +++++++++++++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/README.txt b/README.txt index 2d862e4..8140683 100755 --- a/README.txt +++ b/README.txt @@ -659,7 +659,9 @@ Breadcrumbs >>> loopsRoot.options = ['showBreadcrumbs'] >>> m114.nodeType = 'page' >>> m114.target = cc1 - >>> view = NodeView(m114, TestRequest()) + >>> request = TestRequest() + >>> view = NodeView(m114, request) + >>> request.annotations.setdefault('loops.view', {})['nodeView'] = view >>> view.breadcrumbs() [{'url': 'http://127.0.0.1/loops/views/m1', 'label': u'Menu'}, {'url': 'http://127.0.0.1/loops/views/m1/m11', 'label': u'Zope'}, diff --git a/browser/common.py b/browser/common.py index 659fc11..8cc21ab 100644 --- a/browser/common.py +++ b/browser/common.py @@ -416,8 +416,8 @@ class BaseView(GenericView, I18NView): if contentType == u'text/html': return text return u'
%s
' % util.html_quote(text) - source = component.createObject(typeKey, text) - view = component.getMultiAdapter((removeAllProxies(source), self.request)) + source = removeAllProxies(component.createObject(typeKey, text)) + view = component.getMultiAdapter((source, self.request)) return view.render() def renderDescription(self, text=None): diff --git a/browser/concept.py b/browser/concept.py index c4bf3e6..98a013e 100644 --- a/browser/concept.py +++ b/browser/concept.py @@ -234,6 +234,19 @@ class ConceptView(BaseView): def description(self): return self.adapted.description + def breadcrumbs(self): + data = [] + if self.breadcrumbsParent is not None: + data.extend(self.breadcrumbsParent.breadcrumbs()) + if self.context != self.nodeView.targetObject: + data.append(dict(label=self.title, + url=self.nodeView.getUrlForTarget(self.context))) + return data + + @Lazy + def breadcrumbsParent(self): + return None + def getData(self, omit=('title', 'description')): data = self.instance.applyTemplate() for k in omit: