IFrame Lightboxes

This is a theme component that adds the ability to open iFrames in lightboxes.

Samples

This component adds an “expand” button on top of the iframes you enable it on.

Clicking the button will open the iframe in fullscreen in a lightbox.

Clicking either the dark area around the iframe or the x at the top right corner closes the lightbox. The same way it works for default image lightboxes.

Settings

There’s only one setting. You add the domains that you want to have this functionality on there.

:warning: Whatever domains you specify here also need to be whitelisted in the allowed_iframes site setting to show up in posts in the first place.

Usage examples:

Here’s a couple of examples besides the CodePen iframe above

Google forms iframe:

Embedding the entire weather.gov website:

Credit:

This component uses Noël Bossart’s fantastic Featherlight library (MIT license - 3kb gzip)

31 „Gefällt mir“

I suppose these iframes still also need to be activated in the allowed iframes site setting?

5 „Gefällt mir“

Correct, this component will not mess with any whitelisting settings at all.

In order for any iframe to show up in the cooked content of a post - expandable or not - it has to be on the list of allowed_iframes setting like you pointed out.

I’ll add a note about this to the topic.

5 „Gefällt mir“

@Johani is this component still functional? If so, any thoughts on why I am not getting the pop-out diagonal-arrows in the upper-right, but rather a blank/dead box?

Here is what I’ve tried:

  • Updated themes/components.
  • Made sure src links were white-listed in the component and the Discourse settings.
  • Tried a few different links, including Google Maps.
  • Tried several scenarios with the Media Overlay on/off + Lightbox alone on/off.

Below are some screenshots.

Thx!
-Patrick





image
image
image
image

Dear @Johani,

thank you very much for conceiving and maintaining this theme component.

After installing it on https://community.hiveeyes.org/ the other day, some users recently started to complain that the overall appearance of the head of the page looked different for them. They finally found out the reason was that they blocked cloudflare altogether, so all requests to https://cdnjs.cloudflare.com/ajax/libs/featherlight/1.7.13/featherlight.min.js would fail.

So, we are humbly asking if there would be a way for you to provide this component in a self-contained variant?

With kind regards,
Andreas.

3 „Gefällt mir“

Why is it desktop-only?

I had a bug this theme component, post contents weren’t showing.

Could I trigger open iframe in a any link simply?
User just see iframe only when click at link

1 „Gefällt mir“

Welp… this one fell through the cracks. It’s been a while since it got any attention, and a lot has changed in Discourse.

Better late than never… :upside_down_face:

I just pushed an update that should fix all the problems.

It will be after you update.

The component is now self-contained with no external requests.

After you update, it will work on mobile too.

Should be fixed after you update

This is out of the scope of this component. You need a different component to handle that.

Apologies for the delay, and thanks for the feedback :+1:

7 „Gefällt mir“

Vielen Dank!

Kein Grund zur Entschuldigung, schön zu sehen, dass Sie sich trotz allem, was sonst noch los ist, darum kümmern konnten. Wir wissen das wirklich zu schätzen.

1 „Gefällt mir“

Gibt es bereits eine Komponente, die auf diese Weise einen Iframe-Lightbox-Link öffnen kann?

Mir sind keine bestehenden Komponenten bekannt, die das tun. Sie müssten also eine erstellen oder diese Arbeit in der Kategorie Marketplace in Auftrag geben.

Diese Theme-Komponente prüft iFrame in einem Beitrag und vergleicht deren src-Attribut mit einer Liste berechtigter Quellen, die vom Administrator in den Komponenteneinstellungen bereitgestellt wird. Wenn die Quell-Domain übereinstimmt, fügt sie den Lightbox-Button hinzu. Das Anzeigen der Lightbox wird von featherlight.js übernommen. Featherlight lauscht auf Klicks auf Elemente mit dem data-featherlight-Attribut. Wenn eines davon angeklickt wird, öffnet es die Lightbox mit dem Inhalt dieses iFrames.

Sie können dasselbe mit <a>-Tags in einer anderen Komponente mit etwas Aufwand tun. Wenn die href des Links mit einer in den Komponenteneinstellungen aufgeführten Domain übereinstimmt, öffnen Sie sie in einer Lightbox als iFrame. Andernfalls belassen Sie sie als regulären Link. Sie möchten nicht, dass alle Links in einer Lightbox-iFrame geöffnet werden.

