Project Structure
المجلدات الرئيسية العليا
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
أكبر حزمة. مجلدات فرعية بارزة:
Entity/
كيانات Doctrine (User, Course, Session, ResourceNode, إلخ.)
Controller/
وحدات التحكم الإدارية، وحدات التحكم في إجراءات API، ووحدات التحكم في الصفحات (مجلد Api/ يحتوي على إجراءات منصة API المخصصة)
Settings/
ملفات مخطط الإعدادات (تكوين المنصة)
Repository/
مستودعات Doctrine
AiProvider/
تنفيذات مزودي الذكاء الاصطناعي (OpenAI، Gemini، Mistral، DeepSeek، Grok)
Tool/
تعريفات أدوات الدورة
Security/
ناخبون، مصادقون، تفويض
EventListener/
مستمعو الأحداث
EventSubscriber/
مشتركو الأحداث
Command/
أوامر وحدة التحكم Symfony
Migrations/
عمليات نقل قاعدة البيانات
Twig/
امتدادات Twig
Storage/
محولات تخزين Flysystem
CourseBundle
كيانات منطق الدورة الخاصة بالدورة:
Entity/
كيانات محتوى الدورة (CDocument، CQuiz، CLp، CForum، CStudentPublication، إلخ.)
Controller/
وحدات التحكم في الدورة
Settings/
مخططات إعدادات مستوى الدورة
Component/CourseCopy/
استيراد/تصدير الدورة (Common Cartridge، Moodle)
LtiBundle
تكامل LTI 1.3:
Entity/
كيانات منصة LTI، وأداة، ونشر
Controller/
نقاط نهاية إطلاق LTI وتكوين
الواجهة الأمامية (assets/vue/)
الإعدادات (config/)
يدمج Symfony تلقائيًا ملفات packages/*.yaml الأساسية مع تلك الموجودة في مجلد البيئة المتطابق (dev/، أو prod/، أو test/)، لذا لا تحتاج ملفات محددة للبيئة إلا إلى تجاوز القيم التي تختلف.
إعدادات البناء
webpack.config.js
إعدادات Webpack Encore (المدخلات، المحملات، الإضافات)
tailwind.config.js
إعدادات Tailwind CSS (مسارات المحتوى، امتدادات الثيم، الإضافات)
tsconfig.json
إعدادات TypeScript
eslint.config.mjs
قواعد ESLint (تكوين مسطح)
.prettierrc.json
قواعد تنسيق Prettier
توجد جميع الملفات في جذر المشروع. تُعد إضافات 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
يُنتج البناء هذه الحزم:
JavaScript:
vue— التطبيق الرئيسي لـ Vue 3 (assets/vue/main.js)vue_installer— معالج التثبيت (assets/vue/main_installer.js)legacy_app،legacy_exercise،legacy_lp،legacy_document— JavaScript القديم للصفحات التي لم تُهاجر إلى Vue بعد
CSS:
app— ورقة الأنماط الرئيسية (assets/css/app.scss)بالإضافة إلى أوراق متخصصة:
chat،document،editor،editor_content،markdown،print،responsive،scorm
هيكل CSS (assets/css/)
Tailwind CSS
يتم دمج Tailwind عبر PostCSS. assets/css/_tailwind.scss يصدر الطبقات الأساسية والمكونات والأدوات؛ assets/css/app.scss يستورده أولاً حتى تكون أدوات Tailwind متاحة في جميع الجزئيات الأخرى. تكوين Tailwind — مسارات المحتوى للتنقية، وامتدادات الثيم، والإضافات — موجود في tailwind.config.js في جذر المشروع (/var/www/chamilo/tailwind.config.js).
الفئات الأدوات المخصصة وفئات المكونات المعرفة باستخدام @layer (المرئية في app.scss) تتبع اتفاقية الطبقات في Tailwind بحيث تحترم الفئات المعرفة من قبل المستخدم نفس قواعد الخصوصية مثل الأدوات المولدة.
Color Themes
يدعم Chamilo نظامًا لثيمات الألوان يمكن تهيئته مباشرة من واجهة الإدارة (Admin > Color Themes). كل ثيم محفوظ يكتب ملفاته في دليل مخصص تحت var/themes/:
colors.css يعرف خصائص CSS المخصصة كثلاثيات قنوات RGB مفصولة بمسافات بدلاً من قيم rgb()، مما يسمح لـ Tailwind بتكوين متغيرات الشفافية (مثل bg-primary/50) دون تكوين إضافي:
تضع طبقة الثيم فوق حزمة Tailwind/SCSS المجمعة: يقوم المتصفح بتحميل colors.css بعد ورقة الأنماط الرئيسية، لذا تطبق تغييرات الثيم فورًا دون خطوة بناء.
آخر تحديث
هل كان هذا مفيدا؟