th-koeln / mi-master-wtw

Infos zum Schwerpunkt Weaving the Web im Medieninformatik Master an der TH Köln
https://th-koeln.github.io/mi-master-wtw/
MIT License
8 stars 39 forks source link

Slidify für Veranstaltungswebsites #74

Open cnoss opened 5 years ago

cnoss commented 5 years ago

Jede Session/veranstaltung im Zeitplan hat in der Regel eine eigene Page. Hier gibt es oftmal Anweisungen zu Übungen und weitere Erklärungen. Es wäre hilfreich, wenn man diese direkt als Reveal.js Folien zeigen könnte. Hier ein Beispiel einer solchen Seite: HTML Basics in Frontend Development. Eine basale MI-Reveal Lib ist auch schon vorhanden. Zu konzipieren und entwickeln ist hier eine „Slidify” Funktion, wo mit einem Knopfdruck die entsprechende Seite als Foliensatz dargestellt wird.

Aufwand/Budget(Std.): Recherche/Basiskonzept 8 Std., danach bitte noch mal mit mir verhandeln.

mariofaske commented 4 years ago

Folgende Idee versuche ich gerade umzusetzen:

Sobald jekyll die Seite generiert, kann man über ein Plugin vor dem build npm start ausführen:

module RunNodeBefore
    def self.process(site, payload)
      return if @processed
      system "npm start" 
      @processed = true
    end
  end

  Jekyll::Hooks.register :site, :pre_render do |site, payload|
    RunNodeBefore.process(site, payload)
  end

Damit möchte ich die Generierung der slides vor den build-Prozess legen, ohne das der Nutzer eine zusätzliche Aktion durchführen muss. Ich bin gerade dabei, Teile des mi-slides repos in das wtw repo zu integrieren, dafür muss ich aber auch die mi-slides.js umschreiben, da ich keinen command prompt benötige und ich muss die slide-generierung für jede markdown seite ausführen und im finalen Ordner der Seite speichern, damit ich diese dann später für die jeweiligen Veranstaltungsseiten aufrufen kann.

TODO:

Punkt 4 (generierte sldies im Ordner der Seite zwischen speichern) gestaltet sich schwierig, da jekyll den Ordner _site komplett überschreibt (vll sogar vorher löscht) so dass die gespeicherten slides, nach dem jeykll fertig ist mit der Generierung, verschwunden sind.

Die generierten slides werden nun im Order _lehrveranstaltungen gespeichert, wo auch die jeweiligen markdown Dateien der einzelnen Lehrveranstaltungen liegen. Jekyll nimmt diese dann und kopiert sie in den Ordner _site/lehrveranstaltungen. Das Problem hierbei ist aber, dass dadurch 5k+ neue Dateien entstehen, da für jede markdown Datei eine komplette Ordnerstruktur erstellt wird.

Hat leider alles nicht so geklappt wie geplant, als Proof of Concept funktoniert das bisher erreichte aber: https://github.com/mariofaske/mi-bachelor-webdevelopment

Aktuelle Funktionsweise:

Bevor jekyll die eigentlichen Seiten generiert, wird mittels eines plugins node ausgeführt, genauer gesagt npm start static, wodurch die slides für jede markdown Datei im Ordner "lehrveranstaltungen" erzeugt werden. Für einen ersten Proof of Concept beschränkt sich die slide-Erzeugung zunächst auf fd1-04-05.md. Damit die mi-slides.js library erkennt, welcher Teil der markdown Datei in slides verwandelt werden soll, wurde slide-is:start hinzugefügt. Das heißt, ab dieser Zeile verarbeitet reveal die markdown Datei und generiert die slides. Über einen Button auf der Veranstaltungsseite kann diese erzeugte slide nun aufgerufen werden, jedoch gibt es noch ein paar Probleme: