diff --git a/browser/node.py b/browser/node.py index 82a325b..6153ad7 100644 --- a/browser/node.py +++ b/browser/node.py @@ -444,9 +444,7 @@ class NodeView(BaseView): def targetRender(self): return u'
%s
' % self.targetView('download.html', 'show') - @Lazy - def virtualTarget(self): - obj = self.virtualTargetObject + def getViewForTarget(self, obj): if obj is not None: basicView = component.getMultiAdapter((obj, self.request)) if obj == self.targetObject: @@ -456,6 +454,10 @@ class NodeView(BaseView): if hasattr(basicView, 'view'): return basicView.view + @Lazy + def virtualTarget(self): + return self.getViewForTarget(self.virtualTargetObject) + @Lazy def targetId(self): target = self.virtualTargetObject diff --git a/browser/resource.py b/browser/resource.py index 251ca49..4c31da9 100644 --- a/browser/resource.py +++ b/browser/resource.py @@ -18,8 +18,6 @@ """ View class for resource objects. - -$Id$ """ import urllib @@ -134,9 +132,6 @@ class ResourceView(BaseView): else: return self.template.macros['download'] - #def __init__(self, context, request): - # super(ResourceView, self).__init__(context, request) - def setupController(self): cont = self.controller if cont is None: @@ -157,6 +152,20 @@ class ResourceView(BaseView): subMacro=version_macros.macros['portlet_versions'], priority=25, info=self) + 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): + for c in self.context.getConcepts([self.defaultPredicate]): + return self.nodeView.getViewForTarget(c) + @Lazy def view(self): context = self.context