doc/book/en/development/devweb/views/breadcrumbs.rst
changeset 5408 120db445c179
parent 5398 b9e1abe1bdfe
parent 5407 7730796f9506
child 5409 1e074c6150fe
equal deleted inserted replaced
5398:b9e1abe1bdfe 5408:120db445c179
     1 Breadcrumbs
       
     2 -----------
       
     3 
       
     4 Breadcrumbs are a navigation component to help the user locate himself
       
     5 along a path of entities.
       
     6 
       
     7 Display
       
     8 ~~~~~~~
       
     9 
       
    10 Breadcrumbs are displayed by default in the header section (see
       
    11 :ref:`the_main_template_sections`).  With the default main
       
    12 template, the header section is composed by the logo, the application
       
    13 name, breadcrumbs and, at the most right, the login box. Breadcrumbs
       
    14 are displayed just next to the application name, thus breadcrumbs
       
    15 begin with a separator.
       
    16 
       
    17 Here is the header section of the CubicWeb's forge:
       
    18 
       
    19 .. image:: ../../../images/breadcrumbs_header.png
       
    20 
       
    21 There are three breadcrumbs components defined in
       
    22 :mod:`cubicweb.web.views.ibreadcrumbs`:
       
    23 
       
    24 - `BreadCrumbEntityVComponent`: displayed for a result set with one line
       
    25   if the entity implements the ``IBreadCrumbs`` interface.
       
    26 - `BreadCrumbETypeVComponent`: displayed for a result set with more than
       
    27   one line, but with all entities of the same type which implement the
       
    28   ``IBreadCrumbs`` interface.
       
    29 - `BreadCrumbAnyRSetVComponent`: displayed for any other result set.
       
    30 
       
    31 Building breadcrumbs
       
    32 ~~~~~~~~~~~~~~~~~~~~
       
    33 
       
    34 The ``IBreadCrumbs`` interface is defined in the
       
    35 :mod:`cubicweb.interfaces` module. It specifies that an entity which
       
    36 implements this interface must have a ``breadcrumbs`` method.
       
    37 
       
    38 .. note::
       
    39 
       
    40    Redefining the breadcrumbs is the hammer way to do it. Another way
       
    41    is to define the `parent` method on an entity (as defined in the
       
    42    `ITree` interface). If available, it will be used to compute
       
    43    breadcrumbs.
       
    44 
       
    45 Here is the API of the ``breadcrumbs`` method:
       
    46 
       
    47 .. automethod:: cubicweb.interfaces.IBreadCrumbs.breadcrumbs
       
    48 
       
    49 If the breadcrumbs method return a list of entities, the
       
    50 ``cubicweb.web.views.ibreadcrumbs.BreadCrumbView`` is used to display
       
    51 the elements.
       
    52 
       
    53 By default, for any entity, if recurs=True, breadcrumbs method returns
       
    54 a list of entities, else a list of a simple string.
       
    55 
       
    56 In order to see a hierarchical breadcrumbs, entities must have a
       
    57 ``parent`` method which returns the parent entity. By default this
       
    58 method doesn't exist on entity, given that it can not be guessed.