Журнал изменений
slaedcms.png and 000slaedcms.png were the CSS-background logo images referenced via background-image in theme.css. The admin logo is now rendered as an <img> tag (committed in Feature: Admin logo selection), so these sprite files are no longer referenced anywhere and can be removed.
Core changes:
- Deleted: templates/admin/images/slaedcms.png
- Deleted: templates/admin/images/000slaedcms.png
Benefits:
- Repository no longer carries unreferenced binary assets
- Grep confirms zero remaining references to these filenames in PHP, CSS, or templates
Technical notes:
- Replacement logo images live in templates/admin/images/logos/
- No functional change; CSS background-image sprite approach was already removed
All sl_* class names actively used within the admin area are renamed to the canonical sl-* (dash) convention. Dead CSS rules that were already superseded by equivalents in new.css are removed.
Core changes:
- Sort indicators (plugins/system/slaed.js):
classList operations renamed: sl_sort → sl-sort, sl_sort_asc → sl-sort-asc, sl_sort_desc → sl-sort-desc (6 occurrences)
- Markdown callouts (core/classes/parser.php):
$map array updated: sl_callout_note/tip/important/warning/caution → sl-callout-note/tip/important/warning/caution
- DB debug colors (core/classes/pdo.php):
- $color values renamed: sl_red → sl-red, sl_green → sl-green
- Admin CSS (templates/admin/assets/css/system.css):
- .sl_sort / .sl_sort_asc / .sl_sort_desc → .sl-sort / .sl-sort-asc / .sl-sort-desc
- .sl_callout_ (10 selectors) → .sl-callout-
- .sl_red → .sl-red, .sl_green → .sl-green
Benefits:
- All admin-active CSS classes now follow the uniform sl-* naming convention
- Grep for sl_* in admin scope returns zero hits for the renamed classes
- sl_orange, sl_blue, sl_small etc. remain as-is (not used in admin area)
Technical notes:
- No DB schema changes; no API changes
- .sl_word alias removed separately (see next commit)
config/local.php fingerprint updated to reflect the new base config state after admin_logo was added to config/global.php. config/news.php line endings normalized from CRLF to LF.
Core changes:
- Config local (config/local.php):
- base_fingerprint updated to match new global config hash
- Config news (config/news.php):
- Line endings normalized (CRLF → LF); no content changes
Benefits:
- Fingerprint keeps config drift detection accurate after global config additions
- Consistent line endings across all config files
Technical notes:
- No functional change
- No DB schema changes
Changelog module lang files contained colons embedded directly in constant values (_CHLOG_SEARCH, _CHLOG_DATE_FROM, _CHLOG_DATE_TO). These are removed to match the project-wide convention where punctuation is rendered by CSS, keeping constants reusable as plain label strings.
Core changes:
- Changelog lang (modules/changelog/lang/*.php — de, en, fr, pl, ru, uk):
- _CHLOG_SEARCH: removed trailing ':'
- _CHLOG_DATE_FROM: removed trailing ':'
- _CHLOG_DATE_TO: removed trailing ':'
- Changelog admin lang (modules/changelog/admin/lang/*.php — de, en, fr, pl, ru, uk):
- Same three constants cleaned across all six admin language files
Benefits:
- Constants match the colon-free convention established across admin and module labels
- No risk of double colons when constants are reused in non-label contexts
Technical notes:
- No functional change; CSS ::after provides the visible colon
- No DB schema changes
All internal function names are renamed to the set/get convention for consistency. The global CheckBox() function is removed in favour of setTableCheckAll(), which uses data-attribute delegation. setImageReplace() now handles multiple selects via data-sl-image-replace instead of a single hardcoded id="img_replace". Tablesort extensions are inlined into setTableSort().
Core changes:
- Function renames (slaed.js):
- initLightbox → setLightbox (merged ensureLightboxStyles + createLightbox inline)
- close → setLightboxClose
- open → setLightboxOpen
- ensureLightbox → getLightbox
- toggleBlock → setToggleBlock
- animateSlide → setSlideMotion
- animateFadeScale → setFadeScale
- fetchJson → getJsonData
- initImageReplace → setImageReplace
- initToggleBlocks → setToggleBlocks
- initSlaedUi → setSlaedUi
- processNext → setProcessNext
- scan → checkScan
- setImageReplace():
- Queries all [data-sl-image-replace] selects instead of getElementById('img_replace')
- Falls back to legacy id="img_replace" and attaches data attribute automatically
- Each select targets the element whose id matches its data-sl-image-replace value
- setTableCheckAll() (new):
- Replaces global window.CheckBox(id, clas)
- Click delegation on th[data-sl-check-all] header cells toggles master checkbox
- Change delegation on master checkbox syncs all [data-sl-check-item] inputs in form scope
- Works with any number of tables; no global state or id coupling
- setTableSort():
- Tablesort slaedNumber and slaedDate extensions inlined here
- Removed standalone initTableSortExtensions(); guard flag unchanged
- setSlaedUi():
- Calls setTableCheckAll() in addition to existing initializers
Benefits:
- Consistent naming convention across all internal helpers
- CheckBox() global removed; no inline OnClick attributes needed in PHP/templates
- Multiple image-preview selectors on the same page work without id conflicts
- Tablesort extension setup no longer risks running before setTableSort
Technical notes:
- window.CheckBox is gone; callers that used it must use data-sl-check-all
- data-sl-image-replace attribute wired in select.html fragment
- data-sl-check-all attribute wired in th.html fragment
- No external API changes
Admin stylesheet receives a full custom checkbox design, a CSS-driven colon rule for form labels, search highlight utility, and cleanup of obsolete rules that were duplicated from or superseded by new.css. Public theme CSS files receive the .sl-highlight utility class.
Core changes:
- Admin new.css:
- Added .sl-highlight utility (red text on yellow bg) for search results
Added CSS ::after colon rule for .sl-div-label and .sl-div-label-main
- Suppresses colon when a radio-group follows (.sl-radio-group sibling)
- Enables consistent punctuation without PHP-side concatenation
Added full custom checkbox design for .sl-admin-shell input[type="checkbox"]
- Appearance: 16×16px, gradient border, animated checked/indeterminate states
- SVG checkmark and indeterminate bar via background-image data URIs
- Focus-visible ring and disabled opacity
- Removed .sl-code-row-odd / .sl-code-row-even (no longer used)
- Removed .sl-page-title block (superseded by admin header CSS)
- Admin system.css:
- .sl_word selector extended to include .sl-highlight (aliased)
- Removed .sl-table-form / .sl-form duplicates (kept .sl_table_form legacy)
- Removed .sl-config-form / .sl-config-grid / .sl-config-item block (moved to new.css)
- Admin theme.css:
- Removed .clr utility (use clearfix or flex instead)
- Removed table.tabreset (no longer referenced)
- Removed .list-text (obsolete)
- Removed .lcolomn / .rcolomn float helpers
Logo rule changed from CSS background sprite to img-based selector (.header h1 a sets width; .header h1 img sets display:block and height:auto)
- Public new.css (default, lite, simple templates):
- Added .sl-highlight utility class to match admin styling
Benefits:
- Checkbox appearance is now fully branded and consistent across admin
- Colon is a CSS responsibility, not PHP string concatenation
- theme.css/system.css reduced by ~100 lines of dead rules
- Public highlight class enables consistent search term styling on frontend
Technical notes:
- Custom checkbox uses appearance:none + SVG data URIs; no external assets
- .sl_table_form is kept for backward compat with legacy module templates
- No JS or PHP changes in this commit
getTplRadioGroup() now auto-detects boolean yes/no option sets and emits the sl-radio-switch CSS class, rendering them as pill-style toggle switches. Multiple admin template fragments receive targeted attribute improvements to reduce PHP-side attribute injection and centralize behavior in the template.
Core changes:
- Helpers (core/helpers.php):
getTplRadioGroup(): detects 2-option groups with values '0' and '1'
- Auto-sets switch=true unless caller overrides via 'switch' key
- Passes switch flag to block-content fragment
- block-content.html:
Adds sl-radio-switch class when switch=true alongside sl-radio-group
- Enables CSS pill/toggle rendering for boolean radio groups
- button.html:
Auto-sets type="submit" when submit_label is present and button_type is absent
- Prevents accidental type="button" on submit-intended buttons
- checkbox.html:
is_check flag now renders class="sl-check" and data-sl-check-item attribute
- Replaces inline input_class="sl-check" and manual data- injection from PHP
- Used by setTableCheckAll() in slaed.js for master/item check wiring
- label-hint.html:
- Removed embedded ':' from template
- Wraps label text in <span class="sl-div-label-main"> for CSS ::after targeting
- select.html:
- Added selectid attribute rendered as id="{{ selectid }}"
Added imgtar attribute rendered as data-sl-image-replace="{{ imgtar }}"
- Replaces hardcoded id="img_replace" dependency in PHP and JS
- th.html:
Adds data-sl-check-all attribute to is_col_check header cells
- Enables setTableCheckAll() click delegation without id dependency
- checkbox.html (default, lite, simple templates):
- Same is_check / sl-check / data-sl-check-item changes for frontend forms
Benefits:
- Boolean config toggles visually communicate on/off state as pill switches
- Fragment attributes centralize behavior wiring; PHP passes semantic flags
- setTableCheckAll() works via data attributes, removing global CheckBox() function
Technical notes:
- sl-radio-switch class requires CSS from new.css to style the pill appearance
- Backward compatible: groups with more than 2 options or non-bool values stay unchanged
- No DB schema changes
Continues the label colon removal from commit 2, covering all remaining module admin and frontend form rows. Core user.php and helpers.php are also cleaned up: form-field-row label values no longer carry hard-coded ':' suffixes, delegating colon rendering entirely to CSS.
Core changes:
- Core helpers (core/helpers.php):
- getTplAddFieldRows(): removed ':' from label_html assignment
- Core user (core/user.php):
- setComShow(): removed ':' from _YOURNAME and _COMMENT labels
- getPrivateMessageView(): removed ':' from _PRRE, _TITLE, _MESSAGE labels
- Module admin panels — all label_html colon suffixes removed:
- modules/account/admin/index.php
- modules/auto_links/admin/index.php
- modules/changelog/admin/index.php
- modules/clients/admin/index.php
- modules/contact/admin/index.php
- modules/content/admin/index.php
- modules/faq/admin/index.php
- modules/files/admin/index.php
- modules/help/admin/index.php
- modules/jokes/admin/index.php
- modules/links/admin/index.php
- modules/media/admin/index.php
- modules/money/admin/index.php
- modules/order/admin/index.php
- modules/rss/admin/index.php
- modules/search/admin/index.php
- modules/shop/admin/index.php
- modules/voting/admin/index.php
- modules/whois/admin/index.php
- Module frontend views — all label colon suffixes removed:
- modules/account/index.php
- modules/auto_links/index.php
- modules/contact/index.php
- modules/forum/index.php
- modules/media/index.php
- modules/money/index.php
- modules/order/index.php
- modules/recommend/index.php
- modules/rss/index.php
- modules/search/index.php
- modules/shop/index.php
Benefits:
- Uniform colon rendering via CSS ::after across all form labels
- Constants remain clean strings usable anywhere without punctuation
- Zero functional change; affects visual rendering only via stylesheet
Technical notes:
- CSS rule added in new.css targets .sl-div-label and .sl-div-label-main
- No DB schema changes; no API contract changes
News and pages admin list views gain a live search bar that filters by ID, title, author, category, or IP using parameterized queries. Matching substrings are highlighted via filterTextHighlight(). Pages admin also receives the full batch-action form and pager that news already had, bringing both modules to feature parity.
Core changes:
- News admin (modules/news/admin/index.php):
- Added getNewsSearch(): renders search form with field selector and text input
news(): reads search/chng from req, builds dynamic WHERE clause with named params
- Five search modes: ID, title, author (name/nick), category, IP
- filterTextHighlight() applied to id, title, author, category, IP cells
- Pager updated to pass where_params for filtered count
- news(): subtitle_html passes search form into admin tab header
- Removed label_html colon suffix from add() form rows
- Removed hardcoded OnClick="CheckBox()" from markcheck header checkbox
- Pages admin (modules/pages/admin/index.php):
- Added getPagesSearch(): identical structure to getNewsSearch()
pages(): same search/chng/WHERE parameterization as news
- filterTextHighlight() applied to id, title, author, category, IP cells
pages(): upgraded from plain table to form with batch-action select + pager
- Added checkbox column to each row (is_check)
- Added markcheck header checkbox for select-all
- Batch actions: activate, deactivate, ihome on/off, date toggle,
comments 0/1/2, move to category, delete
- Fixed ambiguous WHERE clause: p.id instead of bare id in SELECT
- Removed label_html colon suffix from add() form rows
Benefits:
- Editors can filter long news/pages lists without leaving the admin panel
- Match context is highlighted inline; no extra page load
- Pages list now supports the same bulk operations as news
Technical notes:
- Search uses LIKE with named placeholders; no raw interpolation
- filterTextHighlight() is already defined in core; no new helpers needed
- Pager where_params added to support filtered total-row counts
- No DB schema changes
All label_html values in admin module form rows previously appended a literal ':' via string concatenation (e.g. _SOMETHING.':'). The colon is now rendered by CSS ::after on the .sl-div-label element, making the label text constants reusable as tooltips, headings, and aria-labels without embedded punctuation.
Core changes:
- Admin modules (admin/modules/admins.php):
- Removed ':' suffix from all label_html strings
- Admin modules (admin/modules/blocks.php):
- Removed ':' suffix from all label_html strings
- Admin modules (admin/modules/categories.php):
- Removed ':' suffix from all label_html strings
Admin modules (admin/modules/comments.php, editor.php, fields.php, groups.php, lang.php, messages.php, modules.php, newsletter.php, replace.php, scheduler.php, security.php, uploads.php):
- Removed ':' suffix from all label_html strings
Benefits:
- Colons are now a single CSS-controlled convention, not scattered literals
- Constants remain punctuation-free for reuse in non-form contexts
- Architecture alignment with label-hint fragment which already uses CSS colon
Technical notes:
- No functional change; purely a presentation refactor
label-hint fragment wraps label in span.sl-div-label-main; CSS rule targets .sl-div-label::after and .sl-div-label-main::after