AddEvent-Code funktioniert nicht in Discourse

Ich versuche, Code für einen Event-Kalender in Discourse einzufügen. Ich habe die vier Leerzeichen-Einrückung verwendet, aber es scheint nicht zu funktionieren.

Hier ist der Code-Ausschnitt:

image

So sieht es bei mir aus…

Ich bin kein regelmäßiger Programmierer, also bitte, wenn du die Fachbegriffe vereinfachen könntest, wäre ich dir sehr dankbar. :pray:

Der Grund dafür ist, dass Discourse Benutzereingaben in Beiträgen aus Sicherheitsgründen filtert. Sie möchten nicht, dass zufällige Benutzer Skripte auf Ihrer Website ausführen, daher filtern wir diese heraus.

Sie können eine Theme-Komponente verwenden, um dies zu ermöglichen. Wenn Sie etwas wie das Folgende in einer neuen Theme-Komponente unter dem Reiter „Header“ hinzufügen und diese dann zu Ihrem aktiven Theme hinzufügen, können Sie diesen Einbettungstyp verwenden.

<script type="text/discourse-plugin" version="0.8">
  const  loadScript  = require("discourse/lib/load-script").default;
  const { next } = require("@ember/runloop");

  api.decorateCookedElement(
    post => {
      const calendars = post.querySelectorAll(`[data-wrap="addEvent"]`);
      if (!calendars.length) return;

      calendars.forEach(calendar => {
        const wrapper = document.createElement("div");
        wrapper.dataset.calendar = calendar.dataset.calendar;
        wrapper.dataset.configure = false;
        wrapper.classList.add("ae-emd-cal");
        calendar.append(wrapper);
      });

      next(() =>
        loadScript("https://addevent.com/js/cal.embed.t1.init.js")
      );
    },
    { id: "AddEvent decorator", onlyStream: true }
  );
</script>

Sobald Sie das getan haben, können Sie den AddEvent-Kalender in einem Beitrag hinzufügen, indem Sie etwas wie das Folgende in Ihren Beitrag einfügen.

[wrap=addEvent calendar=bJ306355][/wrap]

Sie können das Attribut calendar=bJ306355 ändern, um die spezifische Kennung des Kalenders hinzuzufügen, den Sie einbetten möchten.

Der letzte Schritt besteht darin, das AddEvent-Skript in Ihrer Site-Einstellung freizugeben (dies ist eine weitere Sicherheitsebene).

Suchen Sie in der Verwaltung nach content_security_policy_script_src und fügen Sie diesen Link dort hinzu:

https://addevent.com

Lassen Sie mich wissen, ob dies bei Ihnen funktioniert, und ich kann es als Theme-Komponente verpacken.

Hi @Johani,

Deine Lösung funktioniert bei mir. Ich wollte es dir nur kurz mitteilen.

Danke!

Also, ich habe gerade eine neue Theme-Komponente erstellt, um einen AddEvent-Kalender darzustellen.

:link: GitHub - graydenshand/discourse_upcoming_addevent: Replace the DiscourseEvent "upcoming events" calendar with an AddEvent embed · GitHub

Anstatt den Kalender in einem Beitrag einzubetten – was für die Darstellung der Desktop-Version zu schmal ist –, übernimmt diese Theme-Komponente die „Anstehende Veranstaltungen"-Seite des DiscourseCalendar-Plugins.

Beachten Sie, dass ich dazu das AddEvent-Skript (https://addevent.com/js/cal.embed.t1.init.js) anpassen musste, um Neurenderungen zwischen Seitenübergängen zu ermöglichen.