Warum sollte ich bestehende H5P-Inhalte aktualisieren? Und wie?

Starten wir mit einer kurzen Erklärung, worum es in diesem Beitrag geht. Du verwendest H5P-Inhaltstypen (Bibliotheken) wie H5P.Column, um Column-Inhalte zu erstellen. Jede Inhaltstypen-Bibliothek hat eine bestimmte Versionsnummer, z. B. 1.1.7. Das entspricht dem „Semantic versioning„-Schema. Der von dir erstellte Inhalt weiß, mit welcher Version dieser Bibliothek er erstellt wurde – zumindest die ersten beiden Ziffern. So weit, so gut.

Wenn im Inhaltstyp etwas repariert oder geändert wird, wird die Versionsnummer auf eine besondere Weise erhöht, um zwischen verschiedenen Versionen zu unterscheiden. Wenn es sich um eine geringfügige Änderung handelt, die die Kompatibilität mit älteren Versionen nicht beeinträchtigt, wird die letzte Zahl um 1 erhöht. Aus Version 1.1.7 wird dann 1.1.8. Wenn du die Inhaltstyp-Bibliothek aktualisierst, wird dein vorhandener Inhalt automatisch diese neuere (Patch-)Version verwenden, da die ersten beiden Zahlen noch gleich sind.

Andere Änderungen am Code können jedoch erfordern, dass die zweite Versionsnummer um 1 erhöht und die letzte Nummer auf 0 zurückgesetzt wird. Aus Version 1.1.7 wird dann 1.2.0. Diese Änderung zeigt an, dass die Funktionalität abwärtskompatibel geändert wurde, aber H5P-Inhalte erfordern einen gewissen zusätzlichen Aufwand: Während neu erstellte Inhalte wissen, dass sie mit der neuen Version 1.2 erstellt wurden, wissen deine vorhandenen Inhalte noch, dass sie mit 1.1 oder einer früheren Version erstellt wurden, und benötigen und verwenden diese Bibliotheksversion. Selbst wenn du also die Bibliothek des Inhaltstyps auf eine neuere (Minor-)Version aktualisierst, bleiben deine vorhandenen Inhalte unverändert. Das hat einige Auswirkungen.

Warum ist das wichtig?

  1. Neuere Versionen einer Inhaltstypen-Bibliothek können weniger Fehler, neue Funktionen, bessere Übersetzungen, bessere Unterstützung für barrierefreie Funktionen usw. aufweisen. Bestehende Inhalte profitieren nicht davon, wenn sie weiterhin eine ältere Version verwenden.
  2. Da ältere Inhalte immer noch die ältere Version der Inhaltstypen-Bibliothek benötigen, erlauben es gängige H5P-Integrationen wie das H5P-Plugin für WordPress nicht, die Bibliothek zu löschen – andernfalls würden deine Inhalte nicht mehr funktionieren. Dies bedeutet, dass mehr Speicherplatz benötigt wird. Man könnte argumentieren, dass Festplattenspeicher billig ist, aber Administratoren mögen es vielleicht trotzdem nicht, wenn er „zugemüllt“ ist.
  3. Zusammengesetzte H5P-Inhaltstypen wie Column oder Course Presentation verwenden andere Inhaltstypen als Unterinhalt. Anstatt alles von Grund auf neu zu erstellen, kannst du deine vorhandenen Inhalte in den zusammengesetzten Inhaltstyp einfügen. Ein zusammengesetzter Inhaltstyp kann jedoch nur eine bestimmte (Minor-)Version jedes Unterinhalts verarbeiten. Wenn beispielsweise Column als Unterinhalt Fill in the Blanks 1.14 benötigt, kannst du keine Inhalte einfügen, die mit Fill in the Blanks 1.6 oder Fill in the Blanks 1.13 erstellt wurden. Der entsprechende „Einfügen“-Button würde ausgegraut werden. Im Laufe der Zeit, wenn deine Bestände an H5P-Inhalten wachsen und du verschiedene Versionen von Inhaltstypen-Bibliotheken ansammelst, würde das „Kopieren und Einfügen“ also völlig nutzlos werden.

Was kann ich da tun?

Die Lösung ist einfach: Es ist möglich, bestehende H5P-Inhalte auf eine neuere Bibliotheksversion zu aktualisieren. Die Aktualisierung von H5P-Inhalten bedeutet, dass sie auf die neuere Bibliothek verweisen müssen. Außerdem muss in einigen Fällen die Parameterstruktur geändert werden. Letzteres könnte Teil eines anderen entwicklerorientierten Beitrags sein 🙂

Der H5P-Kern bietet mehrere Möglichkeiten, H5P-Inhalte zu aktualisieren, aber nicht alle davon werden von allen H5P-Integrationen auf die gleiche Weise unterstützt!

Bestehenden Inhalt bearbeiten und speichern

Auf diese Weise hast du vielleicht schon oft H5P-Inhalte aktualisiert, ohne es zu wissen. Wenn du vorhandene Inhalte bearbeist und dann speicherst, aktualisiert H5P die Inhalte auf die neueste Version der Bibliothek, die auf deiner Plattform verfügbar ist.

H5P-Inhalt hochladen

Dies entspricht im Wesentlichen der vorherigen Option, wenn der von dir hochgeladene Inhalt im Editor landet und du ihn dann speichern musst.

