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.
fix(collections): escape ckeditor attributes in the admin item form
Item text is stored raw and was printed unescaped into the value attribute of the CKEditor Vue component, so quotes inside the HTML (links, images, figures) closed the attribute early and mangled the editor content on load and on re-save. Escape all attributes in the partial itself, which is the output boundary and is only used inside this module.
Мы используем файлы cookie и сервис веб-аналитики Яндекс.Метрика. Используя сайт, вы соглашаетесь с Политикой использования cookie-файлов и даёте согласие на обработку данных сервисом веб-аналитики Яндекс.Метрика в соответствии с Политикой обработки персональных данных. Cookies можно отключить в любой момент в настройках вашего браузера.