Lightboxes IFrame

Il s’agit d’un composant de thème qui ajoute la possibilité d’ouvrir des iframes dans des lightboxes.

Exemples

Ce composant ajoute un bouton « agrandir » au-dessus des iframes sur lesquelles vous l’activez.

Cliquez sur le bouton pour ouvrir l’iframe en plein écran dans une lightbox.

Cliquez soit sur la zone sombre autour de l’iframe, soit sur le x en haut à droite pour fermer la lightbox. Cela fonctionne de la même manière que pour les lightboxes d’images par défaut.

Paramètres

Il n’y a qu’un seul paramètre. Vous ajoutez les domaines sur lesquels vous souhaitez que cette fonctionnalité soit active.

:warning: Les domaines que vous spécifiez ici doivent également être autorisés dans le paramètre du site allowed_iframes pour pouvoir apparaître dans les publications.

Exemples d’utilisation :

Voici quelques exemples en plus de l’iframe CodePen ci-dessus

Iframe de formulaires Google :

Intégration du site web weather.gov en entier :

Crédits :

Ce composant utilise la bibliothèque fantastique Featherlight de Noël Bossart (licence MIT - 3 ko 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 »

Pourquoi est-ce uniquement pour ordinateur de bureau ?

J’ai rencontré un bug dans ce composant de thème : le contenu des publications n’apparaissait pas.

Pourrais-je simplement déclencher l’ouverture d’une iframe sur n’importe quel lien ?
L’utilisateur ne voit l’iframe qu’après avoir cliqué sur le lien.

1 « J'aime »

Eh bien… celui-ci est passé à travers les mailles du filet. Cela fait un moment qu’il n’a plus reçu d’attention, et beaucoup de choses ont changé dans Discourse.

Mieux vaut tard que jamais… :upside_down_face:

Je viens de pousser une mise à jour qui devrait régler tous les problèmes.

Il le sera une fois que vous aurez effectué la mise à jour.

Le composant est désormais autonome et ne nécessite aucune requête externe.

Après la mise à jour, il fonctionnera également sur mobile.

Cela devrait être corrigé après la mise à jour.

Cela sort du cadre de ce composant. Vous avez besoin d’un autre composant pour gérer cela.

Toutes mes excuses pour ce délai, et merci pour vos retours :+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 »