Projectstructuur
Hoofdmapstructuur
chamilo/
├── assets/ # Frontend broncode
│ ├── vue/ # Vue 3 applicatie (componenten, weergaven, router, stores)
│ ├── css/ # SCSS stylesheets
│ └── js/ # Verouderde JavaScript
├── config/ # Symfony configuratie (routes, services, packages)
├── public/ # Webroot (index.php, verouderde PHP-pagina's, plugins)
│ ├── main/ # Verouderde PHP-modules (één submap per tool)
│ └── plugin/ # Gebundelde en aangepaste plugins
├── src/ # PHP broncode (Symfony bundles)
│ ├── CoreBundle/ # Kernplatformlogica
│ ├── CourseBundle/# Cursusspecifieke functies
│ └── LtiBundle/ # LTI 1.3 integratie
├── templates/ # Twig sjablonen
├── var/ # Cache, logs, uploads (gegenereerd)
├── vendor/ # Composer afhankelijkheden (gegenereerd)
├── node_modules/ # npm afhankelijkheden (gegenereerd)
└── translations/ # VertalingsbestandenBroncode (src/)
CoreBundle
De grootste bundle. Opmerkelijke submappen:
Entity/
Doctrine entiteiten (User, Course, Session, ResourceNode, enz.)
Controller/
Beheer-, API-actie- en paginacontrollers (de Api/ submap bevat aangepaste API Platform acties)
Settings/
Instellingenschemabestanden (platformconfiguratie)
Repository/
Doctrine repositories
AiProvider/
AI-provider implementaties (OpenAI, Gemini, Mistral, DeepSeek, Grok)
Tool/
Cursustooldefinities
Security/
Stemmers, authenticators, autorisatie
EventListener/
Gebeurtenisluisteraars
EventSubscriber/
Gebeurtenisabonnees
Command/
Symfony console commando's
Migrations/
Database migraties
Twig/
Twig extensies
Storage/
Flysystem opslagadapters
CourseBundle
Cursusspecifieke entiteiten en logica:
Entity/
Cursusinhoud entiteiten (CDocument, CQuiz, CLp, CForum, CStudentPublication, enz.)
Controller/
Cursuscontrollers
Settings/
Instellingenschema's op cursusniveau
Component/CourseCopy/
Cursus import/export (Common Cartridge, Moodle)
LtiBundle
LTI 1.3 integratie:
Entity/
LTI platform-, tool- en implementatie-entiteiten
Controller/
LTI start- en configuratie-eindpunten
Frontend (assets/vue/)
Configuratie (config/)
Symfony voegt automatisch de basis packages/*.yaml-bestanden samen met die in de bijbehorende omgevingssubmap (dev/, prod/, of test/), zodat omgevingsspecifieke bestanden alleen de waarden hoeven te overschrijven die verschillen.
Buildconfiguratie
webpack.config.js
Webpack Encore configuratie (ingangen, loaders, plugins)
tailwind.config.js
Tailwind CSS configuratie (inhoudspaden, thema-uitbreidingen, plugins)
tsconfig.json
TypeScript configuratie
eslint.config.mjs
ESLint regels (platte configuratie)
.prettierrc.json
Prettier opmaakregels
Alle bestanden bevinden zich in de projecthoofdmap. PostCSS-plugins (Tailwind + Autoprefixer) worden inline geconfigureerd binnen webpack.config.js via enablePostCssLoader() — er is geen standalone postcss.config.js. webpack.config.js leest tailwind.config.js indirect via PostCSS, dus wijzigingen in de content- of theme-secties van Tailwind worden van kracht bij de volgende uitvoering van yarn encore dev / yarn encore production.
Webpack Ingangspunten
De build produceert deze bundels:
JavaScript:
vue— Hoofd Vue 3 applicatie (assets/vue/main.js)vue_installer— Installatiewizard (assets/vue/main_installer.js)legacy_app,legacy_exercise,legacy_lp,legacy_document— Oude JS voor pagina's die nog niet zijn gemigreerd naar Vue
CSS:
app— Hoofdstylesheet (assets/css/app.scss)Plus gespecialiseerde stylesheets:
chat,document,editor,editor_content,markdown,print,responsive,scorm
CSS Structuur (assets/css/)
Tailwind CSS
Tailwind is geïntegreerd via PostCSS. assets/css/_tailwind.scss genereert de basis-, component- en utility-lagen; assets/css/app.scss importeert deze als eerste, zodat Tailwind-utilities beschikbaar zijn in alle andere deelbestanden. De Tailwind-configuratie — inhoudspaden voor het opschonen, thema-uitbreidingen en plugins — bevindt zich in tailwind.config.js in de hoofdmap van het project (/var/www/chamilo/tailwind.config.js).
Aangepaste utility-klassen en componentklassen die zijn gedefinieerd met @layer (zichtbaar in app.scss) volgen de laagconventie van Tailwind, zodat door de gebruiker gedefinieerde klassen dezelfde specificiteitsregels respecteren als de gegenereerde utilities.
Kleurenthema's
Chamilo ondersteunt een kleurenthemasysteem dat direct vanuit de beheerdersinterface kan worden geconfigureerd (Beheer > Kleurenthema's). Elk opgeslagen thema schrijft zijn bestanden naar een specifieke map onder var/themes/:
colors.css definieert CSS aangepaste eigenschappen als ruimtegescheiden RGB-kanaal-tripletten in plaats van rgb()-waarden, wat Tailwind in staat stelt om opacity-varianten (bijv. bg-primary/50) samen te stellen zonder extra configuratie:
De themalaag bevindt zich bovenop de gecompileerde Tailwind/SCSS-bundel: de browser laadt colors.css na het hoofdstylesheet, waardoor thema-aanpassingen direct van kracht worden zonder een buildstap.
Laatst bijgewerkt
Was dit nuttig?