Install
Works with Drupal: ^10.3 || ^11 || ^12Using Composer to manage Drupal site dependencies
Alternative installation files
Download tar.gz
142.18 KB
MD5: 0039a19fb77cb7b2c1790d57ba855961
SHA-1: c0360121e4bc74f6a5fcd16516dbc9ba62834e57
SHA-256: 1da8642f8858aa12b8edae79649dcdea0229a32deb256f0cadcf1aa34b920c30
Download zip
252.36 KB
MD5: 0a1bc78834f99db8741dab4d767d6500
SHA-1: e4e603ad754a551de7d3bab30ade39aab3016507
SHA-256: d69fdf0e87bd36e5d9358b8049d69781a7317f4f6998720beda1ac9166bff00b
Release notes
First beta of Live feed. This release adds Drupal 12 support and fixes the bugs found in a code review of the alpha.
Upgrading from 1.0.0-alpha1
- Run
drush updbanddrush cr. Hook implementations moved to classes and services changed, so a cache rebuild is required. - API change:
PATCHrequests to the editor endpoint must now carry thechangedvalue of the update as it was loaded. Requests without it are rejected (400). The bundled editor already does this; only custom clients are affected.
Drupal 12
- All modules declare
^10.3 || ^11 || ^12(#3632856). Hooks are object-oriented hook classes, with#[LegacyHook]wrappers for Drupal 10.3 and 11.0. - Tokens work on Drupal 12, which no longer loads
livefeed.tokens.inc. - A live blog without an introduction renders on Drupal 12, whose component validation rejected the empty
introprop. - Tested on 12.0.0-beta2 with the core module,
livefeed_blockandlivefeed_eca. The Canvas, Pusher and Tool API integrations depend on contrib modules that have no Drupal 12 release yet.
Readers and polling
- An update set back to draft disappears for readers, by polling and by push.
- Polling no longer skips an update saved while a poll was running.
- Push refreshes bypass browser and CDN caches, are no longer dropped during a poll, and updates deleted while waiting behind the new updates button are not inserted.
- A reader that fell far behind (more than 100 changes, for example a tab that slept for hours) reloads the page instead of fetching the whole live blog. It never skips changes.
- "Load older updates" no longer skips updates that share their publication time with the oldest update shown, and no longer shows when a pinned update completes the first page.
- Reader endpoints are not offered to shared caches when the response is personal (a message or cookie). Older pages of a live blog that is live expire as fast as polling, so caches cannot bring back deleted updates.
- Polling and paging no longer replace each other's dynamic page cache entry. Each switch logged a PHP warning.
- The reader count requires access to the live blog.
Editors
- Two editors saving the same update at the same moment no longer overwrite each other: the second one gets the conflict message.
- Editing an update no longer moves its publication time back by up to 59 seconds. Publishing a draft places it at the top unless a time is entered.
- Pinning a draft no longer unpins the published pinned update.
- The publication time is a date and time field. An invalid time is reported instead of being ignored or causing a server error.
- A double click on Publish no longer publishes the update twice.
- The ECA "Create post" action no longer escapes token values twice.
Media cleanup
- Deleting a live blog deletes its updates.
- Media uploaded for updates are deleted once nothing uses them, and their files become temporary for file cron. Media from the media library and media used elsewhere are kept.
- Known limitation: media embedded in formatted text elsewhere on the site are not detected and are deleted with the update.
Known issues before a stable release
See TODO.md in the repository. The most important one: a live blog has no unpublished state, so a live blog that is being prepared can be read by anyone with "View livefeeds", which anonymous users get on install.