Auto-Linkify Mots

@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 « J'aime »

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

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

4 « J'aime »

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 « J'aime »

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 « J'aime »

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 « J'aime »

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 « J'aime »

Salut, c’est un super composant ! Merci de l’avoir créé.

Mais il y a un petit problème, il semble que la création de liens nécessite un espace après le mot spécifique, donc le composant ne fonctionne pas bien dans les instances Discourse en chinois et en japonais (peut-être aussi en coréen ? Je ne connais pas cette langue).

Je suis de langue maternelle chinoise et je parle aussi japonais. En chinois, il arrive que les gens utilisent des mots empruntés fixes dans les lettres, comme Apple, Office, BB (Blackboard), ADN, etc., dont la traduction est rarement utilisée dans la langue familière. Et nous n’ajoutons généralement pas d’espace avant/après ce type de mot lorsqu’il est entouré de chinois, dans l’écriture informelle.

Voici un exemple :

你会用Office吗?
Savez-vous utiliser la suite Office ?

C’est similaire en japonais.

革新に満ちたAppleの世界へようこそ。(copié du site officiel d’Apple Japon)
Bienvenue dans le monde d’Apple, plein de révolutions.

Je suis conscient que l’adaptation de ce composant pour ces deux langues pourrait demander beaucoup de travail, car cela pourrait entraîner des créations de liens involontaires dans les langues utilisant l’alphabet. Je signale donc simplement l’existence d’une petite imperfection. J’apprécie encore cette excellente idée de créer ce composant. :smiley_cat:

2 « J'aime »

Cela fonctionne très bien. Est-il possible de l’exécuter rétroactivement, ou devez-vous rechercher manuellement tous les liens et les modifier ?

Vous devriez pouvoir refaire cuire ces publications. Vous pouvez cliquer sur la clé à molette et reconstruire le HTML. Lorsque vous voyez que cela fonctionne, vous pouvez rechercher comment refaire cuire les publications correspondantes à la tâche de cuisson.

En fait, ce thème transforme les liens des publications dynamiquement lorsqu’elles sont chargées dans le navigateur, il n’y a donc rien à faire. :slight_smile:

3 « J'aime »

Oh. Très cool. Je ne m’en étais pas rendu compte, mais c’est logique.

3 « J'aime »

Le glossaire de notre logiciel de généalogie FOSS était trop étendu pour un article ou une mise en lien.

Si nous avions simplement mis en lien chaque terme du glossaire, chaque publication serait noyée dans une mer de liens bleus. Les utilisateurs seraient susceptibles d’arrêter de cliquer sur les liens. Et nous voulions une piste d’audit pour le glossaire.

J’ai donc mis en lien « Glossaire Gramps » vers cet article sur notre wiki propulsé par MediaWiki. Et j’utilise maintenant une annotation comme « (voir [terme du glossaire] dans le Glossaire Gramps) »

(Nous avons un 2e Glossaire de généalogie pour la terminologie générique au sujet de la généalogie plutôt que spécifique à notre logiciel.)

1 « J'aime »

Quelque chose a-t-il été fait pour autoriser les pipes ?

J’utilise actuellement ceci comme solution de contournement :
image


De plus, existe-t-il un moyen d’exclure un monde de la création de liens lorsqu’il se trouve dans une classe exclue imbriquée plusieurs fois ?
Je construis un forum avec une catégorie Documentation, et je ne veux pas que les mots soient transformés en liens dans cette catégorie car ce serait redondant : les mots dans d’autres catégories seront transformés en liens et pointeront vers des sujets de cette catégorie de documentation.
De plus, les mots transformés en liens s’ouvrent dans une nouvelle fenêtre.

Donc, ceci n’a pas fonctionné :
image

Voici un exemple du problème auquel je suis confronté. C’est la partie d’un texte à l’intérieur d’un sujet de documentation.

Si je clique sur 22° halo, cela ouvrira une page qui renvoie vers… La même page, au même endroit.
Je peux exclure des mots dans les titres, surtout parce qu’il contient une table des matières, mais les paragraphes suivants n’ont pas de classe spécifique. Ce sont des paragraphes ordinaires.


Peut-être que le paramètre classe exclue pourrait accepter des sélecteurs CSS ?
Par exemple, d-toc-cooked > *


edit : De plus, je n’arrive pas à comprendre pourquoi cela ne fonctionne pas étant donné que mon mot est un enfant direct d’une classe exclue :

image

Le « 22° Halo » est toujours transformé en lien :

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

Est-ce parce que le code HTML de la table des matières pourrait être généré après la « transformation en lien » ?

1 « J'aime »

Oui, c’est probablement le problème ici, ce sont tous deux des composants JavaScript donc vous avez une condition de concurrence et le résultat dépendra de celui qui s’exécute en premier.

4 « J'aime »

J’ai ajouté une classe dans la liste autorisée HTML donc j’ai contourné le problème.

Cependant, pouvoir avoir un bouton attributs exclus pourrait permettre plus de flexibilité pour empêcher la création de liens à partir de mots, en utilisant l’attribut HTML intégré data-(n'importe quoi) puisqu’il est autorisé par défaut dans Discourse.

Exemple :
<span> text </span><span> text </span>

Une demande de tirage serait-elle acceptée si je parvenais à ajouter cela au composant de thème ?

1 « J'aime »

Cela empêche malheureusement la création de liens pour les mots qui incluent explicitement l’un de ces caractères (en particulier le ., qui est utile pour lier les abréviations comme ID.1 ou id2.5).

Ceci est peut-être mieux corrigé dans le cœur du système, mais en attendant, voici une PR qui corrige les problèmes ci-dessus :

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

Exemple de règle regex (correspondra à id1.1 à id10.100 (y compris les variations id m.n, IDm.n et ID m.n))

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