Einige H5P-Integrationen erlauben es dir, Inhalte direkt hochzuladen, ohne sie zuerst in den Editor zu laden. Dann funktioniert diese Möglichkeit des Upgrades nur, wenn die Entwickler der jeweiligen H5P-Integration das Upgrade explizit auslösen. Moodles eigene H5P-Integration im Kern von Moodle tut dies derzeit zum Beispiel nicht. Inhalte, die du in den Inhaltsspeicher oder direkt in eine Aktivität eines Kurses hochlädst, werden nicht aktualisiert, sondern verwenden die alte Bibliotheksversion.

„Batch-Upgrade“

Deine H5P-Integration verfügt höchstwahrscheinlich über eine Verwaltungsseite für die H5P-Bibliotheken, und dort findest du in der Regel eine Batch-Upgrade-Funktion. Aus irgendeinem Grund ist diese Funktion auf h5p.org nicht dokumentiert, obwohl alle H5P-Plugins der H5P Group sie unterstützen. Lass uns hier also ein wenig mehr ins Detail gehen.

Auf der Bibliotheksverwaltungsseite findest du eine Liste aller H5P-Inhaltstyp-Bibliotheken, die auf deiner Plattform installiert sind. Es gibt einen Eintrag für jede Bibliotheksversion. Jeder Listeneintrag für eine Inhaltstyp-Bibliothek zeigt Details (siehe die offizielle Dokumentation dazu) und bis zu drei Buttons auf der rechten Seite. Einer davon könnte ein nach oben gerichteter Pfeil sein. Wenn dieser Pfeil grün hinterlegt ist, bedeutet dies, dass es Inhalte gibt, die aktualisiert werden können.

Screenshot der Seite zur Verwaltung der H5P-Bibliothek. Sie zeigt mehrere Einträge für Branching Scenario mit unterschiedlichen Versionsnummern. Die größte Versionsnummer ist 1.7.0. Auf der rechten Seite befindet sich eine Schaltfläche mit einem Pfeil, der nicht sichtbar ist. Der Eintrag mit der Versionsnummer 1.2.0 hat eine Schaltfläche mit einem Pfeil, der grün hinterlegt ist.

Im obigen Screenshot siehst du verschiedene Einträge für den Inhaltstyp Branching Scenario, d. h. es sind mehrere verschiedene (Minor-)Versionen installiert. Der Eintrag für die Version 1.2.0 zeigt eine Pfeilschaltfläche mit grünem Hintergrund, d. h. es gibt Inhalte, die auf eine neuere Version aktualisiert werden können – bis zur Version 1.8, der neuesten installierten Unterversion.

Wenn du auf die Pfeilschaltfläche klickst, öffnet sich eine neue Seite, auf der du aufgefordert wirst, die Bibliotheksversion auszuwählen, auf die du aktualisieren möchtest. Normalerweise wählst man die neueste verfügbare Version, in diesem Fall 1.8.9. Wenn du dann auf „Upgrade“-Button klickst, aktualisiert H5P alle Inhalte, die derzeit Branching Scenario 1.2.0 verwenden, auf die Version 1.8.9. Dies kann einen Moment dauern – und du musst den Browser-Tab geöffnet lassen – aber du wirst über den Fortschritt informiert.

Sobald der Vorgang abgeschlossen ist, kannst du zur H5P-Bibliotheksverwaltungsseite zurückkehren und nach weiteren Inhalten suchen, die aktualisiert werden können.

Leider bietet Moodles eigene H5P-Integration noch keine Batch-Upgrade-Funktion. Es gibt ein Ticket im MoodleHQ-Tracker, das darum bittet, diese Funktion hinzuzufügen, aber es ist jetzt fast 4 Jahre alt. Vielleicht möchtest du deine Stimme dafür abgeben?

Gut zu wissen

  1. Nach dem Batch-Upgrade der H5P-Inhalte solltest du auf der Bibliotheksverwaltungsseite direkt über der Liste der installierten Bibliotheken einen „Rebuild Cache“-Button sehen. Es ist zwar nicht entscheidend, aber es ist eine gute Idee, ihn zu drücken. Andernfalls muss die erste Person, die einen aktualisierten Inhalt ansieht, ein oder zwei Sekunden länger warten, bis er angezeigt wird.
  2. Wenn du bestehende Inhalte über den Batch-Upgrade-Prozess aktualisierst, z. B. Drag the Words, dann werden nur eigenständige „Drag the Words“-Inhalte aktualisiert. Inhalte, die als Unterinhalt in Column, Question Sets usw. verwendet werden, werden nicht aktualisiert.
  3. Selbst wenn du alle Inhalte auf die neueste Version aktualisiert hast, kannst du möglicherweise keine Inhalte in Inhaltstypen wie Column einfügen. Das liegt daran, dass der übergeordnete Inhaltstyp möglicherweise noch nicht in der Lage ist, die neueste Version des Inhalts zu handhaben, den du einfügen möchtest. Leider lässt sich dass nicht völlig ausschließen, da die Enwickler*innen der verschiedenen Inhaltstypen ihren Code möglicherweise aktualisieren müssen. Möglicherweise wissen sie noch nichts davon (hoffentlich kann die H5P Group einen automatischen Mechanismus zur Überprüfung dieser Inkonsistenzen einrichten und die Autor*innen von Inhaltstypen informieren) oder – im schlimmsten Fall – haben sie den Inhaltstyp aufgegeben.
  4. Es könnte sein, dass du Inhalte nicht einfügen kannst, weil sie immer noch eine ältere Bibliotheksversion verwenden als der Inhaltstyp, in den du einfügen möchtest, erwartet. Theoretisch könnte der H5P-Kern den Inhalt automatisch aktualisieren, wenn er eingefügt wird, aber leider ist das noch nicht implementiert. Du musst die Inhalte, die du einfügen möchtest, zuerst aktualisieren.