Журнал изменений
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
Admin panel now supports a configurable logo image selected from the logos directory, rendered as an <img> tag in both the main admin layout and the login (bare) layout, replacing the hard-coded CSS background sprite approach.
Core changes:
- Config panel (admin/modules/config.php):
Added admin_logo selector reading from templates/admin/images/logos/
- Uses same scandir/select-option pattern as site_logo
- Preview image linked via selectid/imgtar fragment attributes
- Removed trailing colons from all label_html strings in this file
- save(): added admin_logo extraction and validation via basename()
- System head (core/system.php):
setHead(): resolves admin_logo path via img_find(), falls back to default
- Passes adlogo, adalt, adtitle vars to admin layout templates
- ashowcom(): removed hardcoded OnClick="CheckBox()" from markcheck input
- Templates (templates/admin/layouts/admin.html, bare.html):
- Replaced CSS-background h1>a text link with <img> tag using adlogo/adalt/adtitle
- Removed class="thide" from brand link
- Config defaults (config/global.php):
- Added admin_logo key with default slaed_logo_256x73.png
- Moved editor array to alphabetical position
- Updated copyright symbol to Unicode ©
- Rotated sitekey value
- Lang strings (admin/lang/*.php — all 6 languages):
- Added _ADMINLOGO and _ADMINLOGOP constants
- Clarified _DEVMODE label (added ?)
- Clarified _OGRAPH and _SCHEMA labels (added "Enable/Aktivieren/Activer/Włączyć/Активировать/Активувати" prefix and ?)
Benefits:
- Logo is now a first-class config option without CSS overrides
- login and admin pages share the same logo variable
- Consistent with site_logo selector pattern already in config
Technical notes:
- Logo path is validated on save; invalid name falls back to slaed_logo_256x73.png
- No DB schema changes
- Backward compatible: existing installs without admin_logo key use the default
Rename renderFootControls to getFootControls, add is_col_status markers and language link CSS class to admin list builders, apply column class_name in newsletter and account modules, and update config fingerprint.
Core changes:
- Footer function rename (core/system.php):
- renderFootControls() renamed to getFootControls() with shorter param names
- Both call sites in setFoot() updated
- Admin list builders (core/admin.php):
- Add class 'sl-admin-language-link' and is_menu_list_image to language switcher
- Mark status cells with is_col_status => true in category, block, private lists
- Fix is_last flag in block list tip items (was incorrectly bound to $lang check)
- Column classes (admin/modules/newsletter.php):
- Add class_name 'sl-col-sent' to newsletter sent-count column (head + body)
- Account admin (modules/account/admin/index.php):
- Add class_name 'sl-col-ip' to IP column (head + body rows)
- Add autofocus => true to signature textarea in add form
- Config (config/local.php):
- Update base_fingerprint to reflect current template asset state
Benefits:
- getFootControls follows project naming convention (get* prefix for renderers)
- is_col_status enables template-side alignment without hardcoded selectors
- Column class_name allows CSS targeting of specific data columns
Technical notes:
- getFootControls is a non-breaking rename; no callers outside setFoot()
- Fingerprint update required after CSS and JS asset changes in this batch