Die meiste erforderliche Arbeit wird bereits von dieser Komponente erledigt, sodass Sie sie einfach forken und von dort aus starten können. Es gibt keine Pläne, diese Funktion zu dieser Komponente hinzuzufügen, da sie nur für die Verarbeitung von iFrame-Tags in Beiträgen gedacht ist.

3 „Gefällt mir“

Hier ist eine Methode, um einen iFrame Lightbox in ein klickbares Inline-Textelement einzufügen …

Das Discourse Footnotes Plugin akzeptiert sowohl HTML als auch Markdown in Popup-Fußnoten.

Zum Beispiel dieser Code …

… generiert diese klickbare Popup-Fußnote, die einen Mini-iFrame mit der Schaltfläche Expand content in der oberen rechten Ecke enthält …

Damit dies funktioniert, habe ich (in den Site-Einstellungen) sowohl enable markdown footnotes als auch display footnotes inline aktiviert …

Dann habe ich den Domainnamen dieser Site (microchic.com) zur Liste der allowed iframes in den Site-Einstellungen hinzugefügt …

… und auch in die Liste der iframe origin domains in den iFrame Lightbox Plugin-Einstellungen …

Sie können es hier live ausprobieren …

Hallo, ich habe mich gefragt, wie Sie Beiträge formatieren. Ich bekomme eine leere Box, wenn ich

iframe src=" url" in Klammern verwende. Das passiert sogar, wenn ich codepen.io verwende, das auf der Whitelist für iframes auf der Hauptseite steht.

Funktioniert diese Komponente noch? Sie hat bei mir früher funktioniert, aber aus irgendeinem Grund nicht mehr.
Es scheint, dass das letzte Update vor 3 Jahren war: hnb-ku/discourse-iframe-lightboxes (github.com) Es ist also vernünftig anzunehmen, dass etwas kaputt gegangen ist?

1 „Gefällt mir“

Es funktionierte im Mai, als ich es hier benutzt habe.

1 „Gefällt mir“

Auf meiner Seite funktioniert es mit der neuesten Discourse-Version.

Gibt es Fehler in der Browserkonsole?

2 „Gefällt mir“

Ich kann das nicht zum Laufen bringen. Ich habe die Anleitung genau befolgt und die Domain sowohl zur Theme-Komponente als auch zur Website-Einstellung hinzugefügt. Hier ist, was ich bekomme:

Keine Fehler in der JavaScript-Entwicklerkonsole.

Die Einstellung für erlaubte Iframes hat die Top-Level-Domain:

https://example.biz/

Die Einstellungen der Theme-Komponente haben sie ohne https, wie in den vorhandenen Beispielen:

example.biz

Irgendwelche Ideen zur Fehlersuche?

1 „Gefällt mir“

Keine Fehler in der Konsole.
Ich benutze es mit PDF-Vorschauen: Inline PDF Previews - #116 by Alon1
Ich erwarte, die Aufklapppfeile über dem PDF zu erhalten

Aber sie werden einfach nicht angezeigt

Können Sie stattdessen diesen Fork ausprobieren?

URL: https://github.com/Arkshine/discourse-iframe-lightboxes
Branch: improve-compatibility

Sie hatten Glück, wenn es vorher funktionierte!

Beide TCs verwenden dieselbe API, um einen Beitrag zu dekorieren, daher wäre die Reihenfolge, in der Sie sie installieren, wichtig. Außerdem wird die IFrame-Quelle dynamisch festgelegt, sobald das PDF heruntergeladen wurde, und ist möglicherweise in diesem IFrame Lighboxes TC nicht sofort verfügbar.

Die von mir vorgenommenen Änderungen sind im Grunde:

  • Suchen Sie im nächsten Ausführungszyklus nach IFrame-Elementen, damit der IFrame garantiert verfügbar ist
  • Warten Sie, bis der IFrame geladen ist, damit Sie die Quell-URL abrufen können

Lassen Sie mich wissen, ob es besser funktioniert. :+1:

4 „Gefällt mir“