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/    # Vertalingsbestanden

Broncode (src/)

CoreBundle

De grootste bundle. Opmerkelijke submappen:

Map
Inhoud

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:

Map
Inhoud

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:

Map
Inhoud

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

Bestand
Doel

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?