Δομή Έργου

Βασικοί Κατάλογοι

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

Πηγαίος Κώδικας (src/)

CoreBundle

Το μεγαλύτερο bundle. Σημαντικοί υποκατάλογοι:

Κατάλογος
Περιεχόμενα

Entity/

Doctrine entities (User, Course, Session, ResourceNode, etc.)

Controller/

Admin, API action, and page controllers (the Api/ subfolder holds custom API Platform actions)

Settings/

Settings schema files (platform configuration)

Repository/

Doctrine repositories

AiProvider/

AI provider implementations (OpenAI, Gemini, Mistral, DeepSeek, Grok)

Tool/

Course tool definitions

Security/

Voters, authenticators, authorization

EventListener/

Event listeners

EventSubscriber/

Event subscribers

Command/

Symfony console commands

Migrations/

Database migrations

Twig/

Twig extensions

Storage/

Flysystem storage adapters

CourseBundle

Οντότητες και λογική ειδικά για μαθήματα:

Κατάλογος
Περιεχόμενα

Entity/

Course-content entities (CDocument, CQuiz, CLp, CForum, CStudentPublication, etc.)

Controller/

Course controllers

Settings/

Course-level settings schemas

Component/CourseCopy/

Course import/export (Common Cartridge, Moodle)

LtiBundle

Ενσωμάτωση LTI 1.3:

Κατάλογος
Περιεχόμενα

Entity/

LTI platform, tool, and deployment entities

Controller/

LTI launch and configuration endpoints


Frontend (assets/vue/)


Ρύθμιση (config/)

Το Symfony συγχωνεύει αυτόματα τα βασικά αρχεία packages/*.yaml με αυτά στον αντίστοιχο υποφάκελο περιβάλλοντος (dev/, prod/, ή test/), έτσι τα αρχεία ειδικά για το περιβάλλον χρειάζεται να αντικαθιστούν μόνο τις τιμές που διαφέρουν.

Ρύθμιση κατασκευής

Αρχείο
Σκοπός

webpack.config.js

Ρύθμιση Webpack Encore (εισαγωγές, loaders, plugins)

tailwind.config.js

Ρύθμιση Tailwind CSS (μονοπάτια περιεχομένου, επεκτάσεις θέματος, plugins)

tsconfig.json

Ρύθμιση TypeScript

eslint.config.mjs

Κανόνες ESLint (flat config)

.prettierrc.json

Κανόνες μορφοποίησης Prettier

Όλα τα αρχεία βρίσκονται στη ρίζα του έργου. Τα plugins PostCSS (Tailwind + Autoprefixer) ρυθμίζονται εν σειρά μέσα στο webpack.config.js μέσω enablePostCssLoader() — δεν υπάρχει αυτόνομο postcss.config.js. Το webpack.config.js διαβάζει το tailwind.config.js έμμεσα μέσω PostCSS, έτσι οι αλλαγές στις ενότητες content ή theme του Tailwind ισχύουν στην επόμενη εκτέλεση yarn encore dev / yarn encore production.

Σημεία εισόδου Webpack

Η κατασκευή παράγει τα εξής bundles:

JavaScript:

  • vue — Κύρια εφαρμογή Vue 3 (assets/vue/main.js)

  • vue_installer — Οδηγός εγκατάστασης (assets/vue/main_installer.js)

  • legacy_app, legacy_exercise, legacy_lp, legacy_document — Legacy JS για σελίδες που δεν έχουν ακόμη μετεγκατασταθεί σε Vue

CSS:

  • app — Κύριο stylesheet (assets/css/app.scss)

  • Συν εξειδικευμένα sheets: chat, document, editor, editor_content, markdown, print, responsive, scorm

Δομή CSS (assets/css/)


Tailwind CSS

Το Tailwind ενσωματώνεται μέσω PostCSS. Το assets/css/_tailwind.scss παράγει τα στρώματα base, component και utility· το assets/css/app.scss το εισάγει πρώτο ώστε οι λειτουργίες Tailwind να είναι διαθέσιμες σε όλα τα άλλα partials. Η διαμόρφωση Tailwind — μονοπάτια περιεχομένου για καθαρισμό, επεκτάσεις θέματος και plugins — βρίσκεται στο tailwind.config.js στη ρίζα του έργου (/var/www/chamilo/tailwind.config.js).

Οι προσαρμοσμένες κλάσεις utility και οι κλάσεις component που ορίζονται με @layer (ορατές στο app.scss) ακολουθούν τη σύμβαση στρωματοποίησης του Tailwind ώστε οι κλάσεις που ορίζει ο χρήστης να σέβονται τους ίδιους κανόνες ειδικότητας με τις γενόμενες λειτουργίες.

Χρωματικά Θέματα

Το Chamilo υποστηρίζει σύστημα χρωματικής θεματοποίησης που μπορεί να διαμορφωθεί απευθείας από τη διεπαφή διαχειριστή (Admin > Color Themes). Κάθε αποθηκευμένο θέμα γράφει τα αρχεία του σε ειδικό κατάλογο κάτω από το var/themes/:

Το colors.css ορίζει CSS custom properties ως τριάδες καναλιών RGB χωρισμένες με κενά αντί για τιμές rgb(), κάτι που επιτρέπει στο Tailwind να συνθέτει παραλλαγές αδιαφανούς (π.χ. bg-primary/50) χωρίς επιπλέον διαμόρφωση:

Το στρώμα θέματος βρίσκεται πάνω από το μεταγλωττισμένο πακέτο Tailwind/SCSS: ο περιηγητής φορτώνει το colors.css μετά το κύριο stylesheet, οπότε οι αλλαγές θέματος εφαρμόζονται άμεσα χωρίς βήμα κατασκευής.

Τελευταία ενημέρωση

Ήταν χρήσιμο αυτό;