feat: #3624019 Drive the Live Feed ticker from an entity queue

Issue: https://www.drupal.org/project/rightup/issues/3624019

Depends on the theme MR vartheme_bs5_rightup!25 (merged) (issue https://www.drupal.org/project/vartheme_bs5_rightup/issues/3624018), which must merge first. Without it the views wrappers are not dissolved and the ticker renders as a stacked list rather than a single line; it also adds the timestamp input the Live Feed Item binding uses.

The defect: the home page ticker shipped six headlines and six times typed into the Canvas page, with only the link bound. Every RightUp site showed the same six invented headlines for ever, and publishing an article never reached the ticker.

The change:

  • entityqueue.entity_queue.live_feed: a simple queue an editor curates, taking News and Podcast nodes, up to 10.
  • views.view.live_feed reads it: queued items first in the editor's order, then the newest published content filling the rest. The query is DISTINCT, so a node never appears twice.
  • The live_feed node view mode renders each row through Live Feed Item in Canvas (content templates for News and Podcast), binding the authored date, title and URL.
  • content/canvas_page/01-home.yml: the six typed items become one block.views_block.live_feed-block_1 in the Live Feed items slot.
  • entityqueue is declared explicitly in recipe.yml (install) and composer.json (drupal/entityqueue: ^1.7). It was already installed via varbase_content_base, but RightUp now depends on it directly.
  • varbase-e2e coverage: tests/features/08-content-homepage/08-02-homepage-live-feed.feature (10 scenarios) and tests/step-definitions/live-feed.steps.js.

No default content is added. A simple queue's subqueue cannot be shipped: importing the queue makes Entityqueue create the subqueue with a freshly generated UUID (Simple::onQueuePostSave()), so a subqueue file with a fixed UUID can never match. default_content INSERTs and the install dies on a duplicate key on entity_subqueue.name. This is deterministic. Falling back to the latest content is what keeps the ticker populated without shipping content.

Still to do:

  • The e2e suite has not had a green run yet. It was written against a site that was mid-reinstall, so all 10 scenarios failed on the environment rather than the feature. --dry-run is clean (10 scenarios, 55 steps, 0 undefined). It needs a real run.
  • content_editor cannot curate the queue. varbase_content_base grants manipulate all entityqueues only to content_admin and site_admin, so an editor cannot pin an item today.
  • The pipeline was not run locally: it builds and installs a site, and this branch was not installed for this MR. The fork pipeline is the first run.

AI-Generated: Yes

Checkpoints:

  • File an issue
  • Addition/Change/Update/Fix
  • Testing to ensure no regression
  • Automated unit testing coverage
  • Automated functional testing coverage
  • UX/UI designer responsibilities
  • Readability
  • Accessibility
  • Performance
  • Security
  • Developer Documentation
  • User Guide Documentation
  • Reviewed by human
  • Code review by maintainers
  • Full testing and approval
  • Credit contributors
  • Review with the product owner
  • Release notes snippet
  • Release

🤖 Generated with Claude Code

Edited by Rajab Natshah

Merge request reports

Loading
Loading