web/views/ibreadcrumbs.py
brancholdstable
changeset 8462 a14b6562082b
parent 7979 8bd5031e2201
child 8190 2a3c1b787688
equal deleted inserted replaced
8231:1bb43e31032d 8462:a14b6562082b
    26 
    26 
    27 #from cubicweb.interfaces import IBreadCrumbs
    27 #from cubicweb.interfaces import IBreadCrumbs
    28 from cubicweb import tags, uilib
    28 from cubicweb import tags, uilib
    29 from cubicweb.entity import Entity
    29 from cubicweb.entity import Entity
    30 from cubicweb.selectors import (is_instance, one_line_rset, adaptable,
    30 from cubicweb.selectors import (is_instance, one_line_rset, adaptable,
    31                                 one_etype_rset, multi_lines_rset, any_rset)
    31                                 one_etype_rset, multi_lines_rset, any_rset,
       
    32                                 match_form_params)
    32 from cubicweb.view import EntityView, EntityAdapter
    33 from cubicweb.view import EntityView, EntityAdapter
    33 from cubicweb.web.views import basecomponents
    34 from cubicweb.web.views import basecomponents
    34 # don't use AnyEntity since this may cause bug with isinstance() due to reloading
    35 # don't use AnyEntity since this may cause bug with isinstance() due to reloading
    35 
    36 
    36 
    37 
   118     first_separator = True
   119     first_separator = True
   119 
   120 
   120     # XXX support kwargs for compat with other components which gets the view as
   121     # XXX support kwargs for compat with other components which gets the view as
   121     # argument
   122     # argument
   122     def render(self, w, **kwargs):
   123     def render(self, w, **kwargs):
   123         entity = self.cw_rset.get_entity(0, 0)
   124         try:
       
   125             entity = self.cw_extra_kwargs['entity']
       
   126         except KeyError:
       
   127             entity = self.cw_rset.get_entity(0, 0)
   124         adapter = ibreadcrumb_adapter(entity)
   128         adapter = ibreadcrumb_adapter(entity)
   125         view = self.cw_extra_kwargs.get('view')
   129         view = self.cw_extra_kwargs.get('view')
   126         path = adapter.breadcrumbs(view)
   130         path = adapter.breadcrumbs(view)
   127         if path:
   131         if path:
   128             self.open_breadcrumbs(w)
   132             self.open_breadcrumbs(w)
   188             w(self.separator)
   192             w(self.separator)
   189         w(self._cw._('search'))
   193         w(self._cw._('search'))
   190         w(u'</span>')
   194         w(u'</span>')
   191 
   195 
   192 
   196 
       
   197 class BreadCrumbLinkToVComponent(BreadCrumbEntityVComponent):
       
   198     __select__ = basecomponents.HeaderComponent.__select__ & match_form_params('__linkto')
       
   199 
       
   200     def render(self, w, **kwargs):
       
   201         eid = self._cw.list_form_param('__linkto')[0].split(':')[1]
       
   202         entity = self._cw.entity_from_eid(eid)
       
   203         ecmp = self._cw.vreg[self.__registry__].select(
       
   204             self.__regid__, self._cw, entity=entity, **kwargs)
       
   205         ecmp.render(w, **kwargs)
       
   206 
       
   207 
   193 class BreadCrumbView(EntityView):
   208 class BreadCrumbView(EntityView):
   194     __regid__ = 'breadcrumbs'
   209     __regid__ = 'breadcrumbs'
   195 
   210 
   196     def cell_call(self, row, col, **kwargs):
   211     def cell_call(self, row, col, **kwargs):
   197         entity = self.cw_rset.get_entity(row, col)
   212         entity = self.cw_rset.get_entity(row, col)