Журнал изменений
The two logo references pointed to legacy PNG files that no longer exist after the SVG migration. Config values are updated to the new SVG filenames. The base fingerprint in local.php is regenerated to reflect the changed base config.
Core changes:
- config/global.php:
- admin_logo: slaed_logo_256x79.png → slaed-logo-wordmark-gradient-blue.svg
- site_logo: slaed_logo_256x340.png → slaed-logo-mark-gradient-blue.svg
- sitekey: regenerated
- config/local.php:
- base_fingerprint: updated to match new global.php hash
Benefits:
- Logo references point to existing SVG files; no 404s on logo load
- Config fingerprint stays consistent with the updated global config
Technical notes:
- New SVG files are present under templates/admin/images/logos/
- Only the config references and fingerprint change; no PHP logic touched
The original helper only returned an &-joined string with no control over the separator or trailing delimiter. Several call sites need a raw & separator (for redirect URLs) or a trailing separator (for building paginated links), and hash fragment support.
Core changes:
- getQueryString() (core/helpers.php):
- Add bool $html = true — uses & when true, & when false
- Add bool $tail = false — appends the separator after the last pair
- Add string $hash = '' — appends #hash fragment when non-empty
- Skip false values in addition to empty string / null
- Preserve key encoding via rawurlencode on both name and value
Benefits:
- Single function covers all URL-building patterns in the codebase
- Removes ad-hoc string concatenation of & vs & at call sites
- Hash support eliminates a separate string append after the call
Technical notes:
- Backward-compatible: default arguments preserve old behaviour
- false-skip allows boolean flags to be passed directly without wrapping in an if block at the call site
The comments list was a minimal read-only view with a fixed modul filter. This overhaul adds searchable columns, a reusable search bar function, a proper bulk-action endpoint, and URL state preservation so that filters survive navigation through edit, approve, and delete.
Core changes:
- getCommentsSearch() (new helper function):
- Extracted search bar construction into a reusable function
- Fields: modul select, search-by select (id/body/author/modul/ip), text input for the search string, submit button
- comments() (main list view):
- getVar source changed to req to unify GET/POST handling
- SQL query extended with LEFT JOIN to users; supports all five search columns including cross-table author search
- Table rebuilt with sortable columns using getHtmlFrag/table-row API
- info-tooltip added per row showing modul, CID, date, IP details
- Pager migrated to getTplPager with correct WHERE/params
- actions() (new bulk-action handler, op=actions):
- Replaces the old op=approve route for form-submitted bulk ops
- Handles status toggle (a0/a1) and delete (d) for arrays of IDs
- numcom() called correctly to keep comment counters in sync
- edit(), editsave(), approve(), delete():
- All now accept and pass through status/modul/search/chng params
- Redirect back URL preserves the full filter state
Benefits:
- Admins can search comments by text, author, IP, or module name
- Bulk operations no longer reset the filter to the default view
- Less SQL string concatenation; parameterised WHERE throughout
Technical notes:
- op=approve still works for single-row links; actions handles forms
- All modul/chng values are rawurlencode()d in redirect URLs
Files that are no longer loaded or referenced are deleted to keep the asset tree clean.
Core changes:
- templates/default/assets/css/blocks.css (deleted):
- 199-line legacy block stylesheet superseded by new.css rules
- templates/lite/assets/css/blocks.css (deleted):
- 483-line equivalent for the lite theme; same reason
- templates/admin/images/logos/slaed-logo-mark-gradient-blue-big.svg (deleted):
- Oversized logo variant not referenced by any template or config
Benefits:
- Removes 682 lines of dead CSS from the served asset set
- Eliminates stale file that would mislead future asset lookups
Technical notes:
- blocks.css rules were already migrated or deleted; no regressions
- Logo filename updated in config/global.php in a separate commit
Consolidates CSS changes across the frontend new.css layer for all three templates (default, lite, simple): adds a :root token block, migrates rating-bar to the native meter approach, switches vote-meter rules to CSS vars, and adds flag-image sizing rules.
Core changes:
- new.css :root (all three themes):
- --sl-color-border, --sl-color-border-strong, --sl-radius-control
- --sl-vote-meter-* colour and geometry tokens
- Rating-bar CSS (all themes):
- Replace .sl-crating background-sprite approach with .sl-rating-meter native <meter> sub-element CSS
- Remove the 101-entry data-sl-rating-width attribute table
- Vote-meter (all themes):
- .sl-vote-meter and variants migrated from inline hex to CSS vars
- Flag image rules (all themes):
- .sl-geo-flag img — 24 px width, border, border-radius
- .block-flags img — same treatment
Benefits:
- Rating display is accessible and themeable via a single token
- Token blocks allow per-theme colour overrides in one place
- Flag images render at a consistent size without per-call inline styles
Technical notes:
- Removing data-attribute table cuts ~103 lines per theme
- .sl-rating-meter CSS requires the rating-bar.html fragment refactor committed earlier
Hard-coded hex colours in .sl-vote-meter, .sl-progress-*, and the <meter> fill rules are replaced by CSS custom properties so all five rating colours and the track style can be changed from one location per theme.
Core changes:
- Admin base.css:
- Add --sl-vote-meter-* and --sl-progress-fill-* tokens to :root
- Progress tokens mirror the five colour variants already in theme.css
- Frontend theme.css (default, lite):
- Add :root block with --sl-progress-track-* and --sl-progress-fill-*
- Migrate .progress-line and .progress-N div rules to use the new vars
- Admin theme.css (vote-meter section):
- Replace inline colours in .sl-vote-meter and all vendor-prefixed pseudo-elements with --sl-vote-meter-* references
Benefits:
- Single-file token override per theme instead of hunting hex values
- Vote-meter and progress bars are now themeable without CSS duplication
Technical notes:
- Admin tokens reference existing palette vars (--sl-color-*)
- Frontend tokens use the same concrete hex values, now centralised
The rating-bar template used a CSS background-position trick to show a pixel-based overlay for the star rating. This replaces it with a semantic <meter> element that is driven purely by CSS vars, making the visual layer themeable without touching markup.
Core changes:
- Rating-bar fragments (rating-bar.html × 3 themes):
- Replace
<li class="sl-crating" data-sl-rating-width="...">overlay with<meter class="sl-rating-meter" value="..." max="100"> - Remove the data attribute; value is passed directly to the element
Benefits:
- Native <meter> is accessible and semantic
- Eliminates the 101-entry data-attribute-to-width CSS table
- Decouples rendering from HTML data attributes; themes control appearance
Technical notes:
- CSS for .sl-rating-meter added in separate CSS commit
- Compatible with all four themes (admin template unchanged)
Logo assets in the admin template replaced with a full SVG branding set covering mark and wordmark variants across gradient, solid, outline, and duotone styles. Legacy PNG exports relocated to png/ subfolder to keep the root logos directory clean.
Core changes:
- Logo assets (templates/admin/images/logos/):
- Moved 6 PNG raster exports into png/ subdirectory
- Added 13 new SVG files: mark (5 variants) and wordmark (7 variants)
- Variants: gradient-blue, gradient-mono, solid-blue, solid-black, outline-blue, outline-mono, duotone-blue, duotone-mono
- Large-format mark: slaed-logo-mark-gradient-blue-big.svg
Benefits:
- SVG logos scale without quality loss at any resolution
- Variants cover all branding contexts (dark/light, color/mono)
- Directory structure now separates vector from raster exports
Technical notes:
- PNG files are preserved in png/ for backward compatibility
- No PHP or template code changed; paths not yet updated
Removes the obfuscated anti_spam() rendering of customer email addresses in the money, order, and shop admin list views, replacing it with a proper clickable mailto link so admins can contact users directly from the table.
Core changes:
- money/admin/index.php:
- Email cell: renders info-tooltip + mailto link (subject includes module name _MONEY); removed is_truncate flag from cell and header
- IP cell: added class_name 'sl-col-ip' for correct column width
- order/admin/index.php:
- Email cell: info-tooltip title_html replaces label_text anti_spam; mailto link appended after the tooltip (subject: _ORDER)
- shop/admin/index.php (partnerinfo):
- Added is_fixed => true to the partner clients table
Benefits:
- Email addresses are directly actionable from the admin list
- Consistent pattern with other admin modules (admins, money, order)
Technical notes:
- Subject line is URL-encoded with rawurlencode(); site name prefixed
- anti_spam() call removed; no backward-compat wrapper needed
Adds data attributes that enable JS-driven column sorting on status cells in the categories and blocks admin tables, and passes the is_col_actions flag through to the functions column so it receives the correct CSS class.
Core changes:
- getAdminCategoryList() (core/admin.php):
- Status td: added attr with data-sort-column-key and data-sort value (1 for active, 0 for inactive) to enable tablesort
- Functions td: added is_col_actions => true
- Table: added attr data-sl-admin-table="categories"
- Status th: replaced nosort with sortable data-sort-column-key + data-sort-reverse
- Functions th: added is_col_actions => true
- getAdminBlockList() (core/admin.php):
- Same set of changes applied to the blocks table (status + functions cells and headers, data-sl-admin-table="blocks")
Benefits:
- Status columns are now sortable by activation state
- Functions column gets correct sl-col-actions width via CSS class
Technical notes:
- data-sort is set to '1'/'0' string to match tablesort expectations
- data-sort-reverse sorts active items to the top by default