Журнал изменений
Login- und Registration-Partials wurden zu einem einzigen auth-form
Partial mit row-basierter API zusammengeführt. Das Shell/Layout der
Login-Seite wurde auf eigene sl-admin-login-* Klassen umgestellt
und die dazugehörigen Styles in ihre eigene Sektion ausgelagert.
Core changes:
- Templates (auth-form.html, layouts/bare.html):
- Neues
partials/auth-form.html: rendert beliebige Formular-Zeilen über einrows[]-Array (label, field_html, has_colon) - Alte
partials/login.htmlundpartials/registration.htmlentfernt layouts/bare.html: Klassenwrapper/slaenter/wraptop/wrapmid/wrapfoot/ entercont/header/footer/sl-admin-header/sl-admin-toolbardurch neuesl-admin-login-*-Familie ersetzt; Toolbar-Block entfernt
- Admin-Entry (admin/index.php):
- login()-Funktion: beide Zweige (Erst-Registrierung + Standard-Login)
nutzen jetzt
getHtmlPart('auth-form', ...)mitrows-Array - Feldaufbau inline via
getHtmlFrag('input'|'radio', ...) - Captcha wird als zusätzliche Zeile ohne Label in
rowsangehängt
- Styles (new.css, theme.css):
- new.css: eigener "Admin login"-Abschnitt mit
.sl-admin-login-shell,-card,-header,-content,-list,-form-frame,-field,-submit,-footer,-copyright+ Responsive-Regeln (700px/560px) - theme.css: Selektoren
.slaenter/.wrapper:not(.slaenter)→.sl-admin-login-shell/.wrapper:not(.sl-admin-login-shell) - theme.css: doppelter
body:has(.slaenter)-Block entfernt (jetzt ausschließlich in new.css)
Benefits:
- Ein einziges Partial für beide Auth-Flows — keine Duplikation
- Flexible Felder-Reihenfolge/-Anzahl über rows[] (z.B. Captcha-Row)
- Trennung von Admin-Login-Layout (new.css) und Grundlayout (theme.css)
- Konsistente
sl-admin-*-Namenskonvention auch im Login-Flow
Technical notes:
- Kein Funktionswechsel, reine Template/Style-Konsolidierung
sl-admin-login-topund-bottombleiben als leere Slots im Markup (display:none), um zukünftige Layout-Akzente ohne HTML-Änderung zu erlauben
Toolbar komplett neu gebaut: Flexbox-Layout, dezenter Hintergrund-Verlauf, abgerundete Item-Hover-Effekte ohne Sprite-Images.
Buttons (sl-block-sidebar h3, sl-dashboard-panel-head) vereinheitlicht: einfacher 3-Stop-Verlauf, opacity:.8-Hover statt separater Hover-Verlauf.
Modul-Head-Body auf CSS Grid umgestellt (25/75 Split) für stabiles Title/Searchbox-Layout; Searchbox mit Inline-Flex und fester min-height.
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