Resource System

نظام الموارد هو أحد أهم المفاهيم المعمارية في Chamilo 2.0. يوفر تجريداً موحداً لجميع محتويات الدورة — الوثائق، والتمارين، ومسارات التعلم، ومنشورات المنتدى، وغيرها.

المفهوم الأساسي

يُمثل كل جزء من محتويات الدورة بواسطة ResourceNode. هذا يمنح جميع أنواع المحتوى مجموعة مشتركة من الإمكانيات:

  • التحكم في الرؤية — إظهار/إخفاء عن المتعلمين

  • التحكم في الوصول — يتحقق التصويتات الأمنية من الصلاحيات عبر ResourceNode

  • تخزين الملفات — تُخزن الملفات المرفقة عبر ResourceFile

  • هيكل الشجرة — تشكل ResourceNodes شجرة (علاقات أب-ابن)

  • سجل التدقيق — المُنشئ، تاريخ الإنشاء، تتبع التعديلات

الكيانات الرئيسية

ResourceNode (src/CoreBundle/Entity/ResourceNode.php)

الكيان المركزي. كل كيان محتوى لديه علاقة واحد لواحد مع ResourceNode.

الحقول الرئيسية:

Field
Type
Description

id

integer

المفتاح الأساسي

uuid

UUID v4

معرف فريد لاستخدام API

title

string

العنوان المعروض

creator

User

المستخدم الذي أنشأ هذه المورد

resourceFile

ResourceFile

الملف المرفق (إن وجد)

resourceType

ResourceType

نوع المورد (وثيقة، اختبار، إلخ)

parent

ResourceNode

الأب في شجرة الموارد

children

Collection

ResourceNodes الفرعية

resourceLinks

Collection

روابط الرؤية والوصول

تستخدم الشجرة استراتيجية materialized path الخاصة بـGedmo للاستعلامات الهرمية الفعالة.

ResourceFile (src/CoreBundle/Entity/ResourceFile.php)

تخزن بيانات الملف الفعلية للمورد:

Field
Type
Description

id

integer

المفتاح الأساسي

title

string

اسم الملف الأصلي

mimeType

string

نوع MIME

originalName

string

اسم التحميل الأصلي

size

integer

حجم الملف بالبايتات

crop

string

بيانات القص (للصور)

يتم التعامل مع تخزين الملفات بواسطة Flysystem، لذا يمكن أن تكون الملفات على القرص المحلي، أو S3، أو Azure، أو GCS حسب الإعدادات.

يتحكم في الرؤية والوصول لكل سياق. هناك 3 أنواع سياق رئيسية:

  1. Course

  2. Session

  3. Group (في دورة)

لذلك، يعكس كيان ResourceLink مزيج هذه الأنواع الثلاثة من السياقات ويحدد رؤية لهذا السياق الكامل:

Field
Type
Description

course

Course

الدورة التي ينتمي إليها المورد

session

Session

الجلسة (null للدورة الأساسية)

group

CGroup

المجموعة (null للدورة بأكملها)

visibility

integer

مرئي، غير مرئي، أو محذوف

هذا يسمح لنفس ResourceNode بأن يكون له رؤية مختلفة في سياقات مختلفة (مثل: مرئي في جلسة واحدة لكنه مخفي في أخرى).

يتم تعيين هذا تلقائياً عند استخدام الواجهة وقرر، على سبيل المثال، أن مورداً ما هو مورد خاص بجلسة وسيكون مرئياً لجميع المجموعات في دورة معينة في جلسة معينة، لكنه غير مرئي في الدورة الأساسية أو في جلسة أخرى.

افتراضياً، تكون الموارد المرئية في الدورة الأساسية مرئية أيضاً في جميع جلسات تلك الدورة، لكن يمكن لمدرس الدورة أن يقرر إخفاء مورد عن جلسة معينة. في هذه الحالة، سنسترد الرؤية الخاصة لهذا المورد في هذه الجلسة ونرى أن لها قيمة رؤية 0، لذا لن يظهر العنصر للمتعلمين في هذه الجلسة، بينما عدم وجود رؤية خاصة بالجلسة في جلسات أخرى سيجعل المورد يستخدم رؤية الدورة الأساسية (وسيظهر المورد للمتعلمين).

تكامل API Platform

يُعرض ResourceNode كمورد API Platform مع أمان:

كيفية ربط كيانات المحتوى

كيانات محتوى الدورة (CDocument، CQuiz، CLp، إلخ) تمتد AbstractResource أو تنفذ ResourceInterface، مما يمنحها علاقة resourceNode:

عند إنشاء CDocument، يتم إنشاء ResourceNode تلقائياً معه، مما يوفر إدارة موارد موحدة.

الآثار العملية

عند العمل مع محتويات الدورة:

  1. إنشاء المحتوى — إنشاء كيان المحتوى و ResourceNode الخاص به

  2. التحقق من الصلاحيات — استخدام تصويتات الأمان الخاصة بـResourceNode

  3. إدارة الملفات — إرفاق الملفات عبر ResourceFile

  4. التحكم في الرؤية — إنشاء/تعديل ResourceLinks

  5. بناء الشجرات — استخدام علاقة الأب-الابن في ResourceNode لهياكل المجلدات (مثل: مجلدات الوثائق)

آخر تحديث

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