История коммитов

simba77
perf: ask the menu providers once per request for all menus
simba77
perf(news): stop counting the list when only a page of it is read
NewsReadService::articles() reads a page without the total; page() and NewsPageDTO are removed. The section and search pages count once for the pagination, the homepage, related and popular lists no longer count at all.
simba77
fix(news): preserve comment page after submission errors
simba77
fix(news): normalize comments and preserve media-only messages
simba77
feat(theme): confirm forms in a dialog of the site
A form with data-confirm asks in a dialog of the layout instead of the browser window and is sent again with the same button on yes; confirmAction() asks from a script. Deleting a news comment uses it. The style guide shows the dialog.
simba77
feat(admin): add toasts to the panel
The panel gets its own toasts with the contract of the public ones: a stack at the top centre above the dialogs, a server component that stays an alert without the script, and toast() and announce() for scripts. Marked alerts are shown on load, after a live list update and after a side panel loads. The style guide shows every kind.
simba77
feat(theme): add toasts to the public site
A stack at the top centre shows the result of an action wherever it was taken: success, info, warning and error toasts that close when their bar runs out and pause under the pointer or focus. The server asks for one with the toast component, which stays an alert without the script; a script calls toast() or announce(). The style guide shows them.

News comments use them: a deleted comment, and a refused deletion, are toasts; a comment just added lights up and its message is only read out to a screen reader.
simba77
feat(news): open a page of comments at once
Switching pages of the discussion jumps to its start instead of scrolling smoothly through the article; the comment just added is still brought into view smoothly.
simba77
feat(news): keep the comment count and the title in step with the discussion
The comment count in the header of the article is a region of the live list, and the fragment carries the title of the page of comments. The public live-list script looks regions up on the whole page and takes the title from the fragment; the text of the document title is a theme component shared by the layout and the fragment.
simba77
feat(news): send comment forms without reloading the article
Adding and deleting a comment go through the live list: the action keeps its redirect, fetch follows it and the article controller returns the fragment. The form error is a region beside the form, the comment just added is passed by a flash and brought into view, and the editor is cleared after a comment is taken.