ASSET-Übersicht 365CMS
Inhaltsverzeichnis
- Aktive Runtime-Bundles
- Synchronisationsregeln
- CSS- und JavaScript-Architektur
- Build- und Update-Workflow
- Interne Bild-Assets
- Neue Kandidaten außerhalb der Runtime
Aktive Runtime-Bundles
Führende Quelle für aktive Laufzeitpfade ist CMS/assets/ sowie der dokumentierte Sonderfall CMS/vendor/dompdf/. Das Root-Verzeichnis ASSETS/ ist Staging-/Quellmaterial, nicht die produktive Wahrheit.
| Library | Runtime-Stand | Zweck | Produktiver Pfad | Quelle in /ASSETS |
Hinweis |
|---|---|---|---|---|---|
tabler |
1.4.0 |
Admin-/Member-UI | CMS/assets/tabler/ |
ASSETS/tabler-core-1.4.0/core/dist/ |
nur css/tabler.min.css und js/tabler.min.js übernehmen (Flags/Payments/RTL/Maps/img/ werden nicht geladen) |
editorjs |
2.31.6 |
Block-Editor | CMS/assets/editorjs/ |
ASSETS/editor.js-2.31.6/ |
kuratierter Runtime-Satz aus Core-Dateien und gezielt gebauten Plugin-Artefakten wie delimiter.umd.js |
suneditor |
3.0.5 |
Legacy-WYSIWYG | CMS/assets/suneditor/ |
ASSETS/suneditor-3.0.5/ |
Runtime wird aus dist/ + src/langs/de.js übernommen; fehlt dist/ nach Upstream-Download, muss lokal gebaut werden |
photoswipe |
5.x-Build |
Lightbox | CMS/assets/photoswipe/ |
ASSETS/PhotoSwipe/ |
nur produktive Frontend-Dateien übernehmen |
Carbon |
3.11.4 |
Datum / Zeit | CMS/assets/Carbon/src/Carbon/, CMS/assets/Carbon/lazy/Carbon/ |
ASSETS/Carbon-3.11.4/src/Carbon/, ASSETS/Carbon-3.11.4/lazy/ |
Upstream-Layout src/ + lazy/ beibehalten (relative lazy/-Requires); ohne Laravel/, PHPStan/, Cli/ |
ldaprecord |
4.0.3 |
LDAP / Active Directory | CMS/assets/ldaprecord/ |
ASSETS/LdapRecord-4.0.3/src/ |
kompletter Source-Ordner für PSR-4 |
mailer |
8.0.8 |
Mailversand | CMS/assets/mailer/ |
ASSETS/mailer-8.0.8/ |
Symfony-Komponente |
mime |
8.0.8 |
MIME / Anhänge | CMS/assets/mime/ |
ASSETS/mime-8.0.8/ |
Symfony-Komponente |
translation |
8.0.8 |
i18n | CMS/assets/translation/ |
ASSETS/translation-8.0.8/ |
Symfony-Komponente, ohne Command/DataCollector/DI/Extractor |
yaml |
8.0.8 |
YAML-Parser (Sprachkataloge) | CMS/assets/yaml/ |
Packagist symfony/yaml |
ohne Command/ |
clock |
8.0.8 |
Clock für Carbon / AI | CMS/assets/clock/ |
Packagist symfony/clock |
inkl. Resources/now.php (files-Autoload) |
egulias-email-validator |
4.0.4 |
E-Mail-Validierung | CMS/assets/egulias-email-validator/ |
Packagist egulias/email-validator |
Pflicht für Mime\Address/SMTP; benötigt doctrine-lexer 3.0.2 |
| AI-Platform-Kette | 8.0.8 bzw. aktuelle Stable |
Serializer, PropertyInfo/-Access, TypeInfo, Uid, String, EventDispatcher, enum-helper, phpDocumentor, phpdoc-parser, webmozart/assert, doctrine/deprecations | jeweils CMS/assets/<paket>/ |
Packagist | ohne Tests/Command/DataCollector/DI |
polyfill-* |
1.3x/1.4x |
mbstring, ctype, intl-idn/-normalizer/-grapheme, uuid | CMS/assets/polyfill-*/ |
Packagist symfony/polyfill-* |
bootstrap.php über files-Liste im Autoloader |
symfony-contracts |
3.6.1 |
Service-/Translation-/EventDispatcher-/HttpClient-/Deprecation-Contracts | CMS/assets/symfony-contracts/ |
ASSETS/contracts-3.6.1/ |
ersetzt den früheren Minimal-Shim; Cache/ nicht übernommen (kein psr/cache) |
tntsearch |
5.0.3 |
Volltextsuche | CMS/assets/tntsearchsrc/, CMS/assets/tntsearchhelper/ |
ASSETS/tntsearch-5.0.3/ |
src/ und helper/helpers.php getrennt gespiegelt |
php-jwt |
gebündelter Snapshot | JWT | CMS/assets/php-jwt/ |
ASSETS/php-jwt/ |
produktiv lokal gebündelt |
twofactorauth |
gebündelter Snapshot | TOTP / 2FA | CMS/assets/twofactorauth/ |
ASSETS/twofactorauth/ |
sicherheitskritisch, nur kapseln |
webauthn |
gebündelter Snapshot | Passkeys / WebAuthn | CMS/assets/webauthn/ |
ASSETS/webauthn/ |
sicherheitskritisch, nur kapseln |
htmlpurifier |
gebündelter Snapshot | XSS-Schutz | CMS/assets/htmlpurifier/ |
ASSETS/htmlpurifier/ |
produktive Sanitizer-Basis |
melbahja-seo |
gebündelter Snapshot | SEO-Helfer | CMS/assets/melbahja-seo/ |
ASSETS/melbahja-seo/ |
mittelfristig in Core-Services zerlegbar |
psr |
Log 3.0.2, EventDispatcher 1.0.0, Container 2.0.2, Clock 1.0.0 | PSR-Interfaces | CMS/assets/psr/ |
Packagist psr/* |
vollständige Originalpakete statt Minimal-Shim |
dompdf |
3.1.5 |
PDF-Erzeugung | CMS/vendor/dompdf/ |
ASSETS/dompdf-3.1.5/dompdf/vendor/ |
kein CMS/assets-Bundle, sondern Vendor-Sonderfall |
css/js/images |
intern | 365CMS-eigene Runtime-Assets | CMS/assets/css/, CMS/assets/js/, CMS/assets/images/ |
ASSETS/css/, ASSETS/js/, ASSETS/images/ |
kein Third-Party-Bundle; Bildinventar siehe DOC/assets/images/README.md |
msgraph |
Referenzbestand | SDK-Ablage | CMS/assets/msgraph/ |
ASSETS/msgraph-sdk-php-2.56.0/ |
aktuell nicht als aktive Runtime-Integration dokumentiert |
Zusätzlich produktiv relevant:
CMS/assets/autoload.phpals zentraler PHP-Asset-AutoloaderCMS/core/VendorRegistry.phpals Diagnose-/Ladevertrag für gebündelte LibrariesCMS/core/Services/PdfService.phpals dokumentierter Dompdf-Einstieg
Synchronisationsregeln
Die Synchronisation von /ASSETS nach /CMS/assets ist selektiv, nicht spiegelnd. Ein vollständiges Rekursiv-Kopieren ganzer Upstream-Repositories würde Tests, Build-Tooling, node_modules, Dokumentation oder falsche Laufzeitpfade mit in die Runtime tragen.
Wichtige Regeln im aktuellen Stand:
ASSETS/ist Staging,CMS/assets/ist Runtime.- Frontend-Bundles nur als Build-Artefakte übernehmen. Das gilt insbesondere für
tabler,gridjs,PhotoSwipe,editor.jsundsuneditor. editorjsbleibt kuratiert. Die Runtime orientiert sich anCMS/core/Services/EditorJs/EditorJsAssetService.php, nicht am gesamten Plugin-Baum; Zusatzartefakte wiedelimiter.umd.jsmüssen bei neuen Plugin-Ständen gezielt gebaut oder aktualisiert werden.suneditorist ein Sonderfall. Für die Runtime werdensuneditor.min.js,suneditor.min.css,suneditor-contents.min.cssundsrc/langs/de.jsaus dem gebauten Paketstand übernommen; fehltdist/nach einem frischen Upstream-Download, muss SunEditor zuerst lokal gebaut werden.dompdfbleibt außerhalb vonCMS/assets/. Der produktive Pfad istCMS/vendor/dompdf/, geladen überCMS/vendor/dompdf/autoload.php.- Sicherheits- und Standard-Bibliotheken nicht umstrukturieren, solange der Autoload-Vertrag stabil bleiben muss. Das betrifft u. a.
htmlpurifier,php-jwt,webauthn,twofactorauth,ldaprecord,mailer,mimeundtranslation.
CSS- und JavaScript-Architektur
CSS
- Basis:
Tablerplus 365CMS-spezifische Overrides inCMS/assets/css/ - Produktive Styles:
admin.css,admin-tabler.css,admin-hub-*,hub-sites.css,main.css,member-dashboard.css,cms-cookie-consent.css - Editor-Sonderfälle:
SunEditorbringt eigenes CSS mit;Editor.jsnutzt eigene Tool-/Block-Assets - Theme-Trennung: Themes liefern zusätzliches Frontend-CSS in
CMS/themes/<theme>/; globale Runtime-Assets bleiben davon getrennt
JavaScript
- Zentrale Runtime-Zone:
CMS/assets/js/ - Wichtige produktive Dateien:
admin.js,admin-content-editor.js,admin-media-integrations.js,admin-seo-redirects.js,admin-system-cron.js,member-dashboard.js,photoswipe-init.js,cookieconsent-init.js - Editor-Zonen:
Editor.js= kuratierter Block-Editor mit mehreren Plugin-BuildsSunEditor= Legacy-WYSIWYG für HTML-Eingabe
- Ladeverträge: Admin-/Frontend-Templates referenzieren Assets weiterhin manuell über
ASSETS_URL,SITE_URL . '/assets',cms_asset_url()oderfilemtime()-basierte Varianten
Build- und Update-Workflow
Es gibt keine zentrale Repo-weite Bundling-Pipeline. Asset-Updates sind weiterhin ein dokumentierter manueller bzw. teilmanueller Pfad.
Empfohlener Ablauf pro Update:
- Quellstand in
/ASSETSprüfen - Nur den tatsächlich produktiven Runtime-Scope nach
CMS/assets/bzw.CMS/vendor/übernehmen CMS/assets/autoload.phpsowie Core-Verträge (VendorRegistry,PdfService, Editor-Services) gegen Pfadänderungen prüfen- Falls ein Upstream nur Source-Dateien enthält, den Build lokal erzeugen und erst dann die Artefakte übernehmen
- Doku synchron halten:
DOC/ASSET.mdDOC/assets/README.mdDOC/ASSETS_OwnAssets.mdDOC/ASSETS_NEW.mdfür neue Kandidaten außerhalb der Runtime
Interne Bild-Assets
CMS/assets/images/ ist der produktive interne Bildbestand der Runtime. Der
aktuelle Bestand umfasst 13 PNG-Dateien:
- zwei Dashboard-Icons für Admin und Member
- fünf Logos mit Text
- drei reine Schriftzüge
- drei Markenzeichen ohne Schriftzug
Die verbindliche Einzelauflistung mit Abmessungen und Verwendungszweck steht in
DOC/assets/images/README.md. Neue Bilddateien sind
dort und in DOC/FILELIST.md gemeinsam zu ergänzen.
Neue Kandidaten außerhalb der Runtime
Folgende Pakete liegen unter /ASSETS, sind aber nicht produktiv in CMS/assets/ bzw. CMS/vendor/ integriert:
symfony/cache(ASSETS/cache-8.0.8/)guzzlehttp/guzzle(ASSETS/guzzle-7.10.0/)adhocore/jwt(ASSETS/php-jwt_yuliyan_1.1.3/)- weitere Beobachtungskandidaten wie
monolog-bundle-4.0.2,msgraph-sdk-php-2.56.0
Hinweis seit 3.3.42: Tabler Icons wurden aus dem Beobachtungskandidaten-Status in die produktive Runtime übernommen. Die lokale Kopie unter CMS/assets/tabler-icons/ ersetzt externe jsDelivr-/Tabler-Icon-Webfont-Requests im Admin-Header.
Für diese Kandidaten gilt:
- nicht blind in die Runtime kopieren
- zunächst Service-/Adapter-Schnittstellen im Core definieren
- transitive Abhängigkeiten vollständig bewerten
- Betriebsrisiken, Provider-Abhängigkeiten und Secrets-/Rate-Limits vor Integration dokumentieren
Ausnahme im aktuellen Stand:
symfony/ai-platformzählt nicht mehr als reiner Außenkandidat, weil die Basis jetzt produktiv unterCMS/assets/ai-platform/liegt, vom zentralen Assets-Autoloader aufgelöst wird und inDiagnose -> Assetsals Produktivpaket erscheint.- Das ändert nicht den Architekturgrundsatz: weitere Provider-Bridges und Zusatzabhängigkeiten dürfen weiterhin nur kontrolliert über Core-Adapter und Feature-Gates in die Runtime wachsen.
Zusätzlich wichtig im aktuellen Stand:
- Das zuvor mitgeführte Paket
stichoza/google-translate-phpwurde bewusst aus/ASSETSentfernt und wird nicht weiter als aktiver Integrationskandidat geführt. - Für Übersetzungs- und Rewrite-Funktionen ist stattdessen ein providerbasierter AI-Services-Ansatz vorgesehen; Details siehe ASSETS_NEW.md, ai/AI-SERVICES.md und den Admin-Kontext unter admin/system-settings/AI-SERVICES.md.
Die ausführliche Bewertungs- und Integrationsdoku dazu liegt in ASSETS_NEW.md.
Audit-Notiz zur Runtime-Integration
- Die produktive PHP-Dependency-Ladung erfolgt überwiegend über
CMS/assets/autoload.php. - Die dokumentierte Ausnahme bleibt
CMS/vendor/dompdf/autoload.php. - Die produktiv eingebundenen Symfony-Bundles
mailer,mimeundtranslationdeklarierenPHP >= 8.4; diese Mindestplattform ist deshalb Teil des offiziellen Runtime-Vertrags. - Besonders update-sensibel bleiben Editor- und UI-Bundles mit Build-Artefakten (
editorjs,suneditor,tabler,photoswipe,gridjs). - Für künftige Pflege wäre eine kleine zentrale Asset-/Versionierungs-Registry sinnvoll, damit Pfadlogik, Existenzprüfung und Cache-Busting nicht über viele Dateien verstreut bleiben.