Журнал изменений
Replace the previous logo set (256x73, 512x148, 1024x297) across all four shipped templates with the redrawn 256x79 / 512x157 / 1024x315 variants, point the configured admin logo to the new filename, and upgrade the logo-folder placeholder redirect to HTTPS.
Core changes:
- Logo binaries (templates/{admin,default,lite,simple}/images/logos):
Remove old PNGs: slaed_logo_256x73, slaed_logo_512x148, slaed_logo_1024x297
Add new PNGs: slaed_logo_256x79, slaed_logo_512x157, slaed_logo_1024x315
- Updated artwork ships with adjusted vertical proportions (79/157/315
instead of 73/148/297) for cleaner header alignment
- Configuration default (config/global.php):
Switch
admin_logodefault fromslaed_logo_256x73.pngtoslaed_logo_256x79.pngso fresh installs pick up the new asset- Folder placeholder (templates/{admin,default,lite,simple}/images/logos/index.html):
Update the meta-refresh redirect target from
http://www.slaed.nettohttps://slaed.net- Aligns the placeholder with the live HTTPS canonical URL and
avoids an extra redirect hop
Benefits:
- Consistent logo geometry across the four bundled themes
- New installs render the refreshed logo without manual config edits
- Placeholder pages no longer downgrade to plaintext HTTP
Technical notes:
Existing custom installs that pinned the old filename in their local config keep working because the old asset is no longer referenced; set
admin_logoto a custom file as before if neededNo layout, CSS, or template structure changes were required to host the slightly taller artwork
Reduce vendor-prefix noise in the admin theme stylesheet and remove properties that no longer carry weight in modern browsers. Behavior is preserved; the change is purely a cleanup to keep the rule blocks tighter.
Core changes:
- Stylesheet cleanup (templates/admin/assets/css/theme.css):
Drop
-webkit-font-smoothing: antialiased/`-moz-osx-font-smoothing: grayscale` from the icon font and warn-icon rule blocks- Modern Chromium and Firefox already render the icon font
consistently without the hint, and Safari ignores the override
Replace
display: -webkit-boxflexible-line-clamp shim on.sl-menu-grid-link spanwithdisplay: block- Drops the corresponding
-webkit-box-orient: verticalproperty - Layout in this rule does not rely on multi-line clamping
- Drops the corresponding
Remove the experimental
field-sizing: contentfrom.sl-div-actionsinputs and.sl-ratings-days- The property is not yet broadly supported and the explicit
width/min-width pair is sufficient
Add
-webkit-user-select: nonenext touser-select: noneon the toggle button so older WebKit picks up the rule
Benefits:
- Smaller, easier-to-scan rule blocks
- Removes properties that introduced engine-specific edge cases
- Keeps cross-browser parity for selection and icon rendering
Technical notes:
- No selectors added or removed; only declaration-level changes
- Visual output unchanged in current Chromium, Firefox, and WebKit
- No compiled assets are vendored, so no rebuild step is required
Introduce an admin-footer toggle that hides or shows the runtime diagnostics block (queries, request variables, errors, system info) and relabel the section titles to read as a focused performance and request panel rather than generic analyzers.
Core changes:
- Footer controls API (core/system.php):
- Extend getFootControls() with a new $dbgtog flag
Inject a
dbglinkpayload (iconbug, label _DEBUGPANEL) when diagnostics output is presentReplace the hard-coded
class => sl-slaed-homewith a semanticisslaedflag so templates own the CSS class mapping- Wire setFoot() to forward
$debug !== ''as the toggle signal - Link fragment (templates/admin/fragments/link.html):
Recognize
isdebugandisslaedflags- Map
isdebugtosl-debugger-toggleplus
- Map
data-sl-toggle-control="sl_debugger" with slide effect (500ms)
- Map
isslaedtosl-slaed-home
- Keep the existing class/href contract for all other call sites
- Footer partial (templates/admin/partials/foot-controls.html):
- Render
dbglinkbetween the brand link and the upper anchor - Admin layout (templates/{admin,default,lite,simple}/layouts/admin.html):
Wrap
{{{ debug_html }}}in `<div id="sl_debugger" data-sl-toggle="sl_debugger" data-sl-toggle-default="open">` so the toggle target exists in all four shipped themes- Render the wrapper only when
debug_htmlis non-empty - Footer styles (templates/admin/assets/css/theme.css):
- Position
.sl-footer span a.sl-debugger-toggleat right: 102px - Bind it to Bootstrap Icons glyph
\f1dc(bug icon) - Language constants (lang/de|en|fr|pl|ru|uk.php):
Add new
_DEBUGPANELconstant (Diagnostics panel / Панель диагностики and equivalents)Refresh four existing constants to clearer wording:
- _AQUERY_DB -> Database queries
- _AVARIABLES -> Request variables
- _ERRLOG -> Errors and warnings
- _SYSTEM_INFO -> System performance
Benefits:
One-click hide/show keeps the diagnostics block from crowding the admin canvas while remaining instantly recoverable
- Cleaner labels match the actual content of each panel
- Templates regain full ownership of the footer-link class mapping
Technical notes:
New parameter on getFootControls() is optional (default false), so existing callers stay source-compatible
- Toggle relies on existing
data-sl-toggle*runtime; no new JS module - All six bundled language files updated together to avoid mixed labels
Promote unified configuration loading to the same module that owns classes/editor and classes/logger so the boot order is explicit before core/security.php is included. Keeps security.php focused on request hardening and adds a defensive guard for direct/static analysis includes.
Core changes:
- Configuration bootstrap (core/system.php):
Load $conf via getConfig() right after editor and logger are required
- Apply admin theme override when ADMIN_FILE is defined
- Place the bootstrap above the security.php include so the security
layer can rely on a fully merged $conf
- Security entrypoint (core/security.php):
Replace the prior config bootstrap with a defensive guard
- Only call getConfig() when $conf is missing or not an array
- Avoids redundant work when system.php has already prepared $conf
- Keeps the file safely includable in isolation
Benefits:
- Clear ownership: system.php owns boot, security.php owns hardening
- Predictable $conf availability for every downstream require
- Safer behavior when security.php is analyzed or included directly
Technical notes:
- No public API change; getConfig() and $conf shape are unchanged
- Backward compatible for all callers that include core/system.php
- Direct includes of core/security.php remain functional via the guard
Consolidates editor-insert functionality into slaed.js, improves PDO debug output via template, extends debug-stats across all themes with new lang constants, and migrates icon_name support to default/lite/simple link fragments.
Core changes:
- Editor insert (plugins/system/):
- Remove insert-code.js (413 lines); logic merged into slaed.js
- Add getEditorInsertText() and syncEditorValue() helpers in slaed.js
- Remove editor-action-insert.html fragments from all themes
- PDO class (core/classes/pdo.php):
- Use $tpl for SQL debug output; consolidate getSqlQuery() internals
- Simplify error message format (remove bare <br> tag)
- Language constants (lang/*.php — all 6 languages):
- Add _ERRLOG, _PAGETIME, _MEMUSAGE, _DBQUERY, _DBQTIME
- Debug stats templates (templates/*/fragments/debug-stats.html):
- Use new lang constants instead of hardcoded strings
- Theme templates (default/lite/simple):
- link.html: icon_name support (mirrors admin link.html)
- voting-view.html: minor adjustments
- new.css: CSS updates
- Admin info panel (admin/info/config, admin/info/template — all 5 langs):
- Template and config HTML adjustments
- Misc:
- core/helpers.php, core/security.php, core/classes/template.php: minor fixes
- modules/forum/index.php: minor fix
- index.php: minor fix
- config/global.php, config/local.php: fingerprint update
- docs/TODO.md: removed
Benefits:
- Single JS file for editor interactions; no separate insert-code.js loader
- Debug stats use translatable constants across all themes
- icon_name in link.html is now consistent across all 4 template themes
Technical notes:
- editor-action-insert.html deleted from all 4 themes (admin/default/lite/simple)
- Backward compatible: link.html callers without icon_name are unaffected
Unified spacing tokens (--sl-space-xs/sm/md/lg) across all sidebar blocks, replaced standalone icon columns with icons embedded inside <a> elements so the full row — icon and label — forms a single clickable target.
Core changes:
- CSS tokens (base.css, theme.css):
- Add --sl-space-xs/sm as canonical spacing tokens; remove --sl-space-xxs
- Sidebar count-row: 3-col grid (icon|label|value) → 2-col (label|value)
- Icons live inside <a>, styled via .sl-block-sidebar-count-label a
- Blocks 3+4 warning color applied to <a> via :has() selector
- Session summary lines: optional icon column (sl-session-line--icon)
- Session rows: geo flag in 20 px icon slot (sl-session-row--icon)
- Admin-block-link: icon inside link, remove separate .sl-admin-block-icon
- Hover/border-radius unified for all block content types
- Templates (link.html, session-row.html, session-summary.html):
link.html: {% if icon_name %}<i class="bi bi-{{ icon_name }}"></i>{% endif %} before label — zero impact on existing calls without icon_name
- session-row.html: geo_html in icon slot, name_link in text column
- session-summary.html: per-category icon_name vars, optional rendering
- dashboard-panel.html: remove redundant sl-dashboard-panel-pad wrapper
- monitor-tooltip-text.html: new fragment for tooltip with BI info icon
- PHP (admin.php, system.php, monitor.php):
- icon_name moved into link array at call site — no intermediate icon_html
- Removed icon-bi.html fragment; icon rendered inline by link.html
- adminblock(): icon_name in admin_link/logout_link arrays
getUserSessionAdminInfo(): geo flag drives 3-col layout; BI icons on summary category lines (shield-check/person-check/robot/eye/people)
- monitor.php getTooltipText(): output via monitor-tooltip-text.html
Benefits:
- Icon is semantically part of the link — clickable area covers icon+text
- No zoo of micro-fragments; icon_name is a plain string, not rendered HTML
- All block types share one hover/spacing rule set
- Geo flag symmetrically aligned with category icons in sidebar
Technical notes:
- link.html change is additive; callers without icon_name are unaffected
- sl-session-row--icon applied only when geo_html is present
- --sl-space-xxs removed; 3 px values replaced with --sl-space-xs (4 px)
A :root block with named CSS custom properties is added to base.css and every hardcoded colour, size, and shadow value across base.css, theme.css, and basic-monitor.html is replaced with the corresponding token. No visual changes are intended — this is a pure token-extraction refactor.
Core changes:
- base.css — design token block (:root):
Colour palette: --sl-color-bg/-soft/-muted/-subtle, -border/-border-strong, -text/-text-soft, -muted, -primary (and -hover/-soft/-tint), -success (and -strong/-soft), -danger (and -strong/-soft), -warning (and -strong/-soft), -accent/-accent-soft, -info-soft
- Size tokens: --sl-size-control (28px), -pager (30px), -head (32px), -icon (18px)
- Radius tokens: --sl-radius-control (3px), -panel (4px), -soft (6px)
- Spacing tokens: --sl-space-xs (4px), -sm (6px), -md (8px), -lg (12px)
- Shadow tokens: --sl-shadow-soft, -control, -control-active, -hover-soft
- Typography tokens: --sl-text-shadow-light, -text-shadow-dark
- Focus token: --sl-focus-primary
- base.css — all hardcoded values replaced:
html background gradient, legend, body font colour, h2/h5, links, hr, inputs, blockquote, focus ring, required input colours
- theme.css — all hardcoded values replaced:
Buttons (sl-but-), callout blocks (sl-callout-) now use Bootstrap Icon via font-family bootstrap-icons on ::before; content codes updated to BI
- Status icons, sort arrows, toggle controls, tips, div-grid rows
- Block-sidebar, dashboard-panel, radio-switch, pager, alerts (sl-warn/sl-info)
- Debug sections, preview blocks, menu grid, session summary
- Table, tabs, voting widget, monitor, login shell — complete token migration
- basic-monitor.html:
SVG linearGradient stop-color and path stroke attributes for chart lines (gUp/gDown/gCpu/gRam) replaced with CSS var() references
Benefits:
Single source of truth for all colour decisions; theme changes require only token updates in :root
- Enables future dark-mode or white-label overrides via a single :root block
- Removes ~300 scattered hex literals from stylesheets
Technical notes:
- CSS var() in SVG stop-color is supported in all modern browsers
- No Sass/PostCSS required; native CSS custom properties only
Callout ::before now uses BI icon codes (f430, f26a, f33a, f622) replacing Unicode symbols; font-family declaration ensures correct rendering
Regenerated base_fingerprint after template and CSS changes.
Core changes:
- config/local.php:
- base_fingerprint updated to reflect current asset state
Benefits:
- Cache invalidation aligned with deployed asset versions
Technical notes:
- No runtime behaviour changes
The voting admin edit form is restructured to use toggle-form-block for each answer row, matching the pattern used in fields/rss/replace. getVotingView() gains a forceResult parameter so the admin preview always shows results regardless of vote state or user role.
Core changes:
- modules/voting/admin/index.php:
Table head adds is_col_title flag and explicit class_name for lang/module columns (sl-col-lang, sl-col-module) for fixed-width layout
- Title cell splits into prefix_html (info-tooltip) + has_content_text
Answer input rows replaced with toggle-form-block: each answer pair (body[] text + answer[] number) lives in its own collapsible block; empty answers from index 1 onward are hidden by default
getVotingView() called with forceResult=true so the admin preview is always in result-display mode
- core/system.php — getVotingView():
- New $forceResult parameter (default false)
When true: querylang is bypassed ('1 = 1'), rate forced to 1, result branch always taken, admin edit links suppressed, navigation links (polls, votes, comments) hidden; submit form also suppressed
- toggle_onclick removed from both image-preview calls in getEditorFiles()
- core/admin.php:
toggle_onclick removed from both image-preview calls in getAdminUploadFiles(); image-preview now uses data-sl-toggle-* via the template (set in the preceding template commit)
Benefits:
- Admin can preview voting results without casting a vote or ending the poll
- Answer fields follow the same expand/collapse UX as fields and rss modules
- No toggle_onclick parameters remain in core or voting module
Technical notes:
forceResult=true suppresses is_moder() check and all front-end links; the preview is intentionally read-only and context-free
Module files receive the same safe-text template API migration as the admin modules, plus removal of legacy HideShow() onclick_attr patterns in favour of the data-attribute toggle approach.
Core changes:
- clients/admin/index.php:
- Title cell uses has_content_text / content_text
- clients/index.php:
HideShow call in the info link replaced with data-sl-toggle-control onclick_attr carrying data-* attributes; href changes to '#'
- content/admin/index.php:
- Title cell splits into prefix_html (tooltip) + has_content_text
- media/index.php:
add() URL label toggle changes from onclick="HideShow(...)" to data-sl-toggle-control / data-sl-toggle-effect / data-sl-toggle-duration
- money/admin/index.php:
- Tooltip items for valute labels, comment, browser use has_value_text
- news/admin/index.php:
- Checkbox label_html changed to label_text (auto-escaped)
- rss/admin/index.php:
- Tab system removed; content rendered directly based on $tab value
save() now merges only the active tab's fields into existing $conf['rss'] instead of overwriting the entire config on every save
- Field 1/2 '0' sentinel values normalised to '' for cleaner display
- toggle_onclick replaced with toggle_target_id + is_toggle_block
- search/admin/index.php:
- All getSearchauditTable() cells migrated to has_content_text
- Tooltip item for module label uses has_value_text
- shop/admin/index.php:
- Tooltip items for address, phone, email, note use has_value_text
- Title cells split into prefix_html + has_content_text throughout
- Checkbox label for associated products uses prefix_html + has_content_text
- Label fragment receives prefix_html support for checkbox+text combos
- whois/admin/index.php:
- Comment tooltip item uses has_value_text
Benefits:
- Removes ~35 htmlspecialchars() calls scattered across module files
- RSS save now preserves unsaved tab's settings correctly
- HideShow removed from all active module call sites
Technical notes:
- rss/admin tab rendering: UI is now single-page per tab; no JS tab widget