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_feedreads 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_feednode 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 oneblock.views_block.live_feed-block_1in the Live Feeditemsslot.entityqueueis declared explicitly inrecipe.yml(install) andcomposer.json(drupal/entityqueue: ^1.7). It was already installed viavarbase_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) andtests/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-runis clean (10 scenarios, 55 steps, 0 undefined). It needs a real run. content_editorcannot curate the queue.varbase_content_basegrantsmanipulate all entityqueuesonly tocontent_adminandsite_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