Журнал изменений
Updated admin/index.php and all admin/modules/*.php handlers to use the new canonical fragment names, switch getHtmlFrag to getHtmlPart for promoted partials, and replace the legacy sl_hidden CSS class with sl-dimmed.
Core changes:
- admin/index.php:
- sl_hidden → sl-dimmed for inactive module items (3 occurrences)
- getHtmlFrag('sidebar-block', ...) → getHtmlPart(...)
- getHtmlFrag('dashboard-panel', ...) → getHtmlPart(...)
- getHtmlFrag('menu-grid', ...) → getHtmlPart(...)
admin/modules/*.php (25 files — admins, blocks, categories, comments, config, database, editor, favorites, fields, groups, lang, messages, modules, monitor, newsletter, privat, ratings, referers, replace, scheduler, security, statistic, template, uploads):
- title-tip → info-tooltip in all label_html / tip contexts
- getHtmlFrag('div', ...) → getHtmlPart('div', ...) for radio-group wrappers
- getHtmlFrag('form', ...) → getHtmlPart('form', ...) remaining occurrences
- getHtmlFrag('sidebar-block', ...) → getHtmlPart(...)
Benefits:
- admin/ layer fully aligned with renamed template atoms
- sl-dimmed replaces sl_hidden; behavior is now opacity-based rather than display:none
Technical notes:
- sl-dimmed style is defined in templates/admin/assets/css/new.css
Updated all call sites in the core layer to use the new canonical fragment names following the public template restructuring, and renamed legacy sl_ CSS class references to the sl- convention.
Core changes:
- core/classes/parser.php:
- CSS class on generated <img> tags: sl_img → sl-img (4 occurrences)
- core/helpers.php:
- getTplRadioGroup: post-div → content-block
- getTplTitleTip: title-tip → info-tooltip
- core/system.php:
- setCategories: post-div (subcategory wrapper) → content-block
- getNaviTabs: post-div (tab content panels) → content-block
- encode_php: code-hljs → code-highlight
- render_blocks: post-div (error placeholders) → content-block (2 occurrences)
- ashowcom: comment signature post-div → content-block; title-tip → info-tooltip
- core/user.php:
- getPrivateMessageView: post-div signature → content-block (already using is_signature)
- core/admin.php: no further changes beyond previous commit
Benefits:
- All core callers use canonical fragment names
- CSS class convention unified: sl_* removed from generated HTML
Technical notes:
- sl_img → sl-img affects all parser-rendered image tags sitewide
Renamed all fragments and partials that had ambiguous or legacy names to their canonical equivalents across all three public themes (default, lite, simple). Added new changelog and forum fragments, new account/list/fieldset partials, and updated the CSS convention from sl_ to sl- throughout layouts.
Core changes:
- Fragment renames (all three themes):
- post-div.html → content-block.html
- code-hljs.html → code-highlight.html
- title-tip.html → info-tooltip.html
- cat-navi.html → category-nav.html
- edit-tip.html: deleted, replaced by edit-actions.html
- shop-rech.html → shop-invoice.html
- forum-cat-wrap.html → forum-category-table.html
- forum-cat-basic.html → forum-category-row.html
- forum-view-wrap.html → forum-topic-view.html
- forum-view-basic.html → forum-post.html
- New fragments (all three themes):
block-all.html, category-nav.html, changelog-commit.html, changelog-date-header.html, changelog-stats.html, code-highlight.html, content-block.html, edit-actions.html, forum-category-row.html, forum-category-table.html, forum-post.html, forum-topic-view.html, info-tooltip.html, shop-invoice.html
lite-only: forum-teaser-item.html, lite-faq-random-link.html, lite-head-banner.html
- Partial renames (all three themes):
- account-view.html → account-profile.html
- liste.html → content-list.html
- fieldset-block.html → fieldset-panel.html
- line-list.html → compact-list.html
- New partials (all three themes):
account-profile.html, changelog-body.html, compact-list.html, content-list.html, fieldset-panel.html, foot-controls.html
- Modified fragments — extended contracts:
- button.html: id, class, reload_query, reset_url, update_label support
- form-submit.html: button_type param required by callers
editor-action-menu.html, inline-badge.html, textarea.html, voting-view.html, form-field-row.html
- Modified partials:
- view.html: editor menu rendered via fragment include
- changelog.html: extended nested field sub-objects
- editor-upload-panel.html, preview.html, voting-widget.html
- Layouts/CSS:
- app.html, home.html, index.html: sl_but/sl_but_blue → sl-but/sl-but-blue
- CSS: added new utility classes across all theme CSS files
Benefits:
- Fragment and partial names are now consistently descriptive and canonical
- All three themes in sync; no theme-specific divergence
Technical notes:
- All PHP callers must use the new canonical fragment/partial names
- form-submit callers must now pass button_type: 'submit'
Renamed two ambiguous admin fragments to their canonical names, added new atomic fragments for changelog rendering and UI atoms, added the changelog-body partial, and extended the admin CSS with new utility classes and the sl-dimmed state class.
Core changes:
- Fragment renames (templates/admin/fragments/):
- code-hljs.html → code-highlight.html
- title-tip.html → info-tooltip.html
- edit-tip.html: deleted (functionality moved to edit-actions.html)
- New fragments (templates/admin/fragments/):
- bootstrap-icon.html — SVG icon atom using Bootstrap Icons
- changelog-commit.html — single commit card (subject, hash, author, stats)
- changelog-date-header.html — date group separator for changelog list
- changelog-stats.html — diff stats row (added/deleted/file count)
- content-block.html — generic content wrapper (replaces post-div)
- edit-actions.html — editor action dropdown menu atom
- label.html — form label atom (shared with public themes)
- info-tooltip.html — tooltip metadata display atom
- New partial (templates/admin/partials/):
- changelog-body.html — full changelog list with filter form
- Modified partials:
- changelog.html: extended contract for nested field sub-objects
- foot-controls.html, form.html, preview.html, basic-monitor.html: contract updates
- CSS (templates/admin/assets/css/new.css, theme.css):
- Added .sl-dimmed utility for inactive/disabled state
Added layout utilities: .sl-table-block, .sl-inline-gap, .sl-inline-filter-form, .sl-associated-option, filter field width helpers, .sl-right/left/center, .sl-text-danger/success, .sl-muted and many more new utility classes
- Fixed @media rule indentation (moved braces to column 0)
Benefits:
- Canonical fragment names remove ambiguity between hljs/code and tooltip/tip
- Changelog now rendered via fragments in both admin and public contexts
- New CSS utilities cover recurring layout needs without ad-hoc inline styles
Technical notes:
- All admin callers must use info-tooltip and code-highlight as new names
- edit-actions replaces the old edit-tip inline pattern
Regenerated the base_fingerprint in config/local.php to reflect the current template file set following the consolidation of fragments into partials and the dot-path engine upgrade.
Core changes:
- Config (config/local.php):
- base_fingerprint: f005dfd5acda9f455681e75d1976bf6c15b89e63 → 9bac3d7739a31f67a5d1f459dec1ae23f316a997
Benefits:
- Fingerprint matches actual project state; stale cache warnings suppressed
Technical notes:
- Value is auto-generated from current file set hash
Aligned block naming validation with the runtime convention (snake_case.php), updated required frontend file list, relaxed the cross-theme fragment sync threshold, and adapted unit tests for admin login/registration and the view bridge smoke tests to match the new partial contracts and admin template context.
Core changes:
- BlockValidationTest (tests/BlockValidationTest.php):
Block file naming rule changed: block-*.php → snake_case.php
- Matches how the runtime loads the bfile value from blocks/
- fileBlocks extraction: block- prefix stripping removed
- TemplateValidationTest (tests/TemplateValidationTest.php):
Required frontend files updated: fragments/basic.html removed; partials/liste.html, partials/view.html, pages/module.html, layouts/app.html added
- Shared fragment sync allowlist cleared (no hard-coded fragment names)
Cross-theme common fragment threshold lowered: 100 → 60
- Reflects reduced shared fragment count after consolidation
- AdminLoginBridgeFlowTest (tests/Unit/AdminLoginBridgeFlowTest.php):
Login test: template switched 'default' → 'admin'; flat keys replaced by name_field/pwd_field/hidden/submit sub-object contract
Registration test: template switched 'default' → 'admin'; flat keys replaced by field sub-objects (aname_field, aemail_field, apwd_field, etc.)
- ViewBridgeSmokeTest (tests/Unit/ViewBridgeSmokeTest.php):
viewRendersLoginWithoutPartial → viewRendersLoginNavPartial
- Tests login-nav partial with full nested field contract
viewRendersLoginLoggedPartial → viewRendersMessageBlockPartial
- Tests message-block partial (login-logged partial removed)
Benefits:
- Tests reflect actual runtime conventions; no stale fragment name allowlists
- Unit tests exercise the real admin template context
Technical notes:
- No test infrastructure changes; only contract and assertion updates
Updated all public module handlers to use restructured template API: navi-lower now expects nested sub-objects; related blocks use getHtmlPart() with extended nested image_link/title_link/date_badge contracts; removed fragment names that no longer exist and replaced them with surviving equivalents.
Core changes:
navi-lower callers (modules/files, links, search, users, news, pages, media, faq, shop, sitemap, voting, money, main, account, forum):
- Flat keys back_title/back_label/home_href removed
Replaced with nested sub-objects:
- back_button: {button_type, title, label, is_back, is_navi_lower}
- home_link: {href, title, label, is_navi_lower}
- top_link: {href, title, label, is_navi_lower}
- Related section callers (modules/files, links, media, faq, news, pages, shop):
- getHtmlFrag('related', ...) → getHtmlPart('related', ...)
related-item extended: added image_link, title_link, date_badge sub-objects
- href extracted to $href variable to avoid repeated getSeoUrl() calls
- Forum module fragment renames (modules/forum/index.php):
- forum-list-wrap → forum-view-wrap
- forum-list-basic-wrap → forum-cat-wrap (with is_topic_list flag)
- forum-list-basic → forum-cat-basic (with is_topic_list flag)
- forum-cat-info → forum-list-info (with is_category_info flag)
- forum-all-open → title (with is_forum_heading flag)
- forum-view-change → getHtmlPart('fieldset-block', ...) / form-wrap
- Other promotions and renames:
- main-carousel: getHtmlFrag → getHtmlPart
- money-calc-scripts: getHtmlFrag → getHtmlPart
- main-grid fragment → post-div with is_main_grid flag
- main-section/main-content-item: extended with more_link/image_link/etc.
- account-privat-tab-title → span with is_htmx flag
- comment-signature → post-div with is_signature flag
Benefits:
- navi-lower callers consistent with the composed fragment include contract
- related-item sub-objects enable template-level link and badge rendering
- Forum template rename disambiguates category list from topic list views
Technical notes:
- Legacy flat keys removed from navi-lower callers; templates require nested form
- date_badge sub-object uses ISO 8601 datetime for <time> element
Replaced all occurrences of getHtmlFrag('form', ...) and getHtmlFrag('div', ...) with getHtmlPart() across every admin module handler, following the promotion of those templates from templates/admin/fragments/ to templates/admin/partials/.
Core changes:
- Admin module handlers (modules/*/admin/index.php — 23 files):
getHtmlFrag('form', [...]) → getHtmlPart('form', [...])
- Covers all form wrappers used in list, add, edit, config, and search views
getHtmlFrag('div', [...]) → getHtmlPart('div', [...])
- Covers collapsible div containers (e.g. mail template block in account)
Files: account, auto_links, changelog, clients, contact, content, faq, files, forum, help, jokes, links, media, money, news, order, pages, rss, search, shop, sitemap, voting, whois
Benefits:
- Admin module callers consistent with promoted partial paths
- getHtmlFrag() reserved for true inline atoms across the entire admin layer
Technical notes:
- No logic changes; substitution is structural only
Updated all callers in core/admin.php, core/helpers.php, core/system.php, and core/user.php to use getHtmlPart() for templates promoted from fragments/ to partials/, replaced removed fragment names with their surviving equivalents, and aligned login, navigation, and preview call sites to the new nested data contracts.
Core changes:
- core/admin.php:
- getHtmlFrag('sidebar-block', ...) → getHtmlPart(...)
- getHtmlFrag('form', ...) → getHtmlPart(...)
- core/helpers.php:
- getTplPreviewContent: partial name 'preview-content' → 'preview'
- getTplAdminTabs: 'module-head' → getHtmlPart(...)
- setTplAdminInfoPage, getRatingAsync: form/div → getHtmlPart(...)
- getModuleNavi: 'navi' → getHtmlPart(...); pre-computes link hrefs as named keys
- core/system.php:
setHead (logged branch): login-logged fragment → list + link composition
- avatar link, username, logout built via getHtmlFrag('list', ...)
- setHead (login form): submit_button contract updated; token variable renamed
- setHead (no-login branch): login-without fragment → list + link composition
- setCategories: 'categories' → getHtmlPart(...)
- adminblock: 'sidebar-block' → getHtmlPart(...)
- renderFootControls: 'foot-controls' → getHtmlPart(...)
- encode_php: 'div' → getHtmlPart(...)
- ashowcom: 'comment-signature' → post-div with is_signature flag
- core/user.php:
- getUserNav: account-nav/account-nav-item → post-div + link composition
- getPrivateMessageView: 'comment-signature' → post-div with is_signature
Benefits:
- getHtmlFrag() reserved for true inline atoms; getHtmlPart() for block partials
- Deleted fragment names no longer referenced in core
Technical notes:
- Behavior unchanged; call-site alignment only
Removed fragment files that represent independently renderable blocks and promoted them to partials, or merged their content into existing partials. Added label.html as a new shared inline atom for form labels. Templates that compose sub-fragments now use the new dot-path include syntax ({% include 'fragments/button.html' with back_button %}), which passes a nested data object directly without PHP preprocessing.
Core changes:
- Deleted fragments (templates/{default,lite,simple}/fragments/):
account-nav.html, account-nav-item.html, account-privat-tab-title.html, code-block.html, comment-signature.html, forum-all-open.html, forum-cat-info.html, forum-list-basic-wrap.html, forum-list-basic.html, forum-list-wrap.html, forum-view-change.html, login-logged.html, login-without.html, main-grid.html, navi.html, pager-dots.html, rating-wrap.html, voting-home-wrap.html, voting-home.html
- Promoted fragments → partials (all three themes):
categories.html, main-carousel.html, money-calc-scripts.html, related.html, voting-home.html
- New files (all three themes):
- fragments/label.html — inline label atom for form field rendering
- partials/navi.html — module navigation partial (previously a fragment)
- Deleted partials (all three themes):
- login-logged.html, login.html, registration.html, preview-content.html
- Modified partials — aligned to nested data contracts:
- navi-lower.html: {% include '...' with back_button/home_link/top_link %}
- account-view.html: back button via {% include 'fragments/span.html' %}
- preview.html, fieldset-block.html, view.html: extended contracts
- Modified fragments — extended for new sub-object and dot-path contracts:
button.html, link.html, span.html, date-badge.html, related-item.html, main-content-item.html, main-section.html, post-div.html, title.html, forum-cat-basic.html, forum-cat-wrap.html, forum-view-wrap.html, forum-list-info.html, card.html, edit-tip.html, field-value.html, form-field-row.html, list.html, session-row.html, table.html
- templates/lite/index.php:
- submit_button: removed button_class in favour of is_login_submit flag
Benefits:
- fragments/partials boundary enforced consistently across all three themes
- Dot-path includes eliminate per-partial PHP translation layers
- Deleted files reduce dead HTML no longer referenced by any caller
Technical notes:
- All three themes kept in sync; no theme-specific divergence introduced
- templates/lite/images/ placeholder index.html files added for VCS tracking