# Views and Routing

يحتوي Chamilo على مجموعة كبيرة من عروض Vue (مكونات على مستوى الصفحة) متصلة عبر Vue Router. تقع الملفات الفعلية تحت `assets/vue/views/`.

## هندسة التوجيه

يتم تعريف التوجيه في `assets/vue/router/index.js` باستخدام `createWebHistory` للحصول على عناوين URL نظيفة.

الطرق معيارية — منظمة في ملفات طرق لكل ميزة مستوردة إلى التوجيه الرئيسي:

| وحدة الطريق         | الصفحات                                           |
| ------------------- | ------------------------------------------------- |
| `admin`             | صفحات لوحة الإدارة                                |
| `sessionAdmin`      | صفحات إدارة الجلسات                               |
| `course`            | قائمة الدورات، الإنشاء، الصفحة الرئيسية، الكتالوج |
| `account`           | ملف المستخدم والإعدادات                           |
| `personalfile`      | مساحة الملف الشخصي                                |
| `message`           | الرسائل / صندوق الوارد                            |
| `user`              | صفحات إدارة المستخدمين                            |
| `usergroup`         | صفحات مجموعات المستخدمين (الفصول)                 |
| `userreluser`       | صفحات علاقات المستخدمين (الأصدقاء/المتابعة)       |
| `ccalendarevent`    | تقويم الدورة والجدول الزمني                       |
| `ctoolintro`        | صفحات مقدمة أدوات الدورة                          |
| `page`              | صفحات CMS الثابتة                                 |
| `pageLayout`        | غلاف تخطيط الصفحة                                 |
| `publicPage`        | الصفحات القابلة للوصول العام                      |
| `social`            | صفحات الشبكة الاجتماعية                           |
| `filemanager`       | مدير الملفات (متصفح وثائق الدورة)                 |
| `skill`             | صفحات المهارات والكفاءات                          |
| `accessurl`         | صفحات إدارة الـ URL المتعدد (البوابة)             |
| `branch`            | صفحات الفرع / حرم الشبكة                          |
| `room`              | صفحات الغرف الافتراضية                            |
| `buycourses`        | صفحات شراء الدورات                                |
| `documents`         | إدارة الوثائق                                     |
| `assignments`       | سير عمل المهام                                    |
| `links`             | إدارة الروابط الخارجية                            |
| `glossary`          | إدارة المصطلحات                                   |
| `attendance`        | تتبع الحضور                                       |
| `lp`                | مشغل مسار التعلم والمحرر                          |
| `dropbox`           | Dropbox / تبادل الملفات                           |
| `blog`              | صفحات المدونة                                     |
| `blogAdmin`         | إدارة المدونة                                     |
| `coursemaintenance` | نسخ احتياطي واستعادة الدورة                       |
| `catalogue`         | كتالوجات الدورات والجلسات                         |

## الطرق الرئيسية

| المسار               | العرض                                      | الوصف                      |
| -------------------- | ------------------------------------------ | -------------------------- |
| `/`                  | `AppIndex.vue` (أو مخصص)                   | نقطة الدخول للتطبيق        |
| `/home`              | `pages/Home.vue`                           | صفحة رئيسية المنصة         |
| `/login`             | `pages/Login.vue`                          | صفحة تسجيل الدخول          |
| `/courses`           | `views/user/courses/List.vue`              | دورات المستخدم المسجل فيها |
| `/sessions`          | `views/user/sessions/SessionsCurrent.vue`  | الجلسات الحالية            |
| `/sessions/past`     | `views/user/sessions/SessionsPast.vue`     | الجلسات السابقة            |
| `/sessions/upcoming` | `views/user/sessions/SessionsUpcoming.vue` | الجلسات القادمة            |
| `/course/:id/home`   | `views/course/CourseHome.vue`              | صفحة رئيسية الدورة         |
| `/account/home`      | `views/account/Home.vue`                   | ملف المستخدم               |
| `/admin`             | عروض الإدارة                               | لوحة الإدارة               |
| `/faq`               | `pages/Faq.vue`                            | صفحة الأسئلة الشائعة       |

## حراس الطريق

يستخدم التوجيه حراس التنقل (معلنة بـ `beforeEach` و `afterEach`) للقيام بما يلي:

* التحقق من حالة المصادقة عبر `useSecurityStore` وإعادة توجيه المستخدمين غير المصادق عليهم إلى `/login`
* التحقق من سياق الدورة عبر `useCidReqStore`
* تطبيق فئات CSS حسب نوع الصفحة أثناء التنقل في SPA (بدلاً مما يقوم `PageHelper` في Twig به عند تحميل صفحة كاملة)
* دعم تجاوزات قوالب Vue المخصصة — يتم استبدال مكون الدخول في `/` بـ `AppIndex.vue` مخصص عند تمكين قالب Vue مخصص (`var/vue_templates/pages/AppIndex.vue`)

## تنظيم العروض

تقع العروض في `assets/vue/views/`، منظمة حسب الميزة:

```
views/
├── account/          # ملف المستخدم والإعدادات
├── admin/            # صفحات الإدارة
├── assignments/      # تقديم المهام والتقييم
├── attendance/       # جداول الحضور
├── blog/             # منشورات المدونة والتعليقات
├── branch/           # إدارة حرم الشبكة
├── buycourses/       # سير شراء الدورات
├── ccalendarevent/   # تقويم الدورة
├── course/           # قائمة الدورات، الصفحة الرئيسية، الإنشاء، الكتالوج
├── coursecategory/   # إدارة فئات الدورات
├── coursemaintenance/# نسخ احتياطي/استعادة الدورة
├── ctoolintro/       # صفحات مقدمة الأدوات
├── documents/        # قائمة الوثائق، الإنشاء، إنشاء الوسائط
├── dropbox/          # Dropbox / تبادل الملفات
├── filemanager/      # متصفح الملفات
├── glossary/         # قائمة المصطلحات وإدارة المصطلحات
├── links/            # الروابط الخارجية
├── lp/               # مشغل مسار التعلم والمحرر
├── message/          # صندوق الوارد والرسائل
├── page/             # صفحات CMS الثابتة
├── pageLayout/       # غلاف تخطيط الصفحة
├── personalfile/     # مساحة الملف الشخصي
├── room/             # الغرف الافتراضية
├── sessionadmin/     # إدارة الجلسات
├── skill/            # المهارات والكفاءات
├── social/           # الشبكة الاجتماعية
├── terms/            # شروط الخدمة
├── user/             # إدارة المستخدمين وقوائم الدورات/الجلسات
├── usergroup/        # مجموعات المستخدمين (الفصول)
└── userreluser/      # علاقات المستخدمين (الأصدقاء/المتابعات)
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.chamilo.org/2.x-ar/dlyl-almtwr/developer-guide/frontend/views-and-routing.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
