Ce composant de thème ajoute un bouton de copie aux blocs de code dans les publications Discourse — idéal pour les communautés partageant des exemples de code ou des articles de base de connaissances nécessitant la copie de texte.
Sur ordinateur, le bouton de copie apparaît au survol du bloc.
Sur mobile, le bouton de copie est toujours affiché, mais il repousse le code vers le bas dans le bloc pour éviter de masquer la première ligne de code si elle est trop longue.
Notez que cela ne fonctionne que pour les blocs de code générés par ```, et non pour les blocs de code en ligne.
Ceci est un bloc de code.
Copiez ce texte.
Ceci est un bloc de code en ligne. La copie ne fonctionne pas ici.
Un grand merci à @j.jaffeux qui a réalisé une grande partie du développement initial de cette fonctionnalité.
Je me demandais si nous étions ouverts à l’idée de remplacer le texte localisé « copier » / « copié » par des icônes ? Peut-être l’icône de copie pour « copier » et l’icône de coche pour « copié » ?
Je suis ouvert à l’idée d’ajouter un paramètre au composant. La raison pour laquelle j’ai opté pour du texte localisé est qu’il est clair ce qui se passe, et en plus, le texte peut avoir une hauteur plus réduite tout en restant lisible. L’esthétique semblait mieux correspondre au cas d’usage.
Quelques bugs liés aux anciennes versions de Discourse, qui ne disposent pas de @ember/runloop et de Promise de la bibliothèque rsvp, ont également été corrigés. (Merci à @jomaxro pour les rapports à ce sujet)
J’adore ça ! Mais est-ce que le bouton de copie pourrait n’être visible qu’au toucher sur mobile ? Je suis un peu déçu par la perte constante d’espace d’écran sur mobile, avec une ligne supplémentaire pour chaque bloc de code :
comme c’est une option, vous ne l’activeriez que sur des sites où copier des blocs de code est une activité courante
… cela étant dit .. les chances qu’un bloc de code donné soit copié sur mobile sont infimes, donc je trouve que le ratio entre l’interface utilisateur et l’utilisation n’est pas bon ici, et je préférerais un affichage au toucher pour mobile ?
Nous avions cela à l’origine, mais cela chevauchait le texte sans pouvoir le voir. J’aime l’idée qu’il devienne visible au toucher. Je vais m’y pencher.
Sur mobile, c’est un compromis bien meilleur, et de loin. Sur ordinateur portable, ordinateur de bureau ou tablette, l’espace supplémentaire occupé est tout à fait acceptable.
J’aimerais beaucoup utiliser cet outil, mais dès que je l’ai activé pour mon thème Grey Amber, mon site est devenu lent et parfois non réactif jusqu’à ce que je le désactive.
Quelqu’un a-t-il rencontré ce comportement, ou cela peut-il trop solliciter le VPS lorsqu’il est activé ?
Le site est composé à 99,9 % de lignes de code simples, et j’espérais pouvoir les convertir en blocs de code. Donc, il ne devrait pas s’agir de récupérer du code existant pour le convertir. Ou si ?
Dois-je lui laisser un certain temps pour se stabiliser ? Il a continué à rendre le site temporairement inaccessible, et parfois, lorsqu’une page se chargeait, un message d’erreur s’affichait avec la suggestion « réessayer » de Discourse.
Petit bug : le texte « copier » peut apparaître dans une citation. (Beaucoup moins grave que le post précédent.)
Le button.copy-cmd doit être exclu de la citation. L’application de user-select: none dans le CSS corrige Ctrl-C mais pas la fonctionnalité de citation.
J’ai donc apporté plusieurs modifications ici. Étant donné que nos problèmes étaient les suivants :
l’espace écran sur mobile
le bug de copie de texte sur les citations
et que nous avions reçu des demandes pour avoir une icône à la place du texte
La solution évidente résolvant tout cela… était d’utiliser une icône.
Sur mobile, il est maintenant acceptable de la placer à droite, car elle prend moins de place et nous pouvons simplement ajouter un peu de padding pour le texte :
Seule petite gêne : sur les premières lignes très longues, elle sera cachée derrière le bouton. Je pense que c’est acceptable étant donné que vous pouvez faire défiler :
Concernant le bug de performance potentiel, j’ai testé une page avec des dizaines de blocs de code et je n’ai rencontré aucun problème. Il me faudra donc une reproduction avant de pouvoir agir @lcestou, s’il vous plaît.
Essayez le nouveau bloc de code ici :
rsync -a file.txt file_backup.txt
rsync -a /var/www/public_html/ /var/www/public_html_backup/
Cette fonctionnalité est désormais intégrée au cœur de Discourse
Par conséquent, ce composant de thème est désormais OBSOLÈTE. Il continuera de fonctionner sur les anciennes instances de Discourse, mais ne recevra plus aucune mise à jour.
J’ai mis à jour le premier message pour refléter ces informations.