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 بعد ورقة الأنماط الرئيسية، لذا تطبق تغييرات الثيم فورًا دون خطوة بناء.

آخر تحديث

هل كان هذا مفيدا؟