Projektin rakenne
Ylimmän tason hakemistot
chamilo/
├── assets/ # Frontend source code
│ ├── vue/ # Vue 3 application (components, views, router, stores)
│ ├── css/ # SCSS stylesheets
│ └── js/ # Legacy JavaScript
├── config/ # Symfony configuration (routes, services, packages)
├── public/ # Web root (index.php, legacy PHP pages, plugins)
│ ├── main/ # Legacy PHP modules (one subdirectory per tool)
│ └── plugin/ # Bundled and custom plugins
├── src/ # PHP source code (Symfony bundles)
│ ├── CoreBundle/ # Core platform logic
│ ├── CourseBundle/# Course-specific features
│ └── LtiBundle/ # LTI 1.3 integration
├── templates/ # Twig templates
├── var/ # Cache, logs, uploads (generated)
├── vendor/ # Composer dependencies (generated)
├── node_modules/ # npm dependencies (generated)
└── translations/ # Translation filesLähdekoodi (src/)
CoreBundle
Suurin bundle. Huomionarvoisia alihakemistoja:
Entity/
Doctrine-entiteetit (User, Course, Session, ResourceNode jne.)
Controller/
Ylläpito-, API-toiminto- ja sivukontrollerit (Api/-alihakemisto sisältää mukautetut API Platform -toiminnot)
Settings/
Asetusskeematiedostot (alustan konfiguraatio)
Repository/
Doctrine-repositoriot
AiProvider/
Tekoälytarjoajien toteutukset (OpenAI, Gemini, Mistral, DeepSeek, Grok)
Tool/
Kurssityökalujen määritelmät
Security/
Voterit, autentikoijat, valtuutus
EventListener/
Tapahtumakuuntelijat
EventSubscriber/
Tapahtumatilaajat
Command/
Symfony-konsolikomennot
Migrations/
Tietokantamigraatiot
Twig/
Twig-laajennukset
Storage/
Flysystem-tallennussovittimet
CourseBundle
Kurssikohtaiset entiteetit ja logiikka:
Entity/
Kurssisisällön entiteetit (CDocument, CQuiz, CLp, CForum, CStudentPublication jne.)
Controller/
Kurssikontrollerit
Settings/
Kurssitason asetusskeemat
Component/CourseCopy/
Kurssin tuonti/vienti (Common Cartridge, Moodle)
LtiBundle
LTI 1.3 -integraatio:
Entity/
LTI-alustan, työkalun ja käyttöönoton entiteetit
Controller/
LTI-käynnistyksen ja konfiguraation päätepisteet
Frontend (assets/vue/)
Konfiguraatio (config/)
Symfony yhdistää automaattisesti perus-packages/*.yaml-tiedostot vastaavan ympäristöalhakemiston (dev/, prod/ tai test/) tiedostoihin, joten ympäristökohtaisissa tiedostoissa tarvitsee ylikirjoittaa vain poikkeavat arvot.
Testit (tests/)
tests/ ei sisälly pakattuihin Chamilo-latauksiin (julkaisu-ZIP-/tarball-tiedostoihin) — se poistetaan, koska sillä ei ole käyttötarkoitusta ajonaikana ja osa sen skripteistä voisi aiheuttaa riskin, jos ne jätettäisiin tuotantopalvelimelle. Se on mukana vain, kun projekti on hankittu komennolla git clone.
CoreBundle/
PHPUnit-testit, jotka peilaavat src/CoreBundle/-rakennetta: Api/, ApiResource/, Command/, Controller/, DataFixtures/, Entity/, Event/, EventListener/, Filter/, fixtures/, Helpers/, Mcp/, Migrations/, Repository/, Security/, Serializer/, Service/, Settings/, State/, Tool/, Traits/, Twig/
CourseBundle/
PHPUnit-testit, jotka peilaavat src/CourseBundle/-rakennetta: Api/, Component/CourseCopy/, Repository/, Settings/
datafiller/
Skriptit, jotka täyttävät testi-asennuksen demosisällöllä: data_courses.php, data_users.php, fill_courses.php, fill_users.php, fill_many_users.php, fill_whoisonline.php, generate_users.php, fill_all.php (ajaa muut), sekä images/ ja suuri CSV-käyttäjätuontiesimerkki
history/
Tilannekuvat, jotka dokumentoivat Chamilon rakenteen aiemmissa julkaisuissa (1.8.8.2, 1.9.0, 1.10.0, 1.11.0, 2.0)
phpstan/
doctrine-orm-bootstrap.php, jonka PHPStan lataa analysoidessaan Doctrine ORM -koodia
playwright/
Selainpohjaiset päästä päähän -testit: features/*.feature (Gherkin-skenaariot, jotka ajetaan playwright-bdd:llä), steps/common.steps.ts (TypeScript-askelmäärittelyt), fixtures/ (testitiedostot, esim. taulukot), scripts/check-results.mjs, playwright.config.ts ja generoitu .features-gen/-tuloste. Korvaa vanhan Behat-paketin, jonka skenaariot säilyvät git-historiassa viitteeksi
procedures/
Taulukot (tällä hetkellä spanish/), joita käytetään tarkistuslistapohjana ominaisuuksien manuaalisessa laadunvarmistuksessa
scripts/
Kertaluonteiset ylläpito-/korjaus-/migraatioskriptit olemassa oleville Chamilo-portaaleille (pääosin vanhempia versioita varten) sekä git-hooks/-, img/-, lang/- ja packaging/-alihakemistot
Katso Testaus testitietokannan käyttöönotosta sekä PHPUnit- ja Playwright-pakettien ajamisesta.
Koontikonfiguraatio
webpack.config.js
Webpack Encore -konfiguraatio (entryt, loaderit, pluginat)
tailwind.config.js
Tailwind CSS -konfiguraatio (sisältöpolut, teeman laajennukset, pluginat)
tsconfig.json
TypeScript-konfiguraatio
eslint.config.mjs
ESLint-säännöt (flat config)
.prettierrc.json
Prettier-muotoilusäännöt
Kaikki tiedostot sijaitsevat projektin juuressa. PostCSS-pluginat (Tailwind + Autoprefixer) on konfiguroitu sisäisesti tiedostossa webpack.config.js metodilla enablePostCssLoader() — erillistä postcss.config.js-tiedostoa ei ole. webpack.config.js lukee tailwind.config.js-tiedoston epäsuorasti PostCSS:n kautta, joten muutokset Tailwindin content- tai theme-osioihin tulevat voimaan seuraavalla yarn encore dev / yarn encore production -ajolla.
Webpack-entryt
Koonti tuottaa nämä paketit:
JavaScript:
vue— Pääasiallinen Vue 3 -sovellus (assets/vue/main.js)vue_installer— Asennusvelho (assets/vue/main_installer.js)legacy_app,legacy_exercise,legacy_lp,legacy_document— Legacy-JS sivuille, joita ei ole vielä siirretty Vueen
CSS:
app— Päätyylitiedosto (assets/css/app.scss)Lisäksi erikoistuneet tyylit:
chat,document,editor,editor_content,markdown,print,responsive,scorm
CSS-rakenne (assets/css/)
Tailwind CSS
Tailwind on integroitu PostCSS:n kautta. assets/css/_tailwind.scss tuottaa base-, component- ja utility-kerrokset; assets/css/app.scss tuo sen ensin, jotta Tailwind-utilitit ovat käytettävissä kaikissa muissa osatiedostoissa. Tailwind-konfiguraatio — sisältöpolut purkausta varten, teeman laajennukset ja liitännäiset — sijaitsee tiedostossa tailwind.config.js projektin juuressa (/var/www/chamilo/tailwind.config.js).
Mukautetut utility-luokat ja komponenttiluokat, jotka on määritelty @layer-direktiivillä (näkyvät tiedostossa app.scss), noudattavat Tailwindin kerrosjärjestystä, jotta käyttäjän määrittelemät luokat noudattavat samoja spesifisyyssääntöjä kuin generoidut utilitit.
Väriteemat
Chamilo tukee väriteemajärjestelmää, joka voidaan määrittää suoraan ylläpitokäyttöliittymästä (Ylläpito > Väriteemat). Jokainen tallennettu teema kirjoittaa tiedostonsa omaan hakemistoonsa polun var/themes/ alle:
colors.css määrittelee CSS-muuttujat välilyönnein erotettuina RGB-kanavakolmikkoina eikä rgb()-arvoina, jolloin Tailwind voi muodostaa peittävyysvariantteja (esim. bg-primary/50) ilman lisäkonfiguraatiota:
Teemakerros asettuu käännetyn Tailwind/SCSS-paketin päälle: selain lataa colors.css-tiedoston päätyylitiedoston jälkeen, joten teeman muutokset tulevat voimaan heti ilman käännösvaihetta.
Päivitetty viimeksi
Oliko tästä apua?