Split project members into current and former #29

Merged
mih merged 1 commit from msz/www.trr379.de:former into main 2026-05-04 14:21:06 +00:00
Contributor

When linking to people, we need to deal with both attributions (not timed) and associations (time-constrained). Arguably, taxonomies are good only for the former, as they represent a simple, unqualified relation.

A contributor who left the project does not stop being a contributor in a broader sense, they may get listed as a "former contributor" in a project page but they should remain as they were in a publication page.

Changes made here try to keep Contributor as a taxonomy, while tuning the Project (term) and Contributors (taxonomy) layouts to differentiate between past and present contributors. This is done based on details declared in the front matter.

For project, a new custom template is created, borrowing from the existing contributor template. The loop showing links to other pages is repeated. First, we loop across current and past contributors declared explicitly in the page params (we first collect pages and then do a range sorting by "sortkey" param). Then, we do the standard term page loop over .Pages, only modified by adding a filter: where section is not contributors.

For all contributors, a new custom template is created, using the Congo's taxonomy template and repeating iteration over the terms twice, with filtering.

This means we rely on more information being included as page params:

  • params.active for contributor, representing their overall status with respect to TRR
  • params.current_contributors & params.past_contributors for project

It's probably better to rely on an external process to implement the classification logic and pass the result it in simple terms, rather than implement it in Hugo.

It also makes sense for an external process to set the contributors list in the project file (where it is being displayed) and the flag on a person record, because that process will likely have access to all the necessary associations when generating these pages. For the overall TRR "active" role, a person could be treated as inactive with all their project associations marked as ended (an edge case would be no project association, a decision likely depends on whether we want the person page to be more of a taxonomy listing or more of a project association listing).

Regarding "all contributors": one issue with the approach is that the parameter is set on /page/ but the taxonomy lists /terms/. This means, in the absence of DE pages for contributors, we will have access to
the "active" parameter in EN but not DE. This will lead to different listings. However, this is probably acceptable - several things are currently missing from the DE version. In any case, here we make some
provisions for the DE implementation by using i18n strings in the template.

Changes to provide the added params: q02/pool-publication-page#7

When linking to people, we need to deal with both attributions (not timed) and associations (time-constrained). Arguably, taxonomies are good only for the former, as they represent a simple, unqualified relation. A contributor who left the project does not stop being a contributor in a broader sense, they may get listed as a "former contributor" in a project page but they should remain as they were in a publication page. Changes made here try to keep Contributor as a taxonomy, while tuning the Project (term) and Contributors (taxonomy) layouts to differentiate between past and present contributors. This is done based on details declared in the front matter. For *project*, a new custom template is created, borrowing from the existing contributor template. The loop showing links to other pages is repeated. First, we loop across current and past contributors declared explicitly in the page params (we first collect pages and then do a range sorting by "sortkey" param). Then, we do the standard term page loop over .Pages, only modified by adding a filter: where section is not contributors. For *all contributors*, a new custom template is created, using the Congo's taxonomy template and repeating iteration over the terms twice, with filtering. This means we rely on more information being included as page params: - `params.active` for contributor, representing their overall status with respect to TRR - `params.current_contributors` & `params.past_contributors` for project It's probably better to rely on an external process to implement the classification logic and pass the result it in simple terms, rather than implement it in Hugo. It also makes sense for an external process to set the contributors list in the project file (where it is being displayed) and the flag on a person record, because that process will likely have access to all the necessary associations when generating these pages. For the overall TRR "active" role, a person could be treated as inactive with all their project associations marked as ended (an edge case would be no project association, a decision likely depends on whether we want the person page to be more of a taxonomy listing or more of a project association listing). Regarding "all contributors": one issue with the approach is that the parameter is set on /page/ but the taxonomy lists /terms/. This means, in the absence of DE pages for contributors, we will have access to the "active" parameter in EN but not DE. This will lead to different listings. However, this is probably acceptable - several things are currently missing from the DE version. In any case, here we make some provisions for the DE implementation by using i18n strings in the template. Changes to provide the added params: https://hub.trr379.de/q02/pool-publication-page/pulls/7
Taxonomy does not allow flexibility in representing
associations (current vs past) but it is still useful for
attributions. This tries to keep Contributor as a taxonomy, but tunes
the Project layout to display Contributors (past and present)
separately. This relies on the details being declared in the front
matter.
A custom template for contributors is created, using the Congo's
taxonomy template and repeating iteration over the terms twice, with
filtering.

To split contributors into current and past, we rely on parameter
`params.active` to be set in a page front matter. It's probably better
to rely on an external process to implement the classification logic,
rather than implement it in Hugo, hence we are using a simple boolean
flag.

It also makes sense for an external process to set that flag on a
person record, because that process will likely have access to the
projects the person was associated with. A person could be treated as
inactive with all their project associations marked as ended (an edge
case would be no project association, a decision likely depends on
whether we want the person page to be more of a taxonomy listing or
more of a project association listing).

One issue with the approach is that the parameter is set on /page/ but
the taxonomy lists /terms/. This means, in the absence of DE pages for
contributors, we will have access to that parameter in EN but not DE,
leading to distinct listings. However, this is probably acceptable -
several things are currently missing from the DE version. In any case,
here we make some provisions for the DE implementation by using i18n
strings in the template.
msz changed title from WIP: Split project members into current and former to Split project members into current and former 2026-04-17 11:40:57 +00:00
mih force-pushed former from 39578c2e45 to fc73667af9
All checks were successful
Deploy on webserver / Build site and deploy on success (push) Successful in 4m17s
2026-05-04 13:56:51 +00:00
Compare
mih approved these changes 2026-05-04 14:20:58 +00:00
mih merged commit fc73667af9 into main 2026-05-04 14:21:06 +00:00
mih deleted branch former 2026-05-04 14:21:06 +00:00
Sign in to join this conversation.
No reviewers
mih
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
q04/www.trr379.de!29
No description provided.