From 7113369fcacdf4b61f34c7c8de70760ec423dc57 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Mon, 23 Mar 2015 13:49:53 +0100 Subject: [PATCH] breadcrumbs improvements --- browser/common.py | 6 +++++- browser/concept.py | 8 ++++++++ browser/node.py | 9 ++++++--- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/browser/common.py b/browser/common.py index f216f5e..850fae1 100644 --- a/browser/common.py +++ b/browser/common.py @@ -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 # 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): return self.conceptManager.get('ispartof') + @Lazy + def queryTargetPredicate(self): + return self.conceptManager.get('querytarget') + @Lazy def memberPredicate(self): return self.conceptManager.get('ismember') diff --git a/browser/concept.py b/browser/concept.py index 86b064b..3e7e6ab 100644 --- a/browser/concept.py +++ b/browser/concept.py @@ -282,8 +282,16 @@ class ConceptView(BaseView): def breadcrumbsTitle(self): return self.title + @Lazy + def showInBreadcrumbs(self): + return self.options('show_in_breadcrumbs') + @Lazy def breadcrumbsParent(self): + for p in self.context.getParents([self.defaultPredicate]): + view = self.nodeView.getViewForTarget(p) + if view.showInBreadcrumbs: + return view return None def getData(self, omit=('title', 'description')): diff --git a/browser/node.py b/browser/node.py index 335deb6..c801466 100644 --- a/browser/node.py +++ b/browser/node.py @@ -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 # it under the terms of the GNU General Public License as published by @@ -109,7 +109,7 @@ class NodeView(BaseView): return [] menu = self.menu data = [dict(label=menu.title, url=menu.url)] - menuItem = self.nearestMenuItem + menuItem = self.getNearestMenuItem(all=True) if menuItem != menu.context: data.append(dict(label=menuItem.title, url=absoluteURL(menuItem, self.request))) @@ -400,10 +400,13 @@ class NodeView(BaseView): @Lazy def nearestMenuItem(self): + return self.getNearestMenuItem() + + def getNearestMenuItem(self, all=False): menu = self.menuObject menuItem = None for p in [self.context] + self.parents: - if not p.isMenuItem(): + if not all and not p.isMenuItem(): menuItem = None elif menuItem is None: menuItem = p