Последнии сообщения форума
Frontend-Fragmente (default/lite/simple) bekommen zusätzliche semantische Flags — span, button, input, link, table, title, code-row. Das Fragment content-block wurde in block-content umbenannt und leicht erweitert. Neu ist ein minimales partials/div.html. Das Partial block-user-info.html trennt Begrüßung in zwei separate Felder (greeting_label + greeting_name) statt eines vorformatierten HTML- Strings. Alle Aufrufer in blocks/, core/, modules/*/index.php wurden konsequent umgestellt.
Core changes:
- Fragment-Rename (alle 3 Themes):
content-block.htmlgelöscht,block-content.htmlneu angelegtSelbe Logik + neue Flags (z.B.
is_signature,is_center,is_radio_group), synchron mit Admin-Theme für einheitliche Fragmentnamen- span.html (default/lite/simple):
+
is_form_value,is_views,is_line_stack_item,is_cat_image,is_cat_name,is_new_today,is_new_days,is_new_week- Ersetzt inline
class="sl_n_day"etc. durch semantische Flags - button.html:
+
is_reload_query-Trigger mit htmx-Swap,is_legacy_green,is_back,is_navi_lower,is_login_submit- Button-/Input-Varianten konsolidiert
- input.html:
- +
is_form_control,is_user_search,is_search_filter - Default-Klasse
sl-fieldnur bei Abwesenheit anderer Klassenflags - link.html:
+
is_shop_add(sl-shop-add),is_bold_labelBold-Linklabel,suffix_htmlfür nachgestellte Badges/Icons (z.B. NewGraphic)- code-row.html:
row_classoptional —is_odd→ sl-code-row-odd / sl-code-row-even- table.html / table-row.html:
is_col_halfim Header,is_hiddenundis_forum_statauf Row-Levelfl-col-statSpalte für Foren-Statistiken- title.html:
- +
is_plainfürclass="title"stattsl-title(ältere Themes) - partials/block-user-info.html:
greeting(HTML-String) →greeting_label+greeting_name(zwei Felder). Begrüßung wird jetzt im Template zusammengesetzt, nicht in PHP- partials/div.html (neu, default/lite/simple):
Minimaler generischer Div-Wrapper für einheitliche Semantik zwischen Themes
- partials/form-add.html:
- +
is_calculator(sl-calculator-form) - Blocks (blocks/*.php):
auto_links, center, center_forum, center_media, center_plus, forum, img, languages, links, login, modules, user_info: alle Aufrufe von
getHtmlFrag('content-block', ...)→getHtmlFrag('block-content', ...)user_info.php:greeting→greeting_label/greeting_name, passend zum neuen block-user-info-PartialSemantische Flags ersetzen hardkodierte
class-Werte (z.B.'class' => 'sl-shop-add'→'is_shop_add' => true)- Core (core/helpers.php, core/system.php, core/user.php):
getTplRadioGroup(),getTplNewGraphic(), Footer-/Nav-Helper:content-block→block-content, Flag-basierte KlassengetTplFieldsIn(): leererinput_classentfernt (unnötig)getTplPager():prefixals hartkodierter Leerstring (ungenutzte Option entfernt)- Module (modules/*/index.php — account, changelog, clients, contact,
content, faq, files, forum, help, jokes, links, main, media, money, news, order, pages, rss, search, shop, voting, whois):getHtmlFrag('content-block', ...)→getHtmlFrag('block-content', ...)'class' => 'sl-shop-add'/'sl-section'/'sl_n_day'→ Flag-Formmodules/shop/index.php:title_textnicht mehr percutstr()beschnitten — Truncation erfolgt jetzt CSS-seitig
Benefits: - Einheitlicher Fragmentname block-content im Frontend und Admin - Keine hardkodierten Klassennamen mehr in PHP für wiederkehrende Varianten (is_new_today, is_shop_add, is_section, ...) - block-user-info-Partial kann Begrüßung lokalisierungsfreundlich ohne HTML-Verkettung in PHP aufbauen - Fragmente in allen 3 Themes synchron — leichter zu warten
Technical notes: - content-block.html in default/lite/simple in diesem Commit gelöscht; alle Aufrufer sind bereits auf block-content umgestellt - Frontend-Fragmente syntaktisch 1:1 identisch zwischen den 3 Themes (Theme-spezifisches Styling über CSS, nicht Template-Variation) - Rückwärtskompatibilität: keine — Template-/Parameter-Namen ändern sich, nur innerhalb des neuen Refactor-Strangs verwendet
Admin-Tabellen werden jetzt über semantische Spalten-Flags (is_col_id, is_col_check, is_col_author, is_col_status, is_col_actions, is_col_date, is_col_count) gestylt — hardkodierte class_name-Werte in PHP entfallen. Die Fragmente button, inline-badge, input, select, textarea, label bekommen zusätzliche Varianten-Flags (is_green/is_blue/is_plain, is_note/is_dimmed/is_success, is_inline_gap/is_search_filter etc.). Das Fragment content-block wurde in block-content umbenannt und um is_section und is_sidebar_count_list erweitert.
Core changes:
- Fragment-Templates (admin/fragments):
block-content.html: ersetztcontent-block.html+ neue Flagsis_section(→sl-section),is_sidebar_count_listtable-cells.html+th.html: neue Spalten-Flagsis_col_id(sl-col-id),is_col_check(sl-col-check),is_col_author(sl-col-author),is_col_status(sl-col-status),is_col_actions(sl-col-actions),is_col_date(sl-col-date),is_col_count(sl-col-count)table-row.html+div-row.html:is_lang_edit,is_ratings_inner,is_hiddenfür Row-State-Klassenbutton.html:is_green/is_blue/is_plainlösen veralteteis_chlog_primary/is_chlog_secondaryfür Button-Varianten abinline-badge.html: +is_note/is_dimmed/is_success/is_danger/is_action_label/is_muted/is_green/is_red/is_category/is_views/is_post_icon/is_date+color_attrfür Inline-Styleinput.html: +is_config/is_ratings_days/is_form_control/is_inline_gap/is_search_filter/translate_targetselect.html: +is_inline_gap/is_search_sort/is_search_order/is_search_filtertextarea.html: +is_configlabel.html: +is_associated_option- Partials (admin/partials):
div.html: +is_search_line,is_rate_box(für Ratings-Tab-Layout)form.html: +is_inline_filter(Such-Filter-Formulare)basic-monitor.html: Prüfstatus-Styling auf semantische Badges umgestellt- Layout (admin/layouts):
admin.html:<main class="sl-admin-content">bekommt inneres<div class="sl-admin-content-inner">für Grid/Flex-Container- Styles (admin/assets/css):
new.css: neue.sl-col-*-Regeln (Breite + Alignment für ID/Check/Author/Status/Actions/Date/Count-Spalten),.sl-section,.sl-inline-gap,.sl-search-filter-field,.sl-lang-edit-row,.sl-ratings-inner-row,.sl-associated-optiontheme.css: minimale Layout-Anpassung fürsl-admin-content-inner- Core + Module (core/admin.php, admin/modules/, modules//admin/):
Alle Aufrufe von
getHtmlFrag('content-block', ...)aufgetHtmlFrag('block-content', ...)umgestelltclass_name=>'sl-col-id'und ähnliche auf Flag-Form ('is_col_id' => true) migriert — gilt für alle Admin-Tabellen in admins, comments, config, database, favorites, groups, lang, messages, modules, monitor, newsletter, ratings, scheduler, statistic sowie alle modules/*/admin/index.php
Benefits: - Spaltenbreiten/-Ausrichtung deklarativ in CSS statt verstreut in PHP - Konsistente Button-/Badge-Varianten ohne Zeichenketten-Klassennamen - Ein einziger Fragmentname (block-content) statt gemischter content-block-Nutzung - Klarere Trennung von Admin-Spalten-Semantik und freien Klassen
Technical notes: - content-block.html im admin-Theme wird in diesem Commit gelöscht; alle Aufrufer sind bereits auf block-content umgestellt - is_*-Flags sind additiv kombinierbar; Reihenfolge im Template bestimmt die CSS-Klassen-Reihenfolge - color_attr in inline-badge ersetzt Inline-<span style="color:..."> und erlaubt beliebige Hex/CSS-Color-Werte
Nach dem Block-Refactor (Commit 2ff47e47) nutzten die neuen atomaren Fragmente bereits die Klassen sl-block, block-modules, block-flags, block-menu, block-login etc., doch die zugehörigen CSS-Regeln waren in den Themes nicht vorhanden. Ohne diese Styles fielen Sidebar-Blöcke wie modules.php in rohen Inline-Fluss und «verschluckten» visuell die nachfolgenden Blöcke — auf einer frischen Installation war faktisch nur der Inhalt des languages.php-Blocks sichtbar.
Core changes:
- Block-Wrapper (sl-block, sl-block-content):
sl-block: Hintergrund #f6f8fa, padding 15px, border-radius 8px, margin-bottom 25px (Visuelles Äquivalent zur alten.block-Regel in blocks.css, aber für das neue<aside class="sl-block">-Markup)sl-block-content: line-height 1.4 für lesbare Block-Inhalte#sidebar .sl-block:last-child: kein margin-bottom (letzter Block)- modules.php (block-modules, block-mod-section):
.block-modules: flex-column mit 4px gap — Navigation als saubere vertikale Liste statt Inline-Fluss.block-modules .sl-module: display:block + padding 4px 2px für klickbare Zeilen.block-mod-section: Separator + kleinere Schrift für Moderator- Unterabschnitte (invisible/inactive Modules, Admin-Bereich)- languages.php (block-flags):
.block-flags: flex-wrap mit 6px gap, align-items center — Flaggen flüssig nebeneinander mit sauberen Abständen.block-flags a: display inline-flex für konsistente Vertikalzentrierung- login.php / user_info.php (block-login):
.block-login p: margin 6px 0 — Zeilenabstände im Login-Formular.block-login input: margin 3px 0 — vertikaler Breathing Space- menu.php (block-menu):
.block-menu ul: list-style none, padding 0, margin 0 — DB-Menü ohne Standard-Listendarstellung.block-menu li: margin 4px 0 — Abstand zwischen Menüpunkten
Benefits: - Frisch installierte Sidebar-Blöcke rendern sichtbar und nicht mehr als zerfließender Inline-Text - Visuelle Parität zur alten .block-Regel ohne Markup-Rückportierung - Konsistente Klassen in default/lite/simple — ein einziger Styleset für alle drei Frontend-Themes
Technical notes: - Rein additiv: keine bestehenden Regeln geändert oder entfernt - Legacy-Regel .block in blocks.css bleibt unberührt für evtl. noch nicht migrierte Templates - TODO aus Commit 2ff47e47 erledigt: "Neue sl-*-Klassen (block-login, block-flags, block-menu) in new.css zu ergänzen"
Fingerprint spiegelt den aktuellen Stand nach Einführung der Table- Fragment-API (is_truncate/is_fixed) und der Admin-Login-Auth-Form- Vereinheitlichung wider.
Neues deklaratives Truncation-Modell für Admin-Tabellen: Zellen und Spaltenköpfe können als is_truncate markiert werden, die Tabelle selbst als is_fixed. Rendering und Ellipsis übernimmt das Template via table-layout: fixed + text-overflow: ellipsis; cutstr()-Aufrufe in PHP entfallen, echter Volltext bleibt im title-Attribut verfügbar.
Core changes:
- Fragment-Templates (table.html, table-cells.html, th.html):
- table.html: rendert
.sl-table-fixed-Klasse wennis_fixedgesetzt ist table-cells.html: unterstützt pro Zelle
class_name,is_truncate,title_text; kombiniert Klassen und fügtsl-cell-ellipsishinzu- th.html: analoge Logik für Header-Zellen mit
is_truncate - Styles (new.css):
.sl-table-fixedmittable-layout: fixed.sl-cell-ellipsis: max-width:0 + overflow:hidden + white-space:nowrap + text-overflow:ellipsis — funktioniert im fixed-Layout als BegrenzungSpaltenbreiten-Regeln via
tr:has(> th:nth-child(N):last-child)für 5er/6er Heads und für rechte Aktions-Spalte (.sl-th-center)- Core (core/admin.php):
getAdminCategoryList / getAdminBlockList / getAdminFavoriteList / getAdminPrivateList:
cutstr($title, N)in label_text entfernt — Ellipsis erfolgt jetzt rein visuell in der Tabellenzelle- Admin-Module (admin/modules/*.php):
admins, groups, lang, messages, modules, newsletter, referers, scheduler, security: Titel/Name/Modul-Spalten auf is_truncate + title_text umgestellt; Tabellen mit is_fixed markiert
- Modul-Admins (modules/**/admin/index.php):
account, auto_links, clients, content, faq, files, forum, help, jokes, links, media, money, news, order, pages, search, shop, voting, whois: gleiche Umstellung für Title/URL/Email-Spalten
- shop, auto_links, links: zusätzlich domain()/cutstr()-Längen entfernt
- search: komplette Searchaudit- und Toplist-Heads mit is_truncate
- whois: 4 Spalten (Site/Host/DC/Poster) auf is_truncate
Benefits: - Keine hardkodierten Zeichen-Limits mehr im PHP-Code - Volltext bleibt im title-Attribut für Hover/Screenreader - Responsiv korrekte Spaltenbreiten über :has()-Selektoren - Einheitliches Truncation-Verhalten in allen Admin-Tabellen
Technical notes: - Breitenregeln nutzen CSS :has() — moderne Browser (Chrome 105+, Firefox 121+, Safari 15.4+) werden vorausgesetzt - Erst-Spalte (typisch ID) bekommt 42px außer bei is_truncate - Rechte Toolbar-Spalte (.sl-th-center) bekommt fixe 36px + 102px für Status und 100px für Author — stabile Layouts bei dynamischen Daten
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: Klassen `wrapper/slaenter/wraptop/wrapmid/wrapfoot/ entercont/header/footer/sl-admin-header/sl-admin-toolbar` durch 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-top und -bottom bleiben 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)





