Журнал изменений
Fingerprint spiegelt den aktuellen Stand nach Logger-Integration, Template-Engine- Fixes, Block-Refactoring und neuen Fragment-Templates wider.
Erstellt fehlende Block-Templates für alle Frontend-Themes (default, lite, simple). Templates sind identisch über alle Themes und eliminieren die block-*-Warnungen im Log.
Core changes:
- Fragments (×3 Themes):
- block-list-item.html: <li>-Wrapper für link.html (news, files, pages, faq, jokes)
- block-center-link.html: zentrierter Link mit sl-center-Klasse (auto_links)
- block-login-form.html: Login-Formular mit CAPTCHA + Netzwerk-Row (login, user_info)
- block-network-row.html: Soziale-Login-Zeile (login, user_info)
- block-search-form.html: Suchformular (search)
- block-menu.html: <nav>-Wrapper für DB-Content (menu)
- admin-block-links.html: Admin/Logout-Links + Block-HTML (adminblock)
- Partials (×3 Themes):
- block-sidebar.html: Sidebar-Block-Wrapper mit Toggle-Control (adminblock)
- block-user-info.html: Konsolidiertes User-Info-Partial (eingeloggt + Gast)
Benefits:
- Alle block-*-Warnungen im error_php.log beseitigt
- Einheitliche Template-Struktur über alle Frontend-Themes
- block-user-info.html vereint 7 frühere Fragment-Aufrufe in einem Partial
Technical notes:
- Templates identisch in default/lite/simple — Theme-spezifisches CSS via Klassen
- block-user-info.html nutzt is_user-Flag für eingeloggt/Gast-Verzweigung im Template
- Neue sl-*-Klassen (block-login, block-flags, block-menu) in new.css zu ergänzen
Alle Block-PHP-Dateien wurden refaktoriert: statt fehlender block-*-Fragment-Templates nutzen sie jetzt vorhandene atomare Fragmente (link, image, table, table-row) oder übergeben strukturierte Datenobjekte an Partials.
Core changes:
Einfache Blöcke → table.html + table-row.html (center, center_forum, center_media, center_plus, forum, links):
- Spalten-Daten über cells[]-Array übergeben, HTML-Strings in PHP entfernt
- head_html/body_html-Strings durch headers[]-Array + table.html ersetzt
- Banner-Blöcke (banner_random, stat):
- banner_random: block-banner-random → link.html mit img_src
- stat: block-stat-banners → image.html (Counter) + link.html ×2 (Banner)
- img.php:
$img_html HTML-Variable entfernt; img_src wird als leerer String übergeben wenn nicht das erste Bild — link.html rendert <img> nur bei gesetztem img_src
- menu.php:
- DB-Inhalt ($content) wird jetzt als Variable an block-menu-Template übergeben
- user_info.php:
Alle separaten block-user-*-Fragment-Aufrufe durch $data-Array + getHtmlPart() für block-user-info Partial ersetzt
Benefits:
- Keine fehlenden Template-Warnungen mehr für block-*-Fragmente
- Kein HTML/CSS in PHP-Dateien — nur noch Daten-Arrays
- Wiederverwendung vorhandener atomarer Fragmente statt Duplizierung
Technical notes:
- table-row.html: Stat-Spalten nutzen cell.class='fl-col-stat' (kein is_forum_stat)
- Forum-Sidebar: Poster als primary_text/secondary_text (Klartext), kein user_info() HTML
- user_info.php: getHtmlPart('block-user-info') statt getHtmlFrag (Partial, nicht Fragment)
Zwei Bugfixes in den Frontend-Theme-Templates (default, lite, simple).
Core changes:
- checkbox.html (alle 3 Themes):
- {% if not is_plain %} war invalide Syntax der Template-Engine
- Korrektur:
not is_plain→!is_plain - Ursprung: Engine erkennt
noterst seit diesem Release; ältere Templates nutzen! - table.html (alle 3 Themes):
- Body-Klassen-Logik vereinfacht:
not is_voting_listdurch expliziten {% if/else %} ersetzt - Vorher:
{% if body_class or not is_voting_list %}(not-Operator noch nicht unterstützt) - Nachher: separate {% if body_class %}...{% else %}{% if is_voting_list %}...{% endif %}
Benefits:
- Keine PHP-Syntaxfehler mehr durch unbekannte Template-Conditions
- table.html rendert Body-Klasse korrekt für alle Tabellentypen
Technical notes:
- Identische Änderung in allen 3 Frontend-Themes (default, lite, simple)
- Kein Inhalt oder Ausgabe-Verhalten geändert, nur Template-Syntax korrigiert
Korrektur der Aktionserkennung im SQL-Dump-Modul: Submit-Buttons übergeben jetzt explizite value_attr-Werte (parse/exec), statt Übersetzungs-Konstanten als Aktion zu nutzen. Dadurch ist die Serverlogik locale-unabhängig.
Core changes:
- Dump-Funktion (admin/modules/database.php):
- Aktion 'dump'/'parse' vs. _EXECUTE/_DB_PARSE ersetzt durch 'exec'/'parse'
- Submit-Buttons erhalten value_attr: 'parse' bzw. 'exec'
- Formular-URL auf action_url mit Query-String umgestellt (name/op als URL-Parameter)
- hidden-Inputs für name/op entfernt (jetzt URL-Parameter)
- getSqlsum/getSqltable-Aufrufe in die jeweiligen if/else-Zweige verschoben
- Tabs-Anzeige (database()-Funktion):
- Fehlender else-Zweig für getTplAdminTabs ergänzt (Tabs ohne Content-Block)
Benefits:
- Locale-unabhängige Aktionserkennung (kein Vergleich mit übersetzten Labels)
- Formular-URL sauberer (GET-Parameter statt POST für name/op)
- Korrekte Tabs-Darstellung auch ohne Content-Block
Technical notes:
- Bestehende _DB_PARSE/_EXECUTE Konstanten unverändert (nur als Label)
- Kein Breaking Change für externe Aufrufer
Umbenennung der Admin-Partial- und Fragment-Dateien zur Vereinheitlichung der Namenskonvention (block-* Präfix). Alle Aufrufer in admin/index.php und core/admin.php wurden entsprechend aktualisiert.
Core changes:
- Partial-Umbenennung (admin/partials/):
- sidebar-block.html → block-sidebar.html
- Aufrufer: admin/index.php, core/system.php (getHtmlPart)
- Fragment-Umbenennung (admin/fragments/):
- sidebar-count-row.html → block-sidebar-count-row.html
- Aufrufer: core/admin.php (getHtmlFrag, alle admininfo-Zeilen)
- Button-Fragment (admin/fragments/button.html):
- value_attr-Unterstützung ergänzt für explizite Submit-Werte
- Admin-CSS (admin/assets/css/new.css + theme.css):
- Anpassungen für block-sidebar Layout
Benefits:
- Konsistente block-* Namenskonvention für alle Block-bezogenen Templates
- Vorbereitung für Frontend-Themes, die dieselbe block-sidebar Partial nutzen
Technical notes:
- Alte Dateien gelöscht; getHtmlPart/getHtmlFrag suchen nach neuem Namen
- Kein Inhalt der Templates geändert, nur Dateiname und Aufrufer
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