Последнии сообщения форума
Migrate every call site away from the removed admin fragments and onto the consolidated atomic contracts (link, div, hidden, button, select, inline-badge, save-action, title-tip, message-block with details, flat menu-grid items). Also switch two public theme helpers (pager-dots, radio-group) to the flag-based variants and make small variable-name cleanups along the way.
Core changes:
- core/helpers.php:
getTplPager / getPageNumbers: pager-dots now emits
inline-badgewithis_pager_dots- getTplRadioGroup: uses
post-divwithis_radio_groupflag getTplTitleTip: builds an
itemsarray and hands it totitle-tipdirectly (no per-item include)- getRatingAsync: drops the deleted
rating-wrapin favour ofdiv - core/admin.php:
- admininfo row actions switch from
row-actions-itemtolink - All ~20 admin info row constructions realigned to the new contract
- core/system.php:
getUserSessionInfo / getUserSessionAdminInfo: supply
name_linkandmodule_linkstructured objects alongside the legacy fields so session-row can render links via the consolidatedlinkfragment- adminblock: add
admin_link/logout_linkobjects - renderFootControls: add
top_linkobject for the upper anchor - encode_php: use
divwithis_codeflag instead ofcode-block - getAsyncPager: pager-dots switches to
inline-badgevariant getCartSummary: rename
$titleLinkto$titlinkto satisfy the variable-name rule (letters only, ≤8 chars)- admin/index.php (admin dashboard):
getAdminMenu: compose
image_link,title_link,link(grid) objects consumed by the new menu-grid-item / menu-list-item contractsgetAdminPanel: feed
items_htmldirectly to the flattenedmenu-grid(no per-row chunking; CSS now wraps)- admin/modules/*.php:
admins, blocks, categories, editor, groups, monitor, scheduler, security: migrate emissions from removed fragments (row-actions-item, user-search, multi-select, etc.) to the consolidated fragments and pass
linkobjects where needed- modules/*/admin/index.php:
account, auto_links, changelog, content, news, search: migrate admin-side emissions the same way; notably content/admin and news/admin switch comment/action groupings to the new contracts
- modules/money/index.php (send):
Build message-block
detailsas a structured list (label + value_html) instead of concatenatingtitle-tip-itemoutput intodetails_html- modules/shop/index.php:
edit-tipcallers passedit_link/delete_linkobjects withconfirm_textflag instead of the old flatedit_*/delete_*scalar fields
Benefits: - Every admin emission now goes through the same atomic fragment set; no hidden fragment-specific logic - Dashboard menu-grid is a single flat list; layout is CSS-driven - Session and footer rendering work off structured link objects, matching how the rest of the codebase composes links - Pager-dots and radio-group callers stop depending on deleted per-purpose fragments
Technical notes: - Closes the multi-commit refactor series: admin fragment consolidation + public fragment contract extension + admin CSS update + caller migration - link/div-based recomposition matches the HTML emitted previously; no visible output change expected - A CRLF warning is emitted on core/admin.php during staging; Git normalizes the file to LF on commit as per .gitattributes
Align the three public themes (default, lite, simple) with the same fragment contracts used on the admin side: inline items loop inside title-tip, pager-dots variant on inline-badge, radio-group flag on post-div, and optional structured details list on message-block.
Core changes:
- title-tip fragment (default/lite/simple):
Replace the single-content emission with a multi-branch contract: content_html / content / items (with inline label+value+is_last loop) / label_text
Remove the per-theme title-tip-item fragment; the item loop is inlined into title-tip to match the admin contract
- inline-badge fragment (default/lite/simple):
Add
is_pager_dotsflag: renders the ellipsis pager placeholder (sl_num_exitspan) directly from inline-badge- Matches admin-side pager-dots consolidation
- post-div fragment (default/lite/simple):
Add
is_radio_groupflag that appends thesl-radio-groupclass when the caller composes a radio group via post-div- message-block partial (default/lite/simple):
Accept a structured
detailslist (label + value/value_html) in addition to the existing free-formdetails_htmlCallers building a key/value detail table can now skip manual
<br>composition
Benefits: - Single contract for title-tip across admin and public themes, eliminating the per-item include round-trip - Shared pager-dots visual uses one fragment definition across stacks - Message-block rendering works from structured data instead of pre-concatenated strings
Technical notes: - Pairs with the core/helpers getTplTitleTip switch to items and the modules/money/send switch to details (see caller migration commit) - No visible HTML change when callers supply the same data in the new format; the rendered markup matches prior output
Rework the admin stylesheet to match the consolidated fragment contracts: drop rules that belonged to removed fragments, add rules for the atomic variants now emitted by select, div, save-action, and flatten menu-grid to remove the row wrapper.
Core changes:
- Admin stylesheet (templates/admin/assets/css/new.css):
- Add
.sl-save-action-selectfor save-action's composed select Add
.sl-debug-section,.sl-debug-section-success,.sl-debug-section-warn,.sl-debug-section-dangerto drive the debug-section fragment's tone variantsAdd
.sl-code-row-odd,.sl-code-row-even,.sl-code-row-num,.sl-code-row-cellto style the code-row fragment directlyFlatten
.sl-menu-grid: it is now a flex wrap container, with the former.sl-menu-grid-rowwrapper removed from markupRemove
.sl-menu-grid-row,.sl-user-search*rules tied to the deletedmenu-grid-rowanduser-searchfragments
Benefits: - Stylesheet stays aligned with the current admin fragment set - Menu-grid renders from a single flat items_html without per-row wrappers, matching the admin/index.php caller change
Technical notes: - Pure CSS change; no JS or template contract implications beyond what the admin fragment refactor already introduced
Collapse ~35 single-purpose admin fragments into shared atomic ones (link, div, hidden, button, select, inline-badge, etc.) and extend the surviving fragments with the flags their consolidated callers need. Three admin partials are realigned to the new contracts.
Core changes:
- Removed obsolete fragments (templates/admin/fragments/):
Wrappers collapsed into
link/div: alpha-nav-link, alpha-nav-text, category-sub-item, comment--link,
comment-avatar, comment-num-link, comment-text, comment-list-form, geo-ip-flag, label-item, row-actions-item, view-field, title-tip-item, table-cell, table-row-content, span-raw, navi-tab-link, navi-tab-content, tabs-* helpersForm/list wrappers collapsed into shared
form/select/hidden: * ajax-textarea-form, comment-list-form, edit-list-select,
forum-reply-form, money-calculator-form, multi-select, radio-group, radio-option, user-searchDisplay wrappers collapsed into
inline-badge/div: * graphic, img-preview, pdo-error-badge, rating-wrap, code-block,
code-table, div-collapse, session-admin-summary, list-bottom, menu-grid-row, msg-center, warning-list, checkbox-input, pager-dots (now an inline-badge flag)- Extended surviving fragment contracts (templates/admin/fragments/):
- title-tip: inline
itemsloop replaces the title-tip-item include table: single
<table>emission withis_wrapless+disable_sortbranches handled via boolean flags instead of 4-way duplicationform: accept either raw
actions_html+submit_labelor a structuredactionsblock that defers to save-action- save-action: compose from
hidden+select+buttonfragments - inline-badge: add
is_pager_dotsflag (replaces pager-dots) post-div, div, link, span, button, hidden, input, checkbox, radio, select, textarea, file-input, foot-controls, module-foot, admin-block-links, menu-grid, menu-grid-item, menu-list-item, debug-section, code-row, edit-tip, session-row, tabs-link, toggle-form-block, table-cells: tighten markup, add boolean flags required by migrated call sites
- Realigned partials (templates/admin/partials/):
changelog.html, login.html, registration.html: update to match new contract of underlying fragments (link/hidden/button composition)
Benefits: - One atomic fragment per concept; admins stop carrying 3-4 near duplicates for the same tag - Flag-driven variants keep markup consistent across callers - Contracts converge between admin and public themes (title-tip, inline-badge, save-action etc.)
Technical notes: - Pairs with the core + admin + modules caller migration commit below; intermediate checkouts are not expected to render cleanly - No behavioural change in the final output; the emitted HTML matches the previous markup once callers pass the new flag/link arrays
Empty the per-language blocks help pages. Their contents described the previous block-<name>.php naming convention and the old fly/standard block mechanics, none of which match the current implementation after the recent block filename normalization and block-rendering refactor.
Core changes:
- Legacy help pages (admin/info/blocks/):
- Empty de.html, en.html, fr.html, pl.html, uk.html
Files are kept in place (they are loaded by the admin help viewer) but carry no body until rewritten against the current architecture
Benefits: - Stops shipping documentation that contradicts the current code - Clears the slate for a rewrite aligned with the new naming and APIs
Technical notes: - No code changes and no path changes; the admin help viewer simply renders an empty help body for this section - New documentation for blocks will land separately once the stack settles
Refresh _meta.base_fingerprint in local config to reflect the new baseline after the block-filename normalization, slim form-add partial and liste/form-add caller migration.
Core changes:
- Local config snapshot (config/local.php):
- Update
_meta.base_fingerprintfrom9bac3d77…tof005dfd5…
Benefits: - Keeps the deploy fingerprint consistent with the current tree state - Prevents the integrity check from flagging the refactor as drift
Technical notes: - Value-only change; no structural or behavioural impact
Align call sites with two consolidated template contracts: - liste partial absorbs table-open/rows/table-close/empty-alert/pager, replacing the old table + table-row + alert branching in callers - form-add partial accepts a single fields string; callers now compose token, name, email, title, category, text, site fields from atomic fragments themselves
Core changes:
- core/user.php (getPrivateMessageView):
- Introduce local
$messageListhelper that emitslistepartial Convert inbox/outbox/saved lists to build
$rowsarrays and hand them to the helper instead of manual table + alert branching- Switch row loop to
while ($row = ...)pattern used elsewhere - Module callers (modules/*/index.php):
form-add contract migration: * account, contact, recommend, shop.kasse: inject token via
getHtmlFrag('hidden') inside `fields` instead of `token` param- money, order: drop redundant empty
tokenparam - whois.add, help.add/addview, auto_links.add: replace lbl_*, emailval,
titleval, catselect, hometext, siteval, has_name/is_user with composed `fields` built from form-field-row fragmentsliste partial migration (table + alert + pager collapsed to one call): auto_links.send, clients., content, faq, files, jokes, links,
media, news, pages, shop.kasse/clients/partners, users.*, account.last/asetupConsistently switch list loops to
while ($row = $db->getSqlRow())with array destructuring for readability and alignment with existing patterns
Benefits: - One template contract for listings; callers stop emitting scaffolding - Token injection is visible at the call site, matching how all other form fields are composed - Empty-result branches no longer duplicate alert scaffolding - Smaller modules files overall (-362 lines vs +405 lines removed)
Technical notes: - Pairs with the preceding templates/partials — slim form-add commit - No behavioural change in output structure; visible HTML matches the previous table/alert markup (liste is a wrapper around the same table/table-row/alert fragments) - getHtmlPart('liste', ...) accepts: rows, table_open, table_close, optional empty_alert, optional pager_html
Drop all inline field rendering from form-add partials. The partial now only renders the form shell, extrafields, fields and the submit row; per-field scaffolding (token, name, email, title, category, hometext, bodytext, fields_before/after_text, site) is no longer the partial's responsibility.
Core changes:
- Form shell partial (templates/default/partials/form-add.html):
- Remove inline {% if token %} hidden input
- Remove inline {% if has_name %}/{% if is_user %} username blocks
- Remove inline {% if emailval %}, {% if lbl_title %}, {% if lbl_cat %}
- Remove inline {% if hometext %}, {% if bodytext %}, {% if siteval %}
- Remove {% if fields_before_text %} / {% if fields_after_text %} hooks
- Keep: form tag,
extrafields,fields, submit row - Same change applied to templates/lite/partials/form-add.html
- Same change applied to templates/simple/partials/form-add.html
Benefits: - Single rendering contract across themes (no divergent inline markup) - Callers compose the body from atomic fragments they already own - No surprise required fields hidden in the partial; form semantics (required, placeholder, names) live where the data lives
Technical notes: - Breaking contract: callers must now inject token, name, email, title, category, text/body, site fields via fields (see accompanying modules refactor commit) - Unused params (token, has_name, lbl_*, emailval, hometext, bodytext, siteval, etc.) are simply ignored by the thinner partial
Unify block file naming across storage, admin UI, default data and docs. Block files no longer carry a block- prefix; the admin editor, default dataset, migration and template comments are aligned to the new scheme.
Core changes:
- Block files (blocks/):
Rename 23 block files: block-<name>.php -> <name>.php * Covers navigation, language, user_info, stat, banner_random, forum,
login, menu, modules, news, pages, faq, files, jokes, jokes_random, auto_links, center*, img, links, search, voting- No code changes inside block files themselves
- Admin editor (admin/modules/blocks.php):
Update scandir() regex to match
^(.+)\.php$instead of^block-(.+)\.php* Affects add(), fileedit(), filecode(), edit() scannersUpdate POST validation for
bfileto accept bare filenames * addsave(), editsave(), filecode(), filecodesave()- Update filecode() path rewrite to drop the
block-prefix injection - Update title fallback in addsave() to only strip
.php - Default dataset & migration (setup/sql/):
- insert.sql: rewrite default _blocks rows to new filenames
table_update6_3.sql: add UPDATE statement to strip
block-from bfile for existing installations during upgrade- Template comments (templates/*/assets/css/blocks.css):
Update inline doc reference
blocks/block-keywords_search_style.phptoblocks/keywords_search_style.phpin default and lite themes
Benefits: - Consistent filename convention across the codebase - Shorter, cleaner block filenames in admin and storage - Fresh installs and upgrades both land on the new scheme
Technical notes: - Upgrade path is handled by a single UPDATE in table_update6_3.sql - Admin regex now accepts any <name>.php under blocks/, which is the same trust boundary as before (still scoped to the blocks/ directory) - No behavioural change in block rendering; only naming is affected
Delete all template files that are no longer referenced by any PHP caller after the migration to generic fragments and inlined form-add/form-wrap patterns. Applied uniformly to default, lite, and simple themes.
Core changes:
- Fragments replaced by generic fragment flags:
- submit → form-submit fragment (same rendering, unified contract)
- graphic → span with class + title
- line-stack-item → span with sl-line-stack-item + is_line_break flag
- msg-center → post-div with is_center flag
- messagebox → post-div with class + title fragment
- radio-group → post-div with sl-radio-group class
- category-icon → link with img_src (or span for locked items)
- category-title → link/span with sl-catname class
- category-sub-item → post-div
- div-hr → post-div with has_hr flag
- tip → post-div with date-badge + span inside
- basic-search → caller builds search inline
- Auto-links fragments replaced:
- auto-links-embed-link → link fragment
- auto-links-embed-image → link with img_src
- auto-links-code-row → table-row + textarea
- Code display:
- code-table → table open/close with is_form flag
- Rating/voting:
- voting-post → checkbox/radio + list-item
- voting-basic → post-div with class post-vote
- Shop fragments:
- shop-cart-button → link with is_htmx + onclick_attr
- shop-kasse-content → post-div wrapper
- Email/notification fragments:
- security-mail-message → message-block partial
- rss-source-title → title (is_level_two) + link (is_blank)
- recommend-success-text → alert fragment
- account-comment-section → nested post-div
- Media:
- media-link-row → form-field-row with link label + input
- Partials replaced by form-add/form-wrap + inlined fields:
- contact-form → form-add with form-field-row fields
- files-download-form → form-wrap with hidden + form-submit
- forum-reply-form → form-add with form_attr
- calculator-form → form-add with number/result/button fields
- mini-post-form → form-add
- fieldset-post-form → fieldset-block
- recommend-form, rss-info-form, rss-read-forms → form-add with inlined fields
- shop-kasse-form → retained as named partial (not deleted)
- whois-output → inline fieldset-block composition
Benefits: - Removes ~108 dead template files from the repository - Fragment directory contains only actively used generic components - Partial directory retains only true reusable view shells
Technical notes: - All deleted files have confirmed zero callers after preceding refactor commits - Applied identically to default, lite, and simple themes





