Neue Fragment- und Partial-Dateien für den Admin-Bereich eingeführt, bestehende Fragmente von Tabellen-/Include-Struktur auf eigenständige Grid-Layouts und Inline-HTML migriert — für bessere Wartbarkeit und CSS-Grid-Kompatibilität.
Core changes:
- Neue atomare Head/Meta-Fragmente (head-link.html, head-script-inline.html, head-script-src.html, meta-refresh.html, span.html):
Kapseln HTML-Primitive als eigene Fragmente * Einheitlicher Einstiegspunkt für <link>, <script src>, <script inline>, <meta http-equiv="refresh">, <span>
- Neues Fragment sidebar-count-row.html / Partial session-summary.html:
- sidebar-count-row: Grid-Layout für Label+Zahl-Paare im Sidebar-Block
- session-summary: Eigenständiges Partial für die Sitzungsübersicht mit Toggle-Logik
- Migrierte Fragmente (admin-block-links, session-row, tabs-link):
- admin-block-links: Tabelle → sl-admin-block-links Grid
- session-row: <tr><td> → sl-session-row Grid
- tabs-link: {% include %} → Inline-HTML mit sl-tabs-link-Logik
Benefits: - Einheitliche Grid-Struktur ersetzt heterogene Tabellen-Hacks - Fragmente sind unabhängig renderbar ohne Eltern-Kontext - CSS-Klassen direkt im Fragment statt im PHP-Caller
Technical notes: - sidebar-count-row erwartet label_html und value_html - session-summary erwartet Admins/Members/Bots/Visitors-Daten inkl. Toggle-IDs
Updated required-file lists and CSS class assertions to match renamed templates, and added two new test methods to TemplateValidationTest for exhaustive reference checking and inline style detection.
Core changes:
- TemplateValidationTest (tests/TemplateValidationTest.php):
- Required frontend files: partials/liste.html → partials/content-list.html
New test testConcreteTemplateReferencesExist(): * Scans all PHP/HTML files in admin/, modules/, and template dirs * Resolves every getHtmlFrag/getHtmlPart call to its template file path * Resolves every {% include %} / {% extends %} reference * Fails if any referenced file does not exist on disk
New test testHtmlTemplatesDoNotContainInlineStyles(): * Scans all .html template files (including module templates) * Fails if any file contains <style>, </style>, or style= attributes
- AdminPreviewBridgeFlowTest (tests/Unit/AdminPreviewBridgeFlowTest.php):
- Updated assertions to reflect new admin preview partial contract
- ViewBridgeSmokeTest (tests/Unit/ViewBridgeSmokeTest.php):
- testHomeLayoutRendersCorrectly: sl_home → sl-home CSS class assertion
Benefits: - testConcreteTemplateReferencesExist provides an exhaustive linkage check; any missing template file is caught before runtime - testHtmlTemplatesDoNotContainInlineStyles enforces the CSS convention
Technical notes: - New tests scan the entire project tree at test time; no mocks required
Updated all module handlers (admin and public) to use canonical fragment names, pass the required button_type to form-submit, replace the renamed partials, and align account/forum/shop callers with new partial names.
Core changes:
- Fragment renames in all callers:
post-div → content-block (account, forum, files, links, news, pages, media, faq, shop, sitemap, voting, users, money, main, auto_links, clients, contact, content, help, jokes, order, recommend, rss, whois)
title-tip → info-tooltip (admin modules: account, content, files, forum, links, media, news, order, pages, shop, voting)
- forum-cat-wrap → forum-category-table
- forum-cat-basic → forum-category-row
form-submit: added button_type: 'submit' to all occurrences in public module handlers where previously omitted (account, files, links, etc.)
- Partial renames in callers:
- liste → content-list (account: last(), edithome())
- account-view → account-profile (account: view())
- fieldset-block → fieldset-panel (forum: forum(), view())
account/view(): added editor-action-menu fragment for admin actions (replaces inline has_admin_actions HTML in account-view/account-profile) * admin_actions_html passed as rendered HTML to account-profile partial
- auto_links/index.php:
- cat-navi → category-nav
- shop/index.php:
- shop-rech → shop-invoice
Benefits: - All module callers use canonical fragment names consistently - form-submit button_type requirement fulfilled sitewide
Technical notes: - No logic changes; substitution and contract alignment only
Removed the admin/public rendering split in changelog/common.php so both contexts now use the same fragment-based templates. Extended changelog/index.php with nested field sub-objects for the new partial contract. Fixed the billing template CSS reference.
Core changes:
- modules/changelog/common.php:
chlogRenderCommitStats: removed ADMIN_FILE branch; both contexts now call getHtmlFrag('changelog-stats', ...) with a files array for dot-path rendering
chlogRenderCommits: removed all ADMIN_FILE branches; all contexts now use getHtmlFrag('changelog-commit', ...) and getHtmlFrag('changelog-date-header', ...) * body_html passed as pre-filtered content string (no wrapper fragment) * basic-changelog-commit and changelog-commit-body fragments retired
- modules/changelog/index.php:
Added nested field sub-objects to getHtmlPart('changelog', ...): * hidden, search_field, author_field, file_field, datefrom_field, dateto_field * filter_button, reset_button (full button sub-objects with class overrides)
- modules/money/templates/billing.html:
- CSS link: templates/$theme/styles.css → templates/$theme/assets/css/new.css
Benefits: - Single rendering path for changelog reduces maintenance surface - Billing HTML now loads the correct CSS bundle
Technical notes: - changelog-stats fragment now receives a files[] array for dot-path item rendering - Callers passing body as raw string; changelog-commit wraps it if non-empty
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





