Ersetzt verteilte error_log()-Aufrufe in Template, System und Security durch
Logger::addX()-Methoden. Erweitert gleichzeitig die Template-Engine um
Dot-Notation in for-Schleifen und not-Syntax in if-Bedingungen.
Core changes:
- Template-Engine (core/classes/template.php):
- Logger-Integration: warnTemplate() nutzt Logger::addPhp() statt direktem JSON-Write
- filterFor: Iterable-Regex erweitert auf Dot-Pfade ({% for item in section.items %})
- parseIfCondition:
not varals Alias für!var({% if not is_plain %}) - System-Core (core/system.php):
- Logger via require_once eingebunden
- Backup-Fehler (MySQL-Version, Verzeichnis, Datei) → Logger::addSql/addFile
- adminblock() nutzt block-sidebar statt sidebar-block (Partial-Umbenennung)
- addErrorFile() vereinfacht auf Logger::addFile()
- Security (core/security.php):
- Inline-Logging-Closures ($ls, $lbound, $lctx, $lreq, $lmem) entfernt
- HTTP-Error-Handler für direkten GET-Parameter ?error=NNN ergänzt
- Logging-Aufrufe nutzen Logger-Klasse
- Monitor-Modul (admin/modules/monitor.php):
- DB-Health-Fehler → Logger::addSql() statt error_log()
Benefits:
- Konsistentes Logging-Format über alle Core-Subsysteme
- Template-Engine unterstützt verschachtelte Datenstrukturen in Schleifen
- not-Syntax löst bestehende checkbox.html-Fehler bei älteren Templates
Technical notes: - Dot-Notation im for-Iterable erfordert PHP-Array-Zugriff via explode('.')/shift - Backward-compatible: class_exists('Logger')-Checks in allen Aufrufern
Einführung einer zentralen Logger-Klasse, die strukturiertes JSON-Logging für PHP-, SQL- und Datei-Ereignisse bereitstellt. Löst das bisher verteilte error_log()-Muster durch einen einheitlichen, konfigurierbaren Mechanismus ab.
Core changes:
- Logger-Klasse (core/classes/logger.php):
- Statische Methoden addPhp(), addSql(), addFile() für Kategorie-spezifisches Logging
- JSON-Zeilenformat mit Fingerprint (SHA-1), Timestamp, Level, Request-Kontext
- Log-Rotation via Komprimierung bei Überschreiten des konfigurierten Grenzwerts
- Rekursionsschutz (static $running) verhindert Endlosschleifen
- Sicherer Fallback auf error_log() bei fehlgeschlagenem Schreibzugriff
Benefits: - Konsistente, maschinenlesbare Log-Ausgabe über alle Core-Subsysteme - Zentrale Verwaltung: Format, Rotation und Pfade an einem Ort - Kategorisierung ermöglicht gezielte Log-Auswertung (php / sql / file)
Technical notes: - Log-Datei: LOGS_DIR/error_php.log (php), error_sql.log (sql), error_file.log (file) - Fingerprint-Deduplication via SHA-1(Kategorie+Typ+normalisierte Nachricht) - Backward-compatible: alle Aufrufer prüfen class_exists('Logger') vor Nutzung
Regenerate config/local.php base_fingerprint to reflect the coordinated admin CSS sizing pass (larger sidebar, 14px base font, 28px element height).
Core changes:
- config/local.php:
- _meta.base_fingerprint regenerated from 9bac3d77… to f005dfd5…
Technical notes: - No functional changes; fingerprint tracks template/asset state only
Koordinierte Größenanpassung der Admin-Oberfläche über drei CSS-Dateien: Sidebar und Wrapper werden breiter, Basisschrift von 13px auf 14px angehoben, Button- und Input-Höhen auf einheitliche 28px normalisiert.
Core changes:
- theme.css:
- body/select/input/textarea/button: Schriftgröße 13px → 14px
- input/textarea/select: min-height 18px → 28px
- .wrapper: max-width 1280px → 1440px
- .sl-admin-header, .sl-admin-main: Grid-Spalte 250px → 300px
- .container: padding-left 250px → 300px; .leftside margin -250px → -300px
- .leftside .block: width 225px → 275px
- .bchead + .bchead b: height/line-height 29px → 28px
- .toolbar li: line-height 29px → 28px
- system.css:
- .CodeMirror, .CodeMirror-hints: font 12px Verdana → 14px Verdana
- .sl-but und Varianten: min-height 29px → 28px, line-height 27px → 26px
- input.sl-but-*: height 29px → 28px
- new.css:
- .sl-sidebar-block: width 225px → 275px
- .sl-sidebar-block-content: margin 11px → 8px, padding 6px 0 4px → 8px 0
- .sl-sidebar-count-row: gap 8px → 4px
- .sl-sidebar-count-label/.sl-sidebar-count-value: padding 2px 4px → 4px
- .sl-dashboard-panel-head + b: height/line-height 29px → 28px
Benefits: - Breiterer Inhaltsbereich durch 300px Sidebar und 1440px Wrapper - Einheitliche 28px-Höhe für Buttons, Inputs und Panel-Header - Größere Lesbarkeit durch 14px Basisschrift (inkl. CodeMirror)
Technical notes: - Keine funktionalen Änderungen, reines Styling-Update - Rückwärtskompatibel: alle bestehenden Klassen bleiben erhalten
Die zwei Submit-Buttons im Datenbank-Modul nutzen jetzt getHtmlFrag('button') statt getHtmlFrag('input') und übergeben name_attr direkt — konsistent mit dem erweiterten button-Fragment-Vertrag.
Core changes:
- dump() — database.php:
getHtmlFrag('input', ['itype' => 'submit', 'name_attr' => ..., 'input_attr' => 'class="..."']) → getHtmlFrag('button', ['button_type' => 'submit', 'name_attr' => ..., 'class' => '...'])
- Betrifft _DB_PARSE (sl-but-green) und _EXECUTE (sl-but-blue)
Benefits: - Einheitlicher button-Fragment-Aufruf über alle Module - name_attr als expliziter Parameter statt über input_attr-String
Technical notes: - button.html rendert <input type="submit"> — kein Unterschied im HTML-Output
Überflüssige Wrapper-Divs (.sl-box-pad, .sl-box-content) aus box.html, table.html, module-head.html und preview.html entfernt; button.html um name_attr erweitert; session-summary auf sl-but umgestellt.
Core changes:
- box.html / table.html / module-head.html / preview.html:
- .sl-box-pad und .sl-box-content Wrapper-Divs entfernt
- .sl-box bleibt als äußerer Container erhalten
- Inhalt rückt eine Ebene nach oben
- button.html:
- name="{{ name_attr }}" Attribut ergänzt (für submit-Buttons mit name)
- is_chlog_primary/is_chlog_secondary: sl-changelog-button-* Klassen durch sl-but-blue / sl-but ersetzt
- session-summary.html:
- Update-Button-Link: sl-session-button → sl-but (einheitliche Button-Klasse)
Benefits: - Weniger DOM-Tiefe ohne CSS-Auswirkungen - button.html abdeckt jetzt auch submit-Buttons mit name-Attribut - Konsistente Verwendung von sl-but statt fragment-spezifischen Aliases
Technical notes: - sl-box-pad und sl-box-content hatten keine eigenen CSS-Regeln — rein strukturelles Markup - Bestehende Aufrufer von box.html / table.html nicht betroffen
Drei CSS-Dateien koordiniert überarbeitet: theme.css übernimmt das Seiten-Layout mit modernem Gradient und responsive Wrapper; system.css konsolidiert die Button-Stile auf inline-flex mit einheitlicher Höhe; new.css gibt die duplizierten Button-Regeln ab.
Core changes:
- theme.css:
- html: Gradient-Hintergrund (#8bc7dd → #c7e5f0 → #d9eef6) statt pagebg.jpg
- body: transparent, min-height 100vh; body:has(.slaenter) zentriert Login per CSS Grid
- .wrapper: responsive width: min(1280px, calc(100vw - 32px)), border + box-shadow statt PNG-Wraptop/Wrapfoot
- Neue sl-admin-* Layoutklassen: sl-admin-main (flex), sl-admin-sidebar, sl-admin-content, sl-admin-header, sl-admin-footer, sl-admin-brand, sl-admin-toolbar, sl-admin-language
- .slaenter-spezifisches Layout entfernt (Login läuft jetzt über body:has(.slaenter))
- system.css:
- .sl-but, .sl-but-blue, .sl-but-red, .sl-but-green, .sl-but-foot, .sl-but-back: inline-flex statt inline-block; min-height: 29px, padding: 0 12px statt feste height/line-height
- Legacy sl_but_* Alias-Klassen entfernt
- new.css:
- Duplizierte .sl-but / .sl-but-blue / .sl-but-red / .sl-but-green Regeln entfernt (jetzt nur in system.css)
- sl-div-item-full: CodeMirror/cm-editor/sl_code_editor ergänzt, min-width: 0 gesetzt
Benefits: - Login-Seite ohne PNG-Abhängigkeit, korrekt zentriert auf allen Viewports - Einheitliche Button-Höhe (29px) über alle Kontexte - Responsive Wrapper löst fixed 1094px ab
Technical notes: - body:has(.slaenter) setzt overflow: hidden — kein Scroll auf Login-Seite - sl-admin-main nutzt flex mit sl-admin-sidebar (flex: 0 0 auto) und sl-admin-content (flex: 1)
Admin- und Login-Layout auf semantische HTML5-Elemente umgestellt und einheitliche sl-admin-* CSS-Klassen als strukturelle Marker eingeführt, um das Layout von den alten float-basierten lcolomn/rcolomn-Klassen zu lösen.
Core changes:
- admin.html:
- <meta name="viewport"> ergänzt
- .wrapper erhält zusätzlich sl-admin-shell
- .header erhält sl-admin-header; lcolomn/rcolomn durch sl-admin-brand / sl-admin-toolbar ersetzt
- Doppeltes .vsep + .container + float-Struktur durch sl-admin-main / <aside class="sl-admin-sidebar"> / <main class="sl-admin-content"> ersetzt
- .footer erhält sl-admin-footer
- .language erhält sl-admin-language
- bare.html (Login-Layout):
- Gleiche sl-admin-* Klassenergänzungen
- .wrapper zusätzlich sl-admin-login-shell
- .header → sl-admin-login-header
Benefits: - Semantische aside/main-Elemente für Accessibility und Lesbarkeit - sl-admin-* Marker als stabile CSS-Anker unabhängig von Legacy-Klassen - Viewport-Meta ermöglicht responsives Verhalten
Technical notes: - Alte Klassen (lcolomn, rcolomn, vsep, container) bleiben im HTML erhalten für Rückwärtskompatibilität - sl-admin-shell / sl-admin-sidebar / sl-admin-content sind neue CSS-Klassen (theme.css)
Drei Dashboard-/Sidebar-Elemente erhalten CSS-Farbverläufe statt PNG-Sprites. Zusätzlich strukturelle CSS-Klassen für die neuen Grid-Komponenten eingeführt, die durch die Fragment-Migration benötigt werden.
Core changes:
- Gradient-Header (new.css):
- .sl-dashboard-panel-head: blauer Verlauf (ersetzt bchead.png)
- .sl-sidebar-block h3: grüner Verlauf (ersetzt leftblocktop.png + leftbdbtm.png)
- .sl-sidebar-block:has([data-sl-toggle-control="sl_block_3/4"]) h3: oranger Verlauf für "Новые" und "Ждут проверки"
- Strukturelle Grid-CSS (new.css):
- sl-sidebar-count-row / sl-sidebar-count-list / sl-sidebar-count-label / sl-sidebar-count-value
- sl-admin-block-links / sl-admin-block-link
- sl-session-line / sl-session-row / sl-session-name / sl-session-module / sl-session-* Hilfsklassen
- sl-tabs-content > .sl-tab-panel:first-child { display: block } — erster Tab sichtbar per Default
Benefits: - PNG-freie Darstellung für drei zentrale UI-Elemente - Orange-Kennzeichnung von Moderations-Blöcken per CSS :has() ohne HTML-Änderung - Strukturklassen ermöglichen konsistentes Grid-Layout in Sidebar-Blöcken
Technical notes: - border-radius + overflow:hidden auf .sl-sidebar-block ersetzt negative Margins auf h3 - Farbverlauf-Formel: hell oben → mittel → Knick bei 50% → leicht dunkler unten
Die "Новые"- und "Ждут проверки"-Sidebar-Blöcke wurden von der table-row/table-cells-Struktur auf das neue sidebar-count-row-Fragment umgestellt — konsistentes Rendering ohne Tabellen-Overhead.
Core changes:
- admininfo() — "Новые"-Block (core/admin.php):
- Alle Modul-Zähler (users, faq, files, links, news, pages, shop, whois usw.) von getHtmlFrag('table-row', [...table-cells...]) auf getHtmlFrag('sidebar-count-row', ['label_html', 'value_html']) umgestellt
- Wrapper von getHtmlFrag('table', [...]) auf getHtmlFrag('content-block', ['class' => 'sl-sidebar-count-list']) gewechselt
- admininfo() — "Ждут проверки"-Block (core/admin.php):
- Kommentare-Zeile analog migriert
Benefits: - Kein table-row/table-cells-Nesting mehr für einfache Label+Zahl-Paare - sidebar-count-row ist eigenständig styled und wiederverwendbar - PHP-Code klarer lesbar durch flache Fragment-Aufrufe
Technical notes: - sidebar-count-row erwartet label_html (HTML-String) und value_html (HTML-String) - sl-sidebar-count-list als Wrapper-Klasse für das Grid-Layout





