breadcrumbs improvements

This commit is contained in:
Helmut Merz 2015-03-23 13:49:53 +01:00
parent 0316bafffc
commit 7113369fca
3 changed files with 19 additions and 4 deletions

View file

@ -1,5 +1,5 @@
# #
# Copyright (c) 2013 Helmut Merz helmutm@cy55.de # Copyright (c) 2015 Helmut Merz helmutm@cy55.de
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@ -377,6 +377,10 @@ class BaseView(GenericView, I18NView, SortableMixin):
def isPartOfPredicate(self): def isPartOfPredicate(self):
return self.conceptManager.get('ispartof') return self.conceptManager.get('ispartof')
@Lazy
def queryTargetPredicate(self):
return self.conceptManager.get('querytarget')
@Lazy @Lazy
def memberPredicate(self): def memberPredicate(self):
return self.conceptManager.get('ismember') return self.conceptManager.get('ismember')

View file

@ -282,8 +282,16 @@ class ConceptView(BaseView):
def breadcrumbsTitle(self): def breadcrumbsTitle(self):
return self.title return self.title
@Lazy
def showInBreadcrumbs(self):
return self.options('show_in_breadcrumbs')
@Lazy @Lazy
def breadcrumbsParent(self): def breadcrumbsParent(self):
for p in self.context.getParents([self.defaultPredicate]):
view = self.nodeView.getViewForTarget(p)
if view.showInBreadcrumbs:
return view
return None return None
def getData(self, omit=('title', 'description')): def getData(self, omit=('title', 'description')):

View file

@ -1,5 +1,5 @@
# #
# Copyright (c) 2013 Helmut Merz helmutm@cy55.de # Copyright (c) 2015 Helmut Merz helmutm@cy55.de
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@ -109,7 +109,7 @@ class NodeView(BaseView):
return [] return []
menu = self.menu menu = self.menu
data = [dict(label=menu.title, url=menu.url)] data = [dict(label=menu.title, url=menu.url)]
menuItem = self.nearestMenuItem menuItem = self.getNearestMenuItem(all=True)
if menuItem != menu.context: if menuItem != menu.context:
data.append(dict(label=menuItem.title, data.append(dict(label=menuItem.title,
url=absoluteURL(menuItem, self.request))) url=absoluteURL(menuItem, self.request)))
@ -400,10 +400,13 @@ class NodeView(BaseView):
@Lazy @Lazy
def nearestMenuItem(self): def nearestMenuItem(self):
return self.getNearestMenuItem()
def getNearestMenuItem(self, all=False):
menu = self.menuObject menu = self.menuObject
menuItem = None menuItem = None
for p in [self.context] + self.parents: for p in [self.context] + self.parents:
if not p.isMenuItem(): if not all and not p.isMenuItem():
menuItem = None menuItem = None
elif menuItem is None: elif menuItem is None:
menuItem = p menuItem = p