Журнал изменений
Content [tabs][tab] blocks and account tabs now emit the same data-attr tab contract as admin modules (data-sl-tabs-init / data-sl-tab-target / data-sl-tab-panel) instead of the legacy navi-tabs-wrap + anchor markup. This makes content tabs render and switch correctly under any theme, including the admin content preview that previously logged missing templates.
Core changes:
- Tab builder (core/system.php):
getNaviTabs() builds links via tabs-link and panels via tabs-panel, wrapped by the shared tabs partial with is_runtime
- Stable unique group id via a static counter, sanitized prefix/id
Plain titles escaped, HTML titles passed as raw label_html (behavior preserved from the old anchor builder)
Benefits:
- One tab contract across themes; admin preview no longer errors
- Robust against duplicate/empty ids
Update config and admins help to match the removed global admin-editor setting: the admin content editor is configured per-admin, not in the main config.
Core changes:
- Config help (admin/info/config/ru.md):
- Editors section: main config holds only the user editor; admin editor is per-admin
- Drop references to the removed global admin-editor field
- Admins help (admin/info/admins/ru.md):
- Expand the editor field description (only place to choose the admin editor; auto-default)
- Add a detailed "Редактор содержимого: какой выбрать" subsection: editor table, processing model, [usehtml], auto-default and on-the-fly switch
Technical notes:
- Only opening/standalone BB tokens are shown; the parser would consume complete BB pairs
Remove the duplicate global "editor.admin" setting. The admin content editor is chosen per-admin (Administrators module); the main config keeps only the user editor. New or unset admins fall back to plain.
Core changes:
- Config form (admin/modules/config.php):
- Remove the admin content-editor select and its save handling
- Saved editor config now holds only user + code
- Default config (config/global.php):
- Remove editor.admin (readers fall back to 'plain' via ?? 'plain')
- Constants (admin/lang/*.php):
- Remove the now-unused _EDITORADMIN constant across all six locales (keep _EDITORUSER)
Benefits:
- No duplicated admin-editor setting; single source is the per-admin profile
- Cleaner config surface
Technical notes:
- editor.admin readers keep the
?? 'plain'fallback; no behavior change beyond default = plain - Generated config/local.php cache regenerates from global.php on next request
Increase the responsive .sl-gallery grid minimum column width from 180px to 250px for larger content download thumbnails.
Core changes:
- Theme (templates/lite/assets/css/theme.css):
- .sl-gallery grid-template-columns minmax 180px -> 250px
Add a dedicated "Редакторы содержимого" section to the config admin help describing the separate user/admin editor configs and how each editor stores and renders content.
Core changes:
- Config help (admin/info/config/ru.md):
- Explain separate editor.user / editor.admin configs and the per-admin override
- Table of content editors (plain, toastui, tinymce, ckeditor) with roles and storage format
- Describe processing model (escaping + parser vs trusted HTML) and [usehtml]/[usephp]
- Note that TOAST UI has Markdown and HTML WYSIWYG modes, both saving Markdown
- Clarify the code editor (CodeMirror) is separate, used for admin code/markup fields
- Align label references with the new "Редактор пользователя" / "Редактор администратора"
Technical notes:
- Only opening/standalone BB tokens are shown; the parser would consume complete BB pairs
Replace the concatenated _EDITOR.' user:' / _EDITOR.' admin:' field labels
in the config editor selectors with dedicated, fully localized constants for a
clearer admin UI.
Core changes:
- New constants (admin/lang/*.php):
- Add _EDITORUSER and _EDITORADMIN across all six locales (de, en, fr, pl, ru, uk)
- Config selectors (admin/modules/config.php):
- Use _EDITORUSER / _EDITORADMIN for the user/admin content-editor selects
Benefits:
- Cleaner, fully translatable labels instead of mixed RU/EN concatenation
- Consistent with the constant-based i18n approach
Technical notes:
- No behavior change beyond the visible label text
Restore the responsive content-image rules that were dropped: a thumbnail gallery component for content download lists and a width cap for parser images.
Core changes:
- Images (templates/lite/assets/css/theme.css):
- .sl-img: add max-width:100%; height:auto so parser/content images never overflow
- Gallery (templates/lite/assets/css/theme.css):
Add .sl-gallery (responsive auto-fill grid), .sl-gallery-thumb (fixed-ratio contain box) and .sl-gallery-dl (download button), all on design tokens
Benefits:
- Content images stay within the layout (no horizontal overflow)
- Clean sl- gallery component for content download lists (replaces legacy .ms- markup)
The [tabs] navigation kept an internal horizontal scrollbar on narrow widths; make the tab row wrap instead. Also adjusts neutral/link button colors and unifies the hover state.
Core changes:
- Tabs (templates/lite/assets/css/theme.css):
- .sl-tabs: drop overflow-x:auto and the scroll-container props
- .sl-tabs > ul: flex-wrap:wrap (was nowrap + width:max-content) so tabs wrap to new rows
- Buttons (templates/lite/assets/css/theme.css):
- .sl-but-navi/.sl-but-read use the neutral text color
- Unified hover (incl. navi/read): brand-link color, link hover border, opacity 0.8
Benefits:
- No stray horizontal scroll inside the tabs on small screens
- Consistent button hover behavior
The alignment BB-tags were processed inline, after the Markdown block parser had already split the text into paragraphs, so a multi-paragraph
...
Core changes:
- Parser (core/classes/parser.php):
Move [left/right/center/justify] handling to filterBbBlocks (block level), alongside [quote]/[hide], so the whole block is captured before paragraph splitting
- Inner content is re-parsed via filterNest(), wrapping each paragraph correctly
- Iterative while-loop to support nesting
- Remove the old inline alignment handler
- Tests (tests/Unit/ParserFixturesTest.php):
Add checkBbAlignBlockSpansParagraphs: multi-paragraph [justify] wraps each <p>, no literal tag remains; single-line [center] still works
Benefits:
- [justify]/[center]/etc. work across multiple paragraphs
- Alignment applied via a single text-align div, content fully parsed
Self-contained demo pages used to review the .sl-alert component variants against the real design tokens before adoption.
Core changes:
- Demo pages (demo/alerts-lab.html, demo/form-notices-lab.html, demo/admin-alerts-lab.html):
- Tone, style, animation, flash and chip variants for lite and admin
- Link the real base.css/theme.css and Bootstrap Icons; no production impact
Benefits:
- Visual reference for the alert component and its variants