Auto-Linkify Palavras

@danekhollas

Unfortunately I still have the issue. I tried changing the order of the regexes in the theme settings, yet the “shorter” entry is still triggered first.

Hello @jrgong! Were you able to do bulk uploads using a CSV file? Trying to figure it out but I’m not quite sure where to click. I am not a developer btw :smiley:

I am using this :slight_smile:

https://meta.discourse.org/t/discourse-linkify-google-sheets/163985/4

So do we. I note that:

discourse,https://discourse.org
discourse meta,https://meta.discourse.org
meta discourse,https://meta.discourse.org

Gives us:

discourse
discourse meta
meta discourse

The order that these are in the Theme Settings (and presumably the database beneath) doesn’t seem to make a difference. Rather, if you extend an existing linkified word, it will pick up the difference. If you add a word in front, it doesn’t.

1 curtida

Hmm, that’s a bit strange. You’re right, the order in the settings shouldn’t matter, because we sort the words by length:

https://github.com/discourse/discourse-linkify-words/blob/a516d488dc23f401a7062808b98a231af9a16ef1/javascripts/discourse-linkify/lib/utilities.js.es6#L99

Not sure how much time should be invested in this since AFAIK this feature is being ported to Discourse core.

4 curtidas

Hi,

Just noticed that the linkified words don’t have that click counter as other links have (which would be a nice feature to have, in my opinion). Is it on purpose or just a bug?

2 curtidas

can this be restricted to specific categories/tags so that a post would have to be in the category or tagged to generate links?

1 curtida

Is it possible to specify a title for the link? So “ghost” becomes “ghost (see warning!)”?

Possibly using markdown link syntax:

ghost,[ghost (see warning!)](https://warning.example.com)

Or specifying the title as a third parameter:

ghost,https://warning.example.com,ghost (see warning!)

@Paracelsus the click counter is not supported in this theme, sorry.

Not really a bug, the theme is only a JavaScript code running in your browser. It doesn’t talk to the server so there’s no way to store the number of clicks.

2 curtidas

Now in discourse under replace words:
/admin/customize/watched_words/action/replace

If I just enter the word and then just put the URL without any markdown, it works! So that is how to get it to work without the autolink theme component.

(Whereas in the theme component you put the word/phrase then a comma then the link to use, in watched word replace you enter the word in one field and JUST the link in another… do not try to enter markdown in the replacement string like I originally tried.)

4 curtidas

Ei, este é um ótimo componente! Obrigado por tê-lo feito.

Mas há um pequeno problema: parece que a linkificação requer um espaço após a palavra específica, então o componente não está funcionando bem em instâncias do Discourse em chinês e japonês (talvez também em coreano? Eu não conheço essa língua).

Sou falante nativo de chinês e também falo japonês. Em chinês, acontece que as pessoas usam algumas palavras emprestadas fixas em letras, como Apple, Office, BB (Blackboard), DNA, etc., cuja tradução raramente é usada na língua familiar. E geralmente não adicionamos um espaço antes/depois desse tipo de palavra quando ela está cercada por chinês, na escrita informal.

Este é um exemplo:

你会用Office吗?
Você sabe como usar o pacote Office?

É semelhante em japonês.

革新に満ちたAppleの世界へようこそ。(copiado do site oficial da Apple Japão)
Bem-vindo ao mundo da Apple, que é cheio de revoluções.

Estou ciente de que pode ser muito trabalho adaptar este componente para essas duas línguas, pois isso pode levar a linkificações não intencionais em línguas que usam o alfabeto. Então, estou apenas apontando a existência de uma pequena imperfeição. Agradeço novamente esta ótima ideia de criar este componente. :smiley_cat:

2 curtidas

Isso funciona muito bem. É possível executá-lo retroativamente, ou você precisa procurar todos os links manualmente e alterá-los?

Você deve ser capaz de reassarar essas postagens. Você pode clicar na chave inglesa e reconstruir o HTML. Quando você vir que funciona, você pode procurar por como reassarar tarefas rake de postagens correspondentes.

Na verdade, este tema cria links dinamicamente para posts quando eles são carregados no navegador, então não é preciso fazer nada. :slight_smile:

3 curtidas

Ah. Muito legal. Eu não tinha percebido, mas faz sentido.

3 curtidas

Nosso glossário de software de genealogia FOSS era muito extenso para uma Postagem ou Linkificação.

Se tivéssemos apenas linkificado cada termo do Glossário, então cada postagem se afogaria em um mar de links azuis. Os usuários provavelmente parariam de clicar nos links. E queríamos uma trilha de auditoria para o Glossário.

Então, eu linkifiquei “Glossário Gramps” para aquele artigo em nosso wiki com tecnologia MediaWiki. E agora uso uma anotação como “(ver [termo do glossário] no Glossário Gramps)”.

(Temos um 2º Glossário de Genealogia para terminologia genérica ao assunto Genealogia em vez de específica para nosso software.)

1 curtida

Algo foi feito para permitir pipes?

Atualmente estou usando isso como uma solução alternativa:
image


Além disso, existe uma maneira de excluir um mundo de ser linkificado quando ele está dentro de um “neto-neto-[…]filho” de uma classe excluída?
Estou construindo um fórum com uma categoria de Documentação e não quero palavras linkificadas nela porque seria redundante: palavras em outras categorias serão linkificadas e apontarão para tópicos nesta categoria de documentação.
Além disso, palavras linkificadas abrem em uma nova janela.

Portanto, isso não funcionou:
image

Aqui está um exemplo do problema que estou enfrentando. Esta é a parte de um texto dentro de um tópico de documentação.

Se eu clicar em 22° halo, ele abrirá uma página que leva para… A mesma página, no mesmo lugar.
Posso excluir palavras em títulos, especialmente porque ele contém uma tabela de conteúdo, mas os parágrafos seguintes não têm nenhuma classe específica. São parágrafos normais.


Talvez a configuração de classe excluída possa aceitar seletores CSS?
Por exemplo, d-toc-cooked > *


editar: Também não consigo entender por que isso não funciona, já que minha palavra é um filho direto de uma classe excluída:

image

O “22° Halo” ainda está linkificado:

<h3 id="toc-h3-22-halo" data-d-toc="toc-h3-22-halo" class="d-toc-post-heading">
    <a name="h-22-halo-7" class="anchor" href="#h-22-halo-7"></a>
    <a href="https://discourse.canapin.com/t/ice-halos-information-and-list/28#h-22-halo-7" rel="nofollow" target="_blank" class="linkify-word no-track-link">22° Halo</a>
</h3>

É porque o código HTML da tabela de conteúdo pode ser gerado depois da “linkificação”?

1 curtida

Sim, provavelmente é esse o problema aqui, ambos são componentes JavaScript, então você tem uma condição de corrida e o resultado dependerá de qual deles é executado primeiro.

4 curtidas

Eu adicionei uma classe na lista de permissões do HTML para contornar o problema.

No entanto, poder ter um botão com atributos excluídos poderia permitir mais flexibilidade para evitar que palavras sejam transformadas em links, usando o atributo HTML data-(qualquer coisa) integrado, já que ele é permitido por padrão no Discourse.

Exemplo:
<span> text </span><span> text </span>

Um pull request seria aceito se eu conseguisse adicionar isso ao componente de tema?

1 curtida

Isso, infelizmente, impede a criação de links para palavras que incluem explicitamente qualquer um desses caracteres (especialmente ., que é útil para vincular abreviações como ID.1 ou id2.5).

Isso talvez seja melhor corrigido no núcleo, mas por enquanto, aqui está um PR que corrige os problemas acima:

https://github.com/discourse/discourse-linkify-words/pull/21

Regra de regex de exemplo (corresponderá a id1.1 a id10.100 (incluindo variações id m.n, IDm.n e ID m.n))

/(ID¦id)\\s?(([1-9]¦10)\\.([1-9]¦[1-9][0-9]¦100))/, https://example.com/id$2