The generated dictionaries had drifted from their .po sources: languages translated on Crowdin were missing, and the collections module had no dictionaries at all.
feat(consent): allow HTML in the cookie banner text
The banner text is entered by an administrator and is now sanitized on output with an inline-only allowlist instead of being escaped, so it can carry links to the cookie policy. The admin form documents the supported markup.
fix(consent): use bootstrap 5 markup for the consent checkbox
The template still used the Bootstrap 4 custom-control classes, which no longer exist in the compiled CSS, so a long consent title wrapped the checkbox onto its own line.
pageNotFound() resolved its message through __(), which looks it up in the current translation domain - the domain of the module handling the request, where the string does not exist - so the page always fell back to English. The ERROR: 404 Not Found title never went through translation at all, being a plain default parameter value. Both strings are now taken from the system domain explicitly.
feat(consent): allow HTML in the title and consents without a text page
The title is shown next to the checkbox and may now carry inline HTML with links, so it is sanitized on output with an inline-only allowlist and shown as plain text in page titles, breadcrumbs and admin tables. The text field became optional: a consent without text has no page of its own (/consent/{id} returns 404) and the form renders the title with its own links instead of linking to the text.
Forms now get FormConsentDTO from ConsentService and render the shared system::app/consent-checkbox partial. The consents.title column is widened to TEXT; existing installations are updated with install/update_consent_title.php.
Мы используем файлы cookie и сервис веб-аналитики Яндекс.Метрика. Используя сайт, вы соглашаетесь с Политикой использования cookie-файлов и даёте согласие на обработку данных сервисом веб-аналитики Яндекс.Метрика в соответствии с Политикой обработки персональных данных. Cookies можно отключить в любой момент в настройках вашего браузера.