You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Das LMS muss statische Dateien aus den Paketen abrufen können, um die in den Fragen referenzierten Dateien den Usern ausliefern zu können.
Anforderungen:
Alle statischen Dateien eines Pakets sollen vom LMS gleichzeitig geholt werden können. => Müssten also vom Server in ein Archiv gepackt werden, ZIP bietet sich hier an, da es von PHP gut unterstützt wird.
Es sollen auch nur einzelne Dateien geholt werden können, z.B. nur das Logo.
Das LMS benötigt an Informationen: Paket/Hash, Pfad/Ordner, Dateiname, MIME-Type
Dateien aus Lib-Paketen sollen den Usern unter derselben URL zur Verfügung gestellt werden (egal in welchen Fragenpaketen die Lib eingesetzt wird), um Browser-Caching effizient nutzen zu können. Indem der Paket-Hash Teil der URL wird, kann der Browser die Dateien unbegrenzt cachen.
Idee
BaseQuestionType wird erweitert um eine Methode, die alle statischen Dateien im Paket zurückgeben soll (Pfad, MIME-Type). Unsere lib questionpy implementiert diese Methode, so dass in der Regel Paketentwickler nichts machen müssen. Das SDK speichert im Paket (im Manifest oder einer anderen Datei) die Pfade zu den statischen Dateien ab und ermittelt jeweils den MIME-Type.
Bei dynamischen Paketabhängigkeiten sollte das LMS nach jedem Paket getrennt die Dateien holen, da es eine Wahrscheinlich gibt, dass das LMS für ein Lib-Paket bereits die Dateien abgespeichert hat. [Es muss daher die Abhängigkeiten kennen. Weiterer Endpoint benötigt? (bei unten genannter Variante (b) eventuell nicht notwendig?)]
Wie wird mit statischen Paketabhängigkeiten umgegangen? Werden dessen statischen Dateien als Dateien des referenzierenden Pakets betrachtet?
Implementierung im Plugin
Das Moodle-Plugin lädt die statischen Dateien, (a) sobald ein Paket erstmals verwendet wird (Options aufgerufen werden)!? Oder (b) wenn erstmals konkret eine Datei eines Pakets vom User aufgerufen wird. Dateien von Paketen, die nicht mehr referenziert werden, sollen auch wieder gelöscht werden. Bei Variante (b) wäre es denkbar, dass das Plugin regelmäßig die statischen Dateien löscht. Wenn die Dateien doch noch gebraucht wurden, werden sie einfach beim nächsten Zugriff wieder geladen. Der Nachteil an Variante (b) ist, dass der erste Zugriff sehr langsam sein könnte.
Für die Fragen-UI wollten wir eigene QPy-URIs definieren. Für Paketentwickler wäre es blöd, wenn sie in diesen URIs den Paket-Hash auch noch (händisch) angeben müssten. Entweder muss das LMS die Paketnamen in der URI ersetzen können oder die questionpy-lib übernimmt die Ersetzung, z.B. per Funktionsaufruf im Jinja-Template.
Arten von statischen Dateien
Zusammenfassung der Arten (ergibt sich aus unserer vorgegebenen Paket-Ordnerstruktur):
js: (minifiziertes) JavaScript
css: (minifiziertes) CSS
public: Dateien, die frei zum Download sind und in der Frage referenziert werden können
private: Dateien, die erst zugänglich sind, wenn sie in der Frage referenziert wurden; LMS stellt sicher, dass nur die User darauf zugreifen können, die auch die entsprechende Frage/Fragenvariante erhalten haben.
docs: HTML?-Dateien und dazugehörige Dateien (später)
logo.svg
Dieses Issue ist zunächst abhängig von der Implementierung von Package.get_file.
The text was updated successfully, but these errors were encountered:
Das LMS muss statische Dateien aus den Paketen abrufen können, um die in den Fragen referenzierten Dateien den Usern ausliefern zu können.
Anforderungen:
Idee
BaseQuestionType
wird erweitert um eine Methode, die alle statischen Dateien im Paket zurückgeben soll (Pfad, MIME-Type). Unsere libquestionpy
implementiert diese Methode, so dass in der Regel Paketentwickler nichts machen müssen. Das SDK speichert im Paket (im Manifest oder einer anderen Datei) die Pfade zu den statischen Dateien ab und ermittelt jeweils den MIME-Type.Bei dynamischen Paketabhängigkeiten sollte das LMS nach jedem Paket getrennt die Dateien holen, da es eine Wahrscheinlich gibt, dass das LMS für ein Lib-Paket bereits die Dateien abgespeichert hat. [Es muss daher die Abhängigkeiten kennen. Weiterer Endpoint benötigt? (bei unten genannter Variante (b) eventuell nicht notwendig?)]
Wie wird mit statischen Paketabhängigkeiten umgegangen? Werden dessen statischen Dateien als Dateien des referenzierenden Pakets betrachtet?
Implementierung im Plugin
Das Moodle-Plugin lädt die statischen Dateien, (a) sobald ein Paket erstmals verwendet wird (Options aufgerufen werden)!? Oder (b) wenn erstmals konkret eine Datei eines Pakets vom User aufgerufen wird. Dateien von Paketen, die nicht mehr referenziert werden, sollen auch wieder gelöscht werden. Bei Variante (b) wäre es denkbar, dass das Plugin regelmäßig die statischen Dateien löscht. Wenn die Dateien doch noch gebraucht wurden, werden sie einfach beim nächsten Zugriff wieder geladen. Der Nachteil an Variante (b) ist, dass der erste Zugriff sehr langsam sein könnte.
Schwierigkeit in der Fragen-UI
Für die Fragen-UI wollten wir eigene QPy-URIs definieren. Für Paketentwickler wäre es blöd, wenn sie in diesen URIs den Paket-Hash auch noch (händisch) angeben müssten. Entweder muss das LMS die Paketnamen in der URI ersetzen können oder die questionpy-lib übernimmt die Ersetzung, z.B. per Funktionsaufruf im Jinja-Template.
Arten von statischen Dateien
Zusammenfassung der Arten (ergibt sich aus unserer vorgegebenen Paket-Ordnerstruktur):
Dieses Issue ist zunächst abhängig von der Implementierung von
Package.get_file
.The text was updated successfully, but these errors were encountered: