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

Struktur Proyek

Direktori Tingkat Atas

chamilo/
├── assets/          # Kode sumber frontend
│   ├── vue/         # Aplikasi Vue 3 (komponen, tampilan, router, store)
│   ├── css/         # Lembar gaya SCSS
│   └── js/          # JavaScript lama
├── config/          # Konfigurasi Symfony (rute, layanan, paket)
├── public/          # Akar web (index.php, halaman PHP lama, plugin)
│   ├── main/        # Modul PHP lama (satu subdirektori per alat)
│   └── plugin/      # Plugin bawaan dan kustom
├── src/             # Kode sumber PHP (bundle Symfony)
│   ├── CoreBundle/  # Logika inti platform
│   ├── CourseBundle/# Fitur khusus kursus
│   └── LtiBundle/   # Integrasi LTI 1.3
├── templates/       # Templat Twig
├── var/             # Cache, log, unggahan (dibuat otomatis)
├── vendor/          # Dependensi Composer (dibuat otomatis)
├── node_modules/    # Dependensi npm (dibuat otomatis)
└── translations/    # Berkas terjemahan

Kode Sumber (src/)

CoreBundle

Bundle terbesar. Subdirektori yang penting:

Direktori
Isi

Entity/

Entitas Doctrine (User, Course, Session, ResourceNode, dll.)

Controller/

Pengontrol administrasi, aksi API, dan halaman (subfolder Api/ berisi aksi kustom API Platform)

Settings/

Berkas skema pengaturan (konfigurasi platform)

Repository/

Repositori Doctrine

AiProvider/

Implementasi penyedia AI (OpenAI, Gemini, Mistral, DeepSeek, Grok)

Tool/

Definisi alat kursus

Security/

Voters, autentikator, otorisasi

EventListener/

Pendengar acara

EventSubscriber/

Pelanggan acara

Command/

Perintah konsol Symfony

Migrations/

Migrasi basis data

Twig/

Ekstensi Twig

Storage/

Adaptor penyimpanan Flysystem

CourseBundle

Entitas dan logika khusus kursus:

Direktori
Isi

Entity/

Entitas konten kursus (CDocument, CQuiz, CLp, CForum, CStudentPublication, dll.)

Controller/

Pengontrol kursus

Settings/

Skema pengaturan di tingkat kursus

Component/CourseCopy/

Impor/ekspor kursus (Common Cartridge, Moodle)

LtiBundle

Integrasi LTI 1.3:

Direktori
Isi

Entity/

Entitas platform, alat, dan penyebaran LTI

Controller/

Titik akhir peluncuran dan konfigurasi LTI


Frontend (assets/vue/)


Konfigurasi (config/)

Symfony secara otomatis menggabungkan file dasar packages/*.yaml dengan file di subdirektori lingkungan yang sesuai (dev/, prod/, atau test/), sehingga file khusus lingkungan hanya perlu mengganti nilai yang berbeda.

Konfigurasi Build

File
Tujuan

webpack.config.js

Konfigurasi Webpack Encore (entri, loader, plugin)

tailwind.config.js

Konfigurasi Tailwind CSS (jalur konten, ekstensi tema, plugin)

tsconfig.json

Konfigurasi TypeScript

eslint.config.mjs

Aturan ESLint (konfigurasi datar)

.prettierrc.json

Aturan pemformatan Prettier

Semua file berada di root proyek. Plugin PostCSS (Tailwind + Autoprefixer) dikonfigurasi secara inline di dalam webpack.config.js melalui enablePostCssLoader() — tidak ada file terpisah postcss.config.js. File webpack.config.js membaca tailwind.config.js secara tidak langsung melalui PostCSS, sehingga perubahan pada bagian content atau theme di Tailwind akan berlaku pada eksekusi berikutnya dari yarn encore dev / yarn encore production.

Titik Masuk Webpack

Build menghasilkan paket-paket berikut:

JavaScript:

  • vue — Aplikasi utama Vue 3 (assets/vue/main.js)

  • vue_installer — Panduan instalasi (assets/vue/main_installer.js)

  • legacy_app, legacy_exercise, legacy_lp, legacy_document — JS lama untuk halaman yang belum bermigrasi ke Vue

CSS:

  • app — Lembar gaya utama (assets/css/app.scss)

  • Selain itu, lembar gaya khusus: chat, document, editor, editor_content, markdown, print, responsive, scorm


Struktur CSS (assets/css/)


Tailwind CSS

Tailwind terintegrasi melalui PostCSS. File assets/css/_tailwind.scss menghasilkan lapisan dasar, komponen, dan utilitas; file assets/css/app.scss mengimpornya terlebih dahulu, sehingga utilitas Tailwind tersedia di semua file parsial lainnya. Konfigurasi Tailwind — jalur konten untuk pembersihan, ekstensi tema, dan plugin — terletak di tailwind.config.js di akar proyek (/var/www/chamilo/tailwind.config.js).

Kelas utilitas kustom dan kelas komponen yang didefinisikan dengan @layer (terlihat di app.scss) mengikuti konvensi lapisan Tailwind, sehingga kelas yang ditentukan pengguna menghormati aturan spesifisitas yang sama seperti utilitas yang dihasilkan.

Tema Warna

Chamilo mendukung sistem tema warna yang dapat dikonfigurasi langsung melalui antarmuka administrasi (Admin > Tema Warna). Setiap tema yang disimpan akan menyimpan file-nya di direktori khusus di bawah var/themes/:

File colors.css mendefinisikan properti CSS kustom sebagai triplet kanal RGB yang dipisahkan oleh spasi, bukan nilai rgb(), yang memungkinkan Tailwind untuk menyusun varian opasitas (misalnya, bg-primary/50) tanpa konfigurasi tambahan:

Lapisan tema berada di atas paket Tailwind/SCSS yang dikompilasi: peramban memuat colors.css setelah lembar gaya utama, sehingga perubahan tema berlaku segera tanpa perlu langkah kompilasi.

Terakhir diperbarui

Apakah ini membantu?