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
Applies the is_fixed flag to all admin tables that were missing it so column widths are stable, and corrects the swapped active-tab indices in the blocks module add/edit functions.
Core changes:
- blocks.php:
- add(): tab index corrected from 3 to 1 (Add tab)
- edit(): tab index corrected from 1 to 3 (Edit tab)
- filecode(): inline block path variable, merged redundant alert calls
- database.php:
- getSqltable(): added is_fixed => true to inner query-result table
- database(): added is_fixed => true to the table-list table
- groups.php:
- points(): added is_fixed => true to the points table
- referers.php:
- referers(): added is_fixed => true to the referrers table
- security.php:
- security(): added is_fixed => true to the IP log table
- banlist(): added is_fixed => true to both ban tables (IP + name)
- statistic.php:
- statistic(): added is_fixed => true to the stats table
Benefits:
- Consistent column widths across all admin list tables
- Active tab now highlights the correct section in blocks module
Technical notes:
- is_fixed adds the sl-table-fixed CSS class; no schema change
Replaces the binary Yes/No super-admin flag with a three-tier access indicator (icon + colour), hardens the add/edit form (autocomplete, toggle collapsible, password validation), and fixes several minor rendering regressions introduced in earlier sessions.
Core changes:
- admins() — list view (admins.php):
- Column header changed from _SUPERUSER to _ACCESS
- SQL now also fetches modules column for each admin row
- Computes $stat tier: 2=superuser, 1=has modules, 0=no access
Status cell renders bootstrap-icon shield-fill-check with colour: danger for superuser, success for module access, muted for none
- data-sort attribute set to $stat so table can sort by access tier
- mailto subject line includes module name (_MODULESADMIN)
- add() — edit/add form (admins.php):
- $check now reads the actual POST mail flag on re-render after error
- alert() call corrected: uses 'lines' key (was 'messages')
- Mail template text built with PHP_EOL instead of literal '\n'
- Password inputs get autocomplete="new-password"
_MAIL_SENDE label rendered via span fragment with sl-no-colon class so no unwanted colon appears after the checkbox label
Mail textarea collapsible moved from a wrapping div to the div-row level using id + attr (data-sl-toggle-display, style hide/show)
- save() — persistence (admins.php):
- Password change detection uses $chg flag (both fields non-empty)
- Validation: skip password checks when editing without changing pwd
$mail suppressed when editing without password change (avoid sending stale password notification)
Benefits:
- Visual access tier is immediately scannable in the admin list
- Password update is independent of mail notification
- Form collapses mail section cleanly without layout artefacts
Technical notes:
- filterAdminmods + getAdminModuleNames already existed; no new helpers
- Backward compatible: database schema unchanged
Improves the visual layout of alert boxes, table rows, and form fields; extends template fragments with new optional attributes; and fixes the JS toggle helper to respect the data-sl-toggle-display attribute so collapsible div-rows restore the correct display value.
Core changes:
- theme.css:
Alert (.sl-warn/.sl-info): switch to flex layout; icon is static flex item; .sl-alert-content wraps text; removes obsolete absolute positioning and transform
- Table rows (th/td): unified height: 30px + vertical-align middle
- sl-col-status: width 52 → 80px, white-space nowrap
- .sl-div-item-full textarea: added width/box-sizing/min-width rules
- .sl-div-item-full .sl-collapsible: width 100% min-width 0
- .sl-no-colon: suppresses the automatic colon after label text
- sl-col-sent: overflow/text-overflow ellipsis
- alert.html:
Content body is now wrapped in <div class="sl-alert-content"> to integrate with the new flex layout
- bootstrap-icon.html:
- Added optional color_attr variable to render inline style color
- div-row.html:
- Added optional id and attr pass-through attributes on the wrapper div
- table.html:
- Added optional attr pass-through attribute on the <table> element
- th.html:
- Added optional attr pass-through attribute on the <th> element
- info-tooltip.html:
- Collapsed redundant blank lines; logic unchanged
- slaed.js (toggleBlock):
Read data-sl-toggle-display attribute from target element to determine the correct display value when showing (fallback: 'grid' for sl-div-item/sl-div-grid, 'block' otherwise)
Benefits:
- Alert icons no longer shift on narrow viewports
- Tables have uniform row height across all admin modules
- Fragments are extensible without PHP-side workarounds
Technical notes:
- Backward compatible: all new attributes are optional
data-sl-toggle-display="grid" is used by the new collapsible mail section in the admins form