Lightboxes com IFrame

Este é um componente de tema que adiciona a capacidade de abrir iframes em lightboxes.

Exemplos

Este componente adiciona um botão “expandir” no topo dos iframes nos quais você o ativa.

Clicar no botão abrirá o iframe em tela cheia em uma lightbox.

Clicar na área escura ao redor do iframe ou no x no canto superior direito fecha a lightbox. Funciona da mesma forma que as lightboxes de imagem padrão.

Configurações

Há apenas uma configuração. Você adiciona os domínios nos quais deseja ter essa funcionalidade.

:warning: Quaisquer domínios que você especificar aqui também precisam estar na lista de permissões na configuração do site allowed_iframes para aparecerem nas postagens.

Exemplos de uso:

Aqui estão alguns exemplos além do iframe do CodePen acima

Iframe do Google Forms:

Incorporando todo o site weather.gov:

Créditos:

Este componente utiliza a fantástica biblioteca Featherlight de Noël Bossart (licença MIT - 3kb gzip)

31 curtidas

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

5 curtidas

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 curtidas

@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 curtidas

Por que é apenas para desktop?

Tive um bug neste componente do tema; os conteúdos das postagens não estavam sendo exibidos.

Posso acionar a abertura de um iframe em qualquer link de forma simples?
O usuário verá o iframe apenas ao clicar no link.

1 curtida

Bom… essa acabou passando despercebida. Faz um tempo que não recebe atenção, e muito mudou no Discourse.

Melhor tarde do que nunca… :upside_down_face:

Acabei de fazer um push de uma atualização que deve corrigir todos os problemas.

Estará assim que você atualizar.

O componente agora é autocontido, sem solicitações externas.

Depois que você atualizar, funcionará também no mobile.

Deve estar corrigido após sua atualização.

Isso está fora do escopo deste componente. Você precisa de outro componente para lidar com isso.

Peço desculpas pelo atraso e agradeço o feedback :+1:

7 curtidas

Muito obrigado!

Não precisa se desculpar, é bom ver que você conseguiu dar um pouco de atenção a ele, entre todas as outras coisas que estão acontecendo. Nós realmente apreciamos.

1 curtida

Já existe um componente que pode abrir um lightbox de iframe em um link dessa forma?

Não estou ciente de nenhum componente existente que faça isso, então você teria que criar um ou encomendar esse trabalho na categoria Marketplace.

Este componente de tema verifica iFrame em uma postagem e compara seu atributo src com uma lista de fontes elegíveis fornecida pelo administrador nas configurações do componente. Se o domínio da fonte corresponder, ele adiciona o botão lightbox. A exibição do lightbox é tratada pelo featherlight.js. Featherlight escuta cliques em elementos com o atributo data-featherlight. Se um desses for clicado, ele abre o lightbox com o conteúdo desse iFrame.

Você pode fazer o mesmo com tags <a> em um componente diferente com um pouco de esforço. Se o href do link corresponder a um domínio listado nas configurações do componente, exiba-o em um lightbox de iframe. Caso contrário, deixe-o como um link normal. Você não quer que todos os links abram em um iframe com lightbox.

A maior parte do trabalho necessário já é tratada por este componente, então você pode simplesmente fazer um fork dele e começar a partir daí. Não há planos para adicionar esse recurso a este componente porque ele se destina apenas a lidar com tags iFrame em postagens.

3 curtidas

Aqui está um método para incluir um Lightbox iFrame dentro de um elemento de texto inline clicável…

O Discourse Footnotes Plugin aceita HTML, bem como Markdown dentro de notas de rodapé pop-up.

Então, por exemplo, este código…

… gera esta nota de rodapé pop-up clicável contendo um mini iFrame com o botão Expand content no canto superior direito…

Para fazer isso funcionar, eu (nas configurações do site) ativei tanto enable markdown footnotes quanto display footnotes inline

Então eu adicionei o nome de domínio desse site (microchic.com) à lista allowed iframes nas configurações do site…

… e também na lista de iframe origin domains nas configurações do iFrame Lightbox Plugin…

Você pode experimentá-lo ao vivo aqui…

Oi, estava me perguntando como você formata posts. Recebo uma caixa em branco usando

iframe src=" url" cercado por < > Isso acontece mesmo quando uso codepen.io, que está na lista de permissões de iframes do site principal.

Este componente ainda está funcionando? Costumava funcionar para mim no passado, mas parou de funcionar por algum motivo.

Parece que a última atualização foi há 3 anos: hnb-ku/discourse-iframe-lightboxes (github.com) Então é razoável supor que algo quebrou?

1 curtida

Estava funcionando em maio, pois usei aqui.

1 curtida

Funciona do meu lado com a versão mais recente do Discourse.

Há algum erro no console do navegador?

2 curtidas

Não consigo fazer isso funcionar, segui o guia precisamente e adicionei o domínio tanto ao componente do tema quanto à configuração do site. Eis o que recebo:

Nenhum erro registrado no console do desenvolvedor de JS.

A configuração do site allowed iframes tem o domínio de nível superior:

https://example.biz/

As configurações do componente do tema o têm sem https, conforme os exemplos existentes:

example.biz

Alguma ideia de como depurar?

1 curtida

sem erros no console.
Estou usando com pré-visualizações de PDF: Inline PDF Previews - #116 by Alon1
Espero obter as setas de expansão acima do PDF

Mas elas simplesmente não aparecem

Você pode tentar este fork em vez disso?

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

Você teve sorte antes se estava funcionando!

Ambos os TCs usam a mesma API para decorar uma postagem, então a ordem em que você os instala seria necessária. Além disso, a origem do iframe é definida dinamicamente assim que o PDF é baixado e pode não estar imediatamente disponível neste TC de IFrame Lightboxes.

As alterações que fiz são basicamente:

  • Procure por elementos iframe no próximo loop de execução, então o iframe tem garantia de estar disponível
  • Espere o iframe carregar para que você possa recuperar o URL de origem

Me diga se funciona melhor. :+1:

4 curtidas