The profile lists
The list and list-and-detail plugins build more than the list itself: the letters of the letter navigation, the links of the pagination and of the navigation, and the page cache lifetime. This page describes how these follow the list, and where ModifyProfileDemandEvent and ModifyProfileQueryEvent reach them.
Which letters lead somewhere
The letter navigation of the list and list-and-detail plugins is told which
letters lead to a list that is not empty:
Profile, assigned to the view as
alphabet, the letters a to z, each mapped to a boolean. It
is assigned only while the content element has the navigation switched on and
no profiles are selected by hand. A manual selection ignores the letter filter.
The letters come from the list's own query with the letter cleared, so the
active letter never narrows the others, and both events reach it:
Modify and
Modify are
dispatched twice for a list that shows the navigation, once for the list
and once for its letters, and the query event carries the same plugin context
both times. A listener that narrows the list narrows the letters in the same way, as
long as it answers both calls alike. The demand of the second call carries no
letter.
While the content element shows only contracts valid today,
Modify is dispatched once more, for the next day on which
the list changes because a contract that meets its conditions starts or ends.
That day caps the page cache lifetime, so a listener that adds a condition on
contracts should answer this call like the others.
Two things the letters do not see, both shared with the list's own pagination count, which is computed in SQL as well:
- A listener of
Modifythat assigns other profiles to the view. The letters are computed from the query, not from the records the view renders.Plugin View Event - In a workspace preview, a profile deleted or hidden only in the workspace. It still makes its letter available. Live, the letters are exact.
The method compares with the letter filter's own predicate,
LIKE
or
ILIKE
on PostgreSQL against the last name, so a name is available
under exactly the letter the list files it under. Where a name starting with an
umlaut ends up is a question of the database collation: under O on MariaDB and
MySQL, under no letter on PostgreSQL and SQLite.