Σύστημα Πόρων
Το σύστημα πόρων αποτελεί μία από τις πιο σημαντικές αρχιτεκτονικές έννοιες στο Chamilo 2.0. Παρέχει μια ενιαία αφαίρεση για όλο το περιεχόμενο του μαθήματος — έγγραφα, ασκήσεις, μονοπάτια μάθησης, δημοσιεύσεις φόρουμ και άλλα.
Βασική Έννοια
Κάθε κομμάτι περιεχομένου μαθήματος αναπαριστάται από έναν ResourceNode. Αυτό παρέχει σε όλους τους τύπους περιεχομένου ένα κοινό σύνολο δυνατοτήτων:
Έλεγχος ορατότητας — Εμφάνιση/απόκρυψη από τους μαθητές
Έλεγχος πρόσβασης — Οι ψηφοφόροι ασφαλείας ελέγχουν τα δικαιώματα μέσω του ResourceNode
Αποθήκευση αρχείων — Τα συνημμένα αρχεία αποθηκεύονται μέσω του ResourceFile
Δομή δέντρου — Οι ResourceNodes σχηματίζουν ένα δέντρο (σχέσεις γονέα-παιδιού)
Καταγραφή ελέγχου — Δημιουργός, ημερομηνία δημιουργίας, παρακολούθηση τροποποιήσεων
Κύριες Οντότητες
ResourceNode (src/CoreBundle/Entity/ResourceNode.php)
src/CoreBundle/Entity/ResourceNode.php)Η κεντρική οντότητα. Κάθε οντότητα περιεχομένου έχει σχέση ένα-προς-ένα με έναν ResourceNode.
Κύρια πεδία:
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)
src/CoreBundle/Entity/ResourceFile.php)Αποθηκεύει τα πραγματικά δεδομένα αρχείου για έναν πόρο:
id
integer
Κύριο κλειδί
title
string
Αρχικό όνομα αρχείου
mimeType
string
Τύπος MIME
originalName
string
Αρχικό όνομα μεταφόρτωσης
size
integer
Μέγεθος αρχείου σε bytes
crop
string
Δεδομένα περικοπής (για εικόνες)
Η αποθήκευση αρχείων γίνεται από το Flysystem, έτσι τα αρχεία μπορούν να βρίσκονται σε τοπικό δίσκο, S3, Azure ή GCS ανάλογα με τη διαμόρφωση.
ResourceLink
Ελέγχει την ορατότητα και την πρόσβαση ανά πλαίσιο. Υπάρχουν 3 κύριοι τύποι πλαισίου:
Course
Session
Group (σε ένα μάθημα)
Άρα η οντότητα ResourceLink αντανακλά τον συνδυασμό αυτών των 3 τύπων πλαισίου και καθιερώνει μια ορατότητα για αυτό το πλήρες πλαίσιο:
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 μαζί του, παρέχοντας ενιαία διαχείριση πόρων.
Πρακτικές Συνέπειες
Κατά την εργασία με περιεχόμενο μαθήματος:
Δημιουργία περιεχομένου — Δημιουργήστε τόσο την οντότητα περιεχομένου όσο και τον ResourceNode της
Έλεγχος δικαιωμάτων — Χρησιμοποιήστε τους ψηφοφόρους ασφαλείας του ResourceNode
Διαχείριση αρχείων — Συνδέστε αρχεία μέσω του ResourceFile
Έλεγχος ορατότητας — Δημιουργήστε/τροποποιήστε ResourceLinks
Δόμηση δέντρων — Χρησιμοποιήστε τη σχέση γονέα-παιδιού στον ResourceNode για δομές φακέλων (π.χ. φάκελοι εγγράφων)
Τελευταία ενημέρωση
Ήταν χρήσιμο αυτό;