For the complete documentation index, see llms.txt. This page is also available as Markdown.

Projektstruktur

Verzeichnisse auf oberster Ebene

chamilo/
├── assets/          # Frontend-Quellcode
│   ├── vue/         # Vue 3 Anwendung (Komponenten, Ansichten, Router, Stores)
│   ├── css/         # SCSS-Stylesheets
│   └── js/          # Legacy JavaScript
├── config/          # Symfony-Konfiguration (Routen, Dienste, Pakete)
├── public/          # Web-Root (index.php, Legacy PHP-Seiten, Plugins)
│   ├── main/        # Legacy PHP-Module (ein Unterverzeichnis pro Tool)
│   └── plugin/      # Gebündelte und benutzerdefinierte Plugins
├── src/             # PHP-Quellcode (Symfony-Bundles)
│   ├── CoreBundle/  # Kernplattformlogik
│   ├── CourseBundle/# Kursspezifische Funktionen
│   └── LtiBundle/   # LTI 1.3 Integration
├── templates/       # Twig-Vorlagen
├── var/             # Cache, Logs, Uploads (generiert)
├── vendor/          # Composer-Abhängigkeiten (generiert)
├── node_modules/    # npm-Abhängigkeiten (generiert)
└── translations/    # Übersetzungsdateien

Quellcode (src/)

CoreBundle

Das größte Bundle. Wichtige Unterverzeichnisse:

Verzeichnis
Inhalt

Entity/

Doctrine-Entitäten (User, Course, Session, ResourceNode, etc.)

Controller/

Admin-, API-Aktions- und Seiten-Controller (der Unterordner Api/ enthält benutzerdefinierte API Platform-Aktionen)

Settings/

Einstellungsschemadateien (Plattformkonfiguration)

Repository/

Doctrine-Repositories

AiProvider/

KI-Anbieter-Implementierungen (OpenAI, Gemini, Mistral, DeepSeek, Grok)

Tool/

Kurs-Tool-Definitionen

Security/

Voters, Authentifikatoren, Autorisierung

EventListener/

Ereignis-Listener

EventSubscriber/

Ereignis-Abonnenten

Command/

Symfony-Konsolenbefehle

Migrations/

Datenbankmigrationen

Twig/

Twig-Erweiterungen

Storage/

Flysystem-Speicheradapter

CourseBundle

Kursspezifische Entitäten und Logik:

Verzeichnis
Inhalt

Entity/

Kursinhalts-Entitäten (CDocument, CQuiz, CLp, CForum, CStudentPublication, etc.)

Controller/

Kurs-Controller

Settings/

Einstellungsschemata auf Kursebene

Component/CourseCopy/

Kurs-Import/Export (Common Cartridge, Moodle)

LtiBundle

LTI 1.3 Integration:

Verzeichnis
Inhalt

Entity/

LTI-Plattform-, Tool- und Bereitstellungs-Entitäten

Controller/

LTI-Start- und Konfigurations-Endpunkte


Frontend (assets/vue/)


Konfiguration (config/)

Symfony fügt automatisch die Basisdateien packages/*.yaml mit denen im entsprechenden Umgebungsunterverzeichnis (dev/, prod/ oder test/) zusammen, sodass umgebungsspezifische Dateien nur die Werte überschreiben müssen, die sich unterscheiden.

Build-Konfiguration

Datei
Zweck

webpack.config.js

Webpack Encore-Konfiguration (Einstiegspunkte, Loader, Plugins)

tailwind.config.js

Tailwind CSS-Konfiguration (Inhaltspfade, Theme-Erweiterungen, Plugins)

tsconfig.json

TypeScript-Konfiguration

eslint.config.mjs

ESLint-Regeln (flache Konfiguration)

.prettierrc.json

Prettier-Formatierungsregeln

Alle Dateien befinden sich im Projektstammverzeichnis. PostCSS-Plugins (Tailwind + Autoprefixer) werden inline in webpack.config.js über enablePostCssLoader() konfiguriert — es gibt keine eigenständige postcss.config.js. webpack.config.js liest tailwind.config.js indirekt über PostCSS, sodass Änderungen an den Abschnitten content oder theme von Tailwind bei der nächsten Ausführung von yarn encore dev / yarn encore production wirksam werden.

Webpack-Einstiegspunkte

Der Build erzeugt folgende Bundles:

JavaScript:

  • vue — Haupt-Vue-3-Anwendung (assets/vue/main.js)

  • vue_installer — Installationsassistent (assets/vue/main_installer.js)

  • legacy_app, legacy_exercise, legacy_lp, legacy_document — Ältere JS für Seiten, die noch nicht zu Vue migriert wurden

CSS:

  • app — Haupt-Stylesheet (assets/css/app.scss)

  • Plus spezialisierte Stylesheets: chat, document, editor, editor_content, markdown, print, responsive, scorm

CSS-Struktur (assets/css/)


Tailwind CSS

Tailwind ist über PostCSS integriert. assets/css/_tailwind.scss gibt die Basis-, Komponenten- und Utility-Ebenen aus; assets/css/app.scss importiert es zuerst, sodass Tailwind-Utilities in allen anderen Teil-Dateien verfügbar sind. Die Tailwind-Konfiguration – Inhaltspfade für das Bereinigen, Theme-Erweiterungen und Plugins – befindet sich in tailwind.config.js im Projektstammverzeichnis (/var/www/chamilo/tailwind.config.js).

Benutzerdefinierte Utility-Klassen und Komponentenklassen, die mit @layer definiert sind (sichtbar in app.scss), folgen der Layering-Konvention von Tailwind, sodass benutzerdefinierte Klassen die gleichen Spezifitätsregeln wie die generierten Utilities einhalten.

Farbthemen

Chamilo unterstützt ein Farbthemen-System, das direkt über die Admin-Oberfläche konfiguriert werden kann (Admin > Farbthemen). Jedes gespeicherte Thema schreibt seine Dateien in ein dediziertes Verzeichnis unter var/themes/:

colors.css definiert CSS benutzerdefinierte Eigenschaften als durch Leerzeichen getrennte RGB-Kanal-Tripletts anstelle von rgb()-Werten, was es Tailwind ermöglicht, Opazitätsvarianten (z. B. bg-primary/50) ohne zusätzliche Konfiguration zu erstellen:

Die Theme-Ebene liegt über dem kompilierten Tailwind/SCSS-Bundle: Der Browser lädt colors.css nach dem Haupt-Stylesheet, sodass Theme-Änderungen sofort wirksam werden, ohne dass ein Build-Schritt erforderlich ist.

Zuletzt aktualisiert

War das hilfreich?