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 terjemahanKode Sumber (src/)
CoreBundle
Bundle terbesar. Subdirektori yang penting:
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:
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:
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
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?