work in progress: basic procedure for determining breadcrumbs list

This commit is contained in:
Helmut Merz 2011-12-03 17:07:20 +01:00
parent d9694f711c
commit f01df3662c
3 changed files with 18 additions and 3 deletions

View file

@ -659,7 +659,9 @@ Breadcrumbs
>>> loopsRoot.options = ['showBreadcrumbs'] >>> loopsRoot.options = ['showBreadcrumbs']
>>> m114.nodeType = 'page' >>> m114.nodeType = 'page'
>>> m114.target = cc1 >>> m114.target = cc1
>>> view = NodeView(m114, TestRequest()) >>> request = TestRequest()
>>> view = NodeView(m114, request)
>>> request.annotations.setdefault('loops.view', {})['nodeView'] = view
>>> view.breadcrumbs() >>> view.breadcrumbs()
[{'url': 'http://127.0.0.1/loops/views/m1', 'label': u'Menu'}, [{'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'}, {'url': 'http://127.0.0.1/loops/views/m1/m11', 'label': u'Zope'},

View file

@ -416,8 +416,8 @@ class BaseView(GenericView, I18NView):
if contentType == u'text/html': if contentType == u'text/html':
return text return text
return u'<pre>%s</pre>' % util.html_quote(text) return u'<pre>%s</pre>' % util.html_quote(text)
source = component.createObject(typeKey, text) source = removeAllProxies(component.createObject(typeKey, text))
view = component.getMultiAdapter((removeAllProxies(source), self.request)) view = component.getMultiAdapter((source, self.request))
return view.render() return view.render()
def renderDescription(self, text=None): def renderDescription(self, text=None):

View file

@ -234,6 +234,19 @@ class ConceptView(BaseView):
def description(self): def description(self):
return self.adapted.description 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')): def getData(self, omit=('title', 'description')):
data = self.instance.applyTemplate() data = self.instance.applyTemplate()
for k in omit: for k in omit: