API vs. Formulário: Incompatibilidade de Conteúdo ao Editar

Olá,

Acabei de notar que quando posto conteúdo HTML usando a API posts.json e depois edito a postagem, vejo o HTML no conteúdo da postagem.

Como a postagem é exibida:

Quando clico em editar:

Requisição da API:

Quando posto diretamente pelo formulário, nenhum HTML aparece na edição (a exibição é a mesma):

Como posso evitar ter HTML no conteúdo quando a postagem é editada?

Obrigado :slight_smile:

Olá Luicid :wave:
O conteúdo bruto, que é exibido no editor, aceita uma matriz de tags HTML, assim exibirá em texto simples.

Se você quiser adicionar uma quebra de linha sem usar uma tag <br>, use \n em vez disso. :slight_smile:

Primeira linha\nNova linha

Se você quiser ter dois parágrafos, você precisa adicionar uma quebra de linha adicional:

Primeira linha\n\nNova linha

Editar estas mensagens não mostrará nenhuma tag <br>.

Observação: os parágrafos são criados automaticamente dependendo do contexto quando a postagem é processada, portanto, não há necessidade de adicionar essas tags à sua entrada bruta de consulta.

Oi novamente Canapin :slight_smile:

Ok, entendi. Então a única opção para ter uma exibição limpa quando os usuários editarem suas postagens HTML migradas via API é substituir todas as tags <p> e <br> por \n, se eu entendi corretamente?

Obrigado

Se você tentar higienizar algum conteúdo HTML importado, suponho que você também possa substituir parágrafos por quebras de linha, assim você terá certeza de que há quebras de linha e a postagem será processada corretamente.

<p>some text</p><p>some other text</p>

tornar-se-ia:

\nsome text\n\nsome other text\n

E será renderizado como:


some text

some text


Ok, obrigado :slight_smile:
Última pergunta:
Existe alguma maneira de me dizer como adicionar uma menção, como esta: @Canapin, em uma postagem via API? Tentei usar @username no campo raw, mas não funcionou.

Certifique-se de enviar um payload JSON.

{
    "raw": "Menção de teste: @canapin",
    "topic_id": 86,
    "reply_to_post_number": 3
}

O resultado é uma menção funcional:

Se você estiver importando um monte de dados, deve usar um script de importação. Muitos deles têm exemplos de remoção de HTML e tratamento de aspas e menções.

Se você quiser adicionar dados continuamente a um site existente, use a API.

Ah, entendi meu erro! Eu estava testando com um nome de usuário em minúsculas em vez de usar o nome de usuário exato, pois a menção diferencia maiúsculas de minúsculas. Peço desculpas.

Obrigado por dedicar seu tempo para me ajudar! :wink:

Tenha um bom dia!

Sinceramente, criei um POC com um script de importação em Ruby, mas como preciso sincronizar dados por vários dias entre uma solução antiga e o Discourse, prefiro executar um script Python simples. É muito mais rápido de configurar e manter. Além disso, é consistente, pois extraio os dados antigos com Python. O provedor anterior não nos concederá acesso ao banco de dados, então extraí todo o conteúdo para um banco de dados.

Mas, é claro, é uma solução melhor se for uma migração simples :slight_smile:

Menções devem funcionar mesmo se alterarmos a capitalização:

image

A captura de tela em sua primeira postagem usa form-data. Você deve usar um campo raw com formatação JSON. :slight_smile: