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

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 files

Lähdekoodi (src/)

CoreBundle

Suurin bundle. Huomionarvoisia alihakemistoja:

Hakemisto
Sisältö

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:

Hakemisto
Sisältö

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:

Hakemisto
Sisältö

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.

Hakemisto
Sisältö

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

Tiedosto
Tarkoitus

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?