BeaconCMS/beacon

Page update notification and reload

开放

#179 创建于 2023年3月24日

 (0 条评论) (0 个反应) (0 位负责人)Elixir (120 个派生)batch import
area:contentenhancementgood first issue

仓库指标

星标
 (1,194 个星标)
PR 合并指标
 (30 天内没有已合并 PR)

描述

Make updating pages' layout optional. Currently, publishing a page will reload the resources associated with that page (templates, css, and so on):

https://github.com/BeaconCMS/beacon/blob/02f982e360db5249802b8ee6121a195699affb65/lib/beacon/pages.ex#L141

which will eventually broadcast a page_updated event:

https://github.com/BeaconCMS/beacon/blob/02f982e360db5249802b8ee6121a195699affb65/lib/beacon/loader.ex#L118

that's captured by the page live view to update its own state

https://github.com/BeaconCMS/beacon/blob/7790eb72769a026c0bdfc3167aab394a9b73ce91/lib/beacon_web/live/page_live.ex#L39

That LiveView is responsible for displaying pages and updating title, meta tags, and style. The problem is current visitors of that page will get a reloaded page while still reading that page, which is not desirable UX-wise. For that reason reloading a page in-place is disabled for now (the commented code).

But we want to make the last step optional (updating its own state) by displaying a "Updates Available" notification/button to current visitors of the page and giving the option to update if they want to. Clicking on this button will refresh the page.

We also want to add an option on /admin to allow forcing such update on pages when publishing pages, in this case it would display a notification "This page has been updated".

贡献者指南