Sim, se você seguisse totalmente essa direção, teria que abrir mão da capacidade de editar conteúdo no Discourse em prol da integridade completa do HTML.
Eu estava pensando que poderia haver algum meio-termo, onde você aplicasse essa abordagem apenas às tags img em postagens HTML importadas.
Mas agora estou me questionando. Fazer isso de forma seletiva exigiria alterações em várias partes do processamento de postagens.
Sim, acho que essa é provavelmente a melhor opção. Eu comecei a trabalhar nisso em junho de 2020, mas acabou sendo um trabalho enorme, e precisei seguir para outros projetos. Eu tinha algumas abordagens para permitir URLs upload:// em tags <img… nenhuma delas é perfeita. Segundo minhas anotações:
Implementação 1:
Na pipeline de markdown, analisar o conteúdo de cada html_block (um pouco abusando da biblioteca xss.js) e processar qualquer tag de imagem com atributos src upload://.
Prós: tudo na pipeline de markdown, faz esse processamento apenas nos tokens html_block
Contras: meio que fazendo uso indevido do sanitizador xss.js. Pode não ser um analisador HTML5 perfeito
Essa opção poderia ser melhorada usando uma implementação DOM JavaScript compatível com padrões (por exemplo, jsdom) no servidor, mas isso parece bastante pesado.
Implementação 2:
Permitir atributos src upload:// ao longo de toda a pipeline de markdown e substituí-los depois. No cliente, isso é realmente bastante simples — já estávamos substituindo URLs upload:// de forma assíncrona após o cozimento. No servidor, isso faz uma etapa extra de processamento usando Nokogiri.
Prós: o analisador é compatível com os padrões HTML5
Contras: implementação diferente no cliente/servidor, torna a pipeline um pouco mais complexa
Acho que a opção 2 é provavelmente o caminho a seguir. Teremos então que atualizar o job pull_hotlinked_images para manter as tags <img, sem substituí-las por Markdown. Espero conseguir encontrar tempo para voltar a isso em breve
Realmente não estou entendendo a complicação aqui. Claramente, a tag HTML de imagem está sendo substituída por markdown — por exemplo, . Por que não simplesmente incluir duas quebras de linha antes do !? Isso faria com que renderizasse corretamente e permitiria que o recurso de upload de imagem funcionasse, evitando imagens quebradas e problemas entre sites.
Existe alguma situação do mundo real, não teórica, em que esse espaço em branco poderia causar um problema? Esse problema é pior do que o estado atual do plugin, onde “as imagens simplesmente ficam quebradas o tempo todo”?
@david, você observa que “a solução com quebra de linha provavelmente não acontecerá” porque “o ponto principal para nós é manter a integridade do conteúdo”. Mas o conteúdo já está sendo alterado pela inserção das tags em primeiro lugar. Eu… realmente não entendo como isso pode ser de alguma forma melhor.
No momento, todas as vezes que alguém inclui uma imagem em sua postagem no WordPress, as imagens retornam quebradas, e frequentemente tenho que lidar com comentários do tipo “as imagens estão quebradas”, agora muitas vezes seguidos por respostas do tipo “sim, é porque o Discourse é ruim”. Gostaria de evitar ambas essas coisas.
Entendo que a configuração “não baixar imagens” pode ser uma solução alternativa, mas na verdade eu quero que as imagens sejam baixadas, então espero que isso possa ser apenas uma correção temporária.