web/views/ibreadcrumbs.py
brancholdstable
changeset 8462 a14b6562082b
parent 7979 8bd5031e2201
child 8190 2a3c1b787688
--- a/web/views/ibreadcrumbs.py	Tue Feb 14 15:14:22 2012 +0100
+++ b/web/views/ibreadcrumbs.py	Tue Jul 10 15:07:23 2012 +0200
@@ -28,7 +28,8 @@
 from cubicweb import tags, uilib
 from cubicweb.entity import Entity
 from cubicweb.selectors import (is_instance, one_line_rset, adaptable,
-                                one_etype_rset, multi_lines_rset, any_rset)
+                                one_etype_rset, multi_lines_rset, any_rset,
+                                match_form_params)
 from cubicweb.view import EntityView, EntityAdapter
 from cubicweb.web.views import basecomponents
 # don't use AnyEntity since this may cause bug with isinstance() due to reloading
@@ -120,7 +121,10 @@
     # XXX support kwargs for compat with other components which gets the view as
     # argument
     def render(self, w, **kwargs):
-        entity = self.cw_rset.get_entity(0, 0)
+        try:
+            entity = self.cw_extra_kwargs['entity']
+        except KeyError:
+            entity = self.cw_rset.get_entity(0, 0)
         adapter = ibreadcrumb_adapter(entity)
         view = self.cw_extra_kwargs.get('view')
         path = adapter.breadcrumbs(view)
@@ -190,6 +194,17 @@
         w(u'</span>')
 
 
+class BreadCrumbLinkToVComponent(BreadCrumbEntityVComponent):
+    __select__ = basecomponents.HeaderComponent.__select__ & match_form_params('__linkto')
+
+    def render(self, w, **kwargs):
+        eid = self._cw.list_form_param('__linkto')[0].split(':')[1]
+        entity = self._cw.entity_from_eid(eid)
+        ecmp = self._cw.vreg[self.__registry__].select(
+            self.__regid__, self._cw, entity=entity, **kwargs)
+        ecmp.render(w, **kwargs)
+
+
 class BreadCrumbView(EntityView):
     __regid__ = 'breadcrumbs'