+##parameters=include_root=1
+##title=Return breadcrumbs
+##
+from string import join
+
+result = []
+portal_url = context.portal_url()
+
+if include_root:
+ result.append( { 'id' : 'root'
+ , 'title' : context.portal_properties.title()
+ , 'url' : portal_url
+ }
+ )
+
+relative = context.portal_url.getRelativeContentPath( context )
+portal = context.portal_url.getPortalObject()
+checkPermission = context.portal_membership.checkPermission
+from Products.CMFCore.permissions import View
+
+for i in range( len( relative ) ):
+ now = relative[ :i+1 ]
+ obj = portal.restrictedTraverse( now )
+ if not now[ -1 ] == 'talkback':
+ result.append( { 'id' : now[ -1 ]
+ , 'title' : obj.title_or_id()
+ , 'url' : checkPermission(View, obj) and (portal_url + '/' + join( now, '/' )) or None
+ }
+ )
+
+return result