[Checkins]
SVN: zope.introspectorui/trunk/src/zope/introspectorui/util.py
Replace old breadcrumb generator with a more flexible adapter.
Uli Fouquet
uli at gnufix.de
Sun Aug 10 11:39:28 EDT 2008
Log message for revision 89601:
Replace old breadcrumb generator with a more flexible adapter.
Changed:
U zope.introspectorui/trunk/src/zope/introspectorui/util.py
-=-
Modified: zope.introspectorui/trunk/src/zope/introspectorui/util.py
===================================================================
--- zope.introspectorui/trunk/src/zope/introspectorui/util.py 2008-08-10 15:37:17 UTC (rev 89600)
+++ zope.introspectorui/trunk/src/zope/introspectorui/util.py 2008-08-10 15:39:27 UTC (rev 89601)
@@ -13,21 +13,24 @@
##############################################################################
"""Helpers for the zope.introspectorui.
"""
-from zope.traversing.browser.interfaces import IAbsoluteURL
-from zope.component import getMultiAdapter
+import grokcore.component as grok
+from zope.introspectorui.interfaces import IBreadcrumbProvider, ICodeView
+from zope.introspector.code import Code, Package
-def code_breadcrumbs(url, dotted_name):
- """Breadcrumbs for code objects.
+class CodeBreadcrumbProvider(grok.Adapter):
+ """An adapter, that adapts 'ICodeView' objects, i.e. all views
+ defined in the ``code`` module.
+ """
+ grok.context(ICodeView)
+ grok.provides(IBreadcrumbProvider)
- The `url` parameter should be a link to the object denoted by the
- dotted name `dotted_name``.
- """
- url_parts = url.split('/')
- dotted_name_parts = dotted_name.split('.')
- start_len = len(url_parts) - len(dotted_name_parts)
- url_start = '/'.join(url_parts[:start_len])
- result = []
- for name in dotted_name_parts:
- url_start = '/'.join([url_start, name])
- result.append(dict(name=name, url=url_start))
- return tuple(result)
+ def getBreadcrumbs(self):
+ code_obj = self.context.context.context
+ items = code_obj.getParents()
+ result = []
+ for item in items:
+ name = getattr(item, 'name', item.dotted_name.split('.')[-1])
+ url = self.context.url(item)
+ result.append(
+ '<a href="%s">%s</a>' % (url, name))
+ return '.'.join(result)
More information about the Checkins
mailing list