Lightboxes IFrame

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 « J'aime »

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

5 « J'aime »

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 « J'aime »

@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 « J'aime »

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 « J'aime »

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 « J'aime »

Merci beaucoup !

Pas besoin de vous excuser, c’est bien de voir que vous avez pu lui accorder un peu d’attention, entre toutes les autres choses qui se passent. Nous apprécions vraiment cela.

1 « J'aime »

Existe-t-il déjà un composant qui peut ouvrir une lightbox iframe dans un lien de cette manière ?

Je ne connais aucun composant existant qui fasse cela, vous devriez donc en créer un ou commander ce travail dans la catégorie Marketplace.

Ce composant de thème vérifie les iFrame dans un message et compare leur attribut src à une liste de sources éligibles fournie par l’administrateur dans les paramètres du composant. Si le domaine source correspond, il ajoute le bouton lightbox. L’affichage de la lightbox est géré par featherlight.js. Featherlight écoute les clics sur les éléments avec l’attribut data-featherlight. Si l’un d’eux est cliqué, il ouvre la lightbox avec le contenu de cet iFrame.

Vous pouvez faire de même avec les balises <a> dans un composant différent avec un peu de manipulation. Si le href du lien correspond à un domaine répertorié dans les paramètres du composant, affichez-le dans une lightbox en iframe. Sinon, laissez-le comme un lien normal. Vous ne voulez pas que tous les liens s’ouvrent dans une iframe en lightbox.

La plupart du travail requis est déjà géré par ce composant, vous pouvez donc simplement le forker et commencer à partir de là. Il n’est pas prévu d’ajouter cette fonctionnalité à ce composant car il est uniquement destiné à gérer les balises iFrame dans les messages.

3 « J'aime »

Voici une méthode pour inclure une Lightbox iFrame à l’intérieur d’un élément de texte cliquable en ligne…

Le Discourse Footnotes Plugin accepte le HTML ainsi que le Markdown à l’intérieur des notes de bas de page contextuelles.

Donc, par exemple, ce code…

… génère cette note de bas de page cliquable contenant une mini iFrame avec le bouton Expand content dans le coin supérieur droit…

Pour que cela fonctionne, j’ai (dans les paramètres du site) activé à la fois enable markdown footnotes et display footnotes inline

Ensuite, j’ai ajouté le nom de domaine de ce site (microchic.com) à la liste allowed iframes dans les paramètres du site…

… et aussi dans la liste des iframe origin domains dans les paramètres de l’iFrame Lightbox Plugin…

Vous pouvez l’essayer en direct ici…

Salut, je me demandais comment vous formatez les publications. J’obtiens une boîte vide en utilisant

iframe src=" url" entouré de < > C’est même lorsque j’utilise codepen.io qui est sur la liste blanche des iframes du site principal.

Ce composant fonctionne-t-il toujours ? Il fonctionnait pour moi par le passé mais a cessé de fonctionner pour une raison quelconque.
Il semble que la dernière mise à jour date d’il y a 3 ans : hnb-ku/discourse-iframe-lightboxes (github.com) Il est donc raisonnable de supposer que quelque chose s’est cassé ?

1 « J'aime »

Cela fonctionnait en mai, comme je l’ai utilisé ici.

1 « J'aime »

Cela fonctionne de mon côté avec la dernière version de Discourse.

Y a-t-il une erreur dans la console du navigateur ?

2 « J'aime »

Impossible de faire fonctionner cela, j’ai suivi le guide à la lettre et ajouté le domaine à la fois au composant de thème et au paramètre du site. Voici ce que j’obtiens :

Aucune erreur enregistrée dans la console développeur JavaScript.

Le paramètre du site allowed iframes contient le domaine de premier niveau :

https://example.biz/

Les paramètres du composant de thème le contiennent sans https, conformément aux exemples existants :

example.biz

Des idées pour déboguer ?

1 « J'aime »

aucune erreur dans la console.
Je l’utilise avec des aperçus PDF : Inline PDF Previews - #116 by Alon1
Je m’attends à obtenir les flèches d’expansion au-dessus du PDF

Mais elles n’apparaissent tout simplement pas

Pouvez-vous essayer ce fork à la place ?

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

Vous avez eu de la chance avant si cela fonctionnait !

Les deux TC utilisent la même API pour décorer un message, donc l’ordre dans lequel vous les installez serait nécessaire. De plus, la source de l’iframe est définie dynamiquement une fois que le PDF a été téléchargé et peut ne pas être immédiatement disponible dans ce TC IFrame Lighboxes.

Les changements que j’ai apportés sont essentiellement :

  • Rechercher les éléments iframe dans la prochaine boucle d’exécution, afin que l’iframe soit garanti d’être disponible
  • Attendre que l’iframe se charge afin que vous puissiez récupérer l’URL source

Faites-moi savoir si cela fonctionne mieux. :+1:

4 « J'aime »