Icône Discourse

:discourse2: Résumé Discourse Icon vous permet d’utiliser des icônes de votre sous-ensemble d’icônes SVG dans un message.
:eyeglasses: Aperçu Aperçu sur Discourse Theme Creator
:hammer_and_wrench: Lien du dépôt https://github.com/discourse/discourse-icon
:open_book: Nouveau dans les thèmes Discourse ? Guide de démarrage pour l’utilisation des thèmes Discourse

Installer ce composant de thème

Fonctionnalités

Utilisation :

[wrap=icon id=square][/wrap]

Exemple :
Voici l’icône et l’icône .

Voici l'icône [wrap=icon id=far-square][/wrap] et l'icône [wrap=icon id=pencil][/wrap].

Remarque : si l’icône ne s’affiche pas, c’est qu’elle n’est pas incluse dans votre sous-ensemble. Si vous êtes administrateur, vous pouvez l’ajouter dans les paramètres de votre site : sous-ensemble d'icônes SVG.


:discourse2: Hébergé par nous ? Les composants de thème sont disponibles pour une utilisation sur nos offres Standard, Business et Entreprise.

31 « J'aime »

Super ! C’est emblématique !

(meta propose énormément de thèmes, mais heureusement, grâce à @kris.kotlarek, nous avons un bouton « Ajouter à tous les thèmes »… il faut encore trier la progression là-dessus, car cela prend un certain temps pour faire son effet.

13 « J'aime »

Oui, je ne voulais pas l’ajouter à tout pour l’instant, car je viens juste de finir le codage :grin:, mais je vais le faire maintenant.

Édit : oh, c’est déjà fait.

10 « J'aime »

Merci, c’est super amusant ! :sunglasses:

Je n’ai jamais vraiment utilisé les balises BB, ni codé manuellement FontAwesome, donc la pratique d’utiliser une paire de balises vides m’a toujours semblé étrange. Est-ce une convention populaire, ou y a-t-il une raison technique liée au web pour utiliser des paires de balises ? De plus, peut-on placer du contenu entre elles ? Cela affecte-t-il le texte ?

3 « J'aime »

Il y a plusieurs causes ici.

Premièrement, lorsque j’ai écrit la fonctionnalité BBCode wrap, @sam m’a explicitement demandé de prendre en charge 3 formats :

[wrap=foo][/wrap]
[wrap=foo]bar[/wrap]
[wrap=foo]
bar
[/wrap] 

Cela est fait pour être cohérent avec notre utilisation existante de BBCode dans Discourse.

J’aurais pu avoir une syntaxe meilleure comme : [icon=times], mais cela aurait dû être un plugin et non un composant de thème.

Comme expérience, je pense que c’est bien tel que c’est aujourd’hui, et si les gens l’utilisaient beaucoup, nous pourrions envisager d’avoir un plugin qui le fait avec une syntaxe plus concise.

Une autre idée que j’ai eue est d’ajouter une API pour ajouter des symboles de complétion automatique dans le compositeur, tout comme nous en avons pour les utilisateurs/catégories/émojis… Mais j’ai peur que ce soit un cauchemar avec plusieurs composants choisissant leur propre symbole…

5 « J'aime »

Ah ! Je dois ajouter la prise en charge d’un autre bbcode et ceux-ci. Je pensais utiliser cela comme point de départ, mais vous dites que le traitement des enveloppes est géré dans le cœur, ce qui explique pourquoi je ne parviens pas à trouver comment votre composant de thème le gère.

Ma solution actuelle consiste à utiliser le composant « mots liés » et une regex moche, mais je continue à avoir du mal à ajouter les classes nécessaires aux liens.

3 « J'aime »

Oui, lisez ce sujet pour en savoir plus :

4 « J'aime »

Bon, je l’ai examiné une douzaine de fois. J’ai même imprimé le code de votre composant et je l’ai fixé pendant des heures, essayant de comprendre dans quelle mesure c’est du JavaScript ou d’Ember que je ne comprends pas. Je ne peux pas ajouter une balise [foo] sans plugin ? Ou puis-je d’une manière ou d’une autre remplacer wrap dans votre code par foo pour couvrir mon nouveau BBCode ?

1 « J'aime »

Non, ce n’est pas possible, car une partie du traitement se fait côté serveur. Si vous souhaitez créer votre propre BBCode personnalisé, vous devrez développer un plugin et examiner, par exemple, la manière dont l’élément wrap est implémenté :

https://github.com/discourse/discourse/blob/master/app/assets/javascripts/pretty-text/engines/discourse-markdown/d-wrap.js.es6

5 « J'aime »

Merci ! Ça commence à prendre du sens. Je n’avais pas eu autant de mal à apprendre un nouveau langage depuis le C++ et l’Objective Pascal en 1990.

Mon hack regex actuel fonctionne presque. Je vais devoir décider s’il faut passer par l’approche des plugins ou rester avec mon hack (et trouver comment ajouter les classes).

Du moins, je comprends maintenant pourquoi je ne trouvais pas ce wrap dans le composant du thème !

3 « J'aime »

Je peux imaginer quelques dispositions de syntaxe possibles à ajouter au plugin wrap pour cela :

[wrap=foo /]
[wrap/=foo]

(en imitant les balises auto-fermantes du XML), mais elles sont toutes les deux assez laides :confused:

Quelqu’un a-t-il des idées géniales pour quelque chose qui ait l’air correct ?

3 « J'aime »

Je ne suis pas vraiment fan de ça :confused:

6 « J'aime »

J’ai trouvé un gros bug…

Si vous utilisez un « icon wrap » puis que vous mettez en surbrillance la citation, l’image résultante est énormément agrandie :

  • Utilisez un « icon wrap » dans une phrase d’une publication. Par exemple : Ceci est une icône [wrap=icon id=far-check-square][/wrap]
  • Mettez en surbrillance le texte pertinent et cliquez sur « Citer »
  • L’icône devient super grande dans l’extrait cité

Voici à quoi ressemble la syntaxe lorsqu’elle est citée en surbrillance :

[quote="JammyDodger, post:1, topic:294, full:true"]
Ceci est une icône ![](/svg-sprite/grumpy.jammydodger.monster/icon/222222/far-check-square.svg)
[/quote]

Ceci est une réponse où elle devient énorme

Cependant, la citer en utilisant la bulle de dialogue dans la barre de format fonctionne très bien.

4 « J'aime »

Comment faites-vous pour mettre en surbrillance la citation de l’icône ? Sur mon site de test, l’icône est ignorée.

Je ne suis pas sûr ? J’utilise juste la souris.

Quel navigateur utilisez-vous ?

En utilisant la souris, j’ai testé avec Chrome et Firefox, et je n’ai pas pu sélectionner l’icône. :thinking:


EDIT :

Si vous encapsulez une icône indisponible dans le sous-ensemble actuel, cela créera une image SVG à la place.
Ensuite, vous pourrez la citer.

2 « J'aime »

Pouvez-vous fournir un exemple ? Votre capture d’écran montre une case à cocher cochée et je n’ai aucun problème à la sélectionner sur mon instance de test (ainsi que d’autres icônes probablement non utilisées par Discourse comme x-ray).

2 « J'aime »

Je vois le problème. Le composant recherche en vérifiant s’il existe un wrapper avec la classe d-wrap ; mais il n’y a pas de wrapper si l’icône fournie ne provient pas du sous-ensemble. Il crée une image en SVG à la place.

Par exemple :

SVG, icône dans le sous-ensemble

Image en SVG, icône non incluse dans le sous-ensemble

Si vous citez les images, le composant ne fait rien, car il n’y a pas de wrapper (et l’image est convertie en markdown, ce qui donne une image sans aucune classe)

1 « J'aime »

Est-ce que cela signifie que je dois avoir un champ svg_icons dans settings.yml disponible dans mon thème ? Ou pourrais-je utiliser n’importe quel champ svg_icons disponible à partir de n’importe quel composant de thème activé ? Et si tel est le cas, serait-il judicieux d’ajouter ce champ à ce composant de thème ?

svg_icons:
  default: ''
  type: 'list'
  list_type: 'compact'

Parce que d’après mon expérience, les icônes SVG sont transformées en balises <img /> et elles n’héritent pas de currentColor lorsque le schéma de couleurs est modifié :
Veuillez comparer le paragraphe Exemple :

2 « J'aime »

Le rendu en mode sombre pourrait-il être amélioré ?

J’aimerais avoir les mêmes couleurs que dans l’interface :

3 « J'aime »