Runkit-Widget in Discourse einbetten

Hallo! Ich betreibe eine Discourse-Instanz, die von Discourse gehostet wird (Business-Plan, nicht Enterprise), und möchte ein Runkit-Widget in einen Beitrag einbetten. Weißt du, ob das möglich ist? Danke!

Technisch ist dies mit einer Theme-Komponente möglich, die Beiträge gestaltet. Sie würden dann einen [wrap]-Abschnitt für die Einbettung definieren und beim Laden der Beitragsgestaltung die Bibliothek laden und die Einbettungsfunktionen ausführen.

Ich würde hier jedoch zu großer Vorsicht raten:

  1. Sie möchten Ihre CSP nicht ungültig machen, daher müssen Sie dies berücksichtigen.
  2. Sie möchten Discourse nicht verlangsamen, indem Sie eine große dynamische JS-Payload laden.
  3. Sie setzen Runkit starkem Vertrauen aus, indem Sie ihnen erlauben, JavaScript auf Ihrem Discourse auszuführen.

Ich schätze, die Entwicklung einer solchen Lösung würde 1–2 Arbeitstage in Anspruch nehmen. Wenn Sie ein Budget haben, eröffnen Sie vielleicht ein Thema in Marketplace? Theme-Komponenten können problemlos in unseren Business-Plan-Umgebungen installiert werden.

Dank des oEmbed-Standards kannst du https://runkit.com/ in die Einstellung allowed iframes aufnehmen und es dabei belassen.

Füge einfach eine Runkit-URL in einer eigenen Zeile ein, und Discourse wirkt seine Magie:

https://runkit.com/falco/5e13a3b7f5d2e2001a5741d2

wird zu

https://runkit.com/falco/5e13a3b7f5d2e2001a5741d2

Es wird jedoch etwas seltsam, wenn die Einbettung zu lang ist, sodass tatsächlich eine Theme-Komponente benötigt werden könnte, um Einbettungen zu verschönern (und scrollbar zu machen).

Vielen Dank für eure Antworten! @sam Runkit führt Code serverseitig aus, nicht clientseitig, daher ist es ziemlich sicher (es könnte zwar die Ladezeit durch das Laden des Widgets selbst etwas verlängern, aber das ist alles).

@Falco Ich hatte die Einstellung allowed iframes völlig übersehen. Sobald ich sie gesetzt habe, lief alles wie am Schnürchen! Ich werde sehen, was ich bezüglich der Team-Komponente unternehmen kann :slight_smile: