Nous sommes en train de migrer une grande communauté sur Discourse depuis vb3.
De nombreux noms d’utilisateur - environ 1 200 - contiennent le point d’exclamation “!” et je n’ai trouvé aucune option pour le réactiver.
Nous avons déjà activé les “noms d’utilisateur unicode” sans succès.
Existe-t-il une solution toute prête pour ce problème ?
Non. Changer les caractères légaux dans les noms d’utilisateur n’est pas vraiment une option. Je pense qu’ils devront avoir des noms d’utilisateur moins excitants.
Je n’ai pas pris la décision, mais il existe de nombreux systèmes pour lesquels un ! n’est pas un caractère valide pour un nom d’utilisateur. Il y a de fortes chances que si vous essayiez de l’autoriser dans un plugin (ou un fork, ce qui serait une très, très mauvaise idée si vous voulez à nouveau mettre à jour Discourse), ce sera difficile.
Le ! a des significations spéciales dans un certain nombre de contextes et je soupçonne que si vous changez simplement le validateur de nom d’utilisateur, un tas d’autres choses casseront.
Je comprends. C’est cependant quelque chose qui devrait être abordé. Toutes les autres solutions BB autorisent ce caractère dans le nom d’utilisateur et il est courant dans les communautés de jeu. Le nom d’utilisateur et l’identifiant utilisateur doivent être conservés comme entités distinctes afin de ne pas avoir de telles limitations. Nous avons environ 95 000 membres et contacter 1 200 d’entre eux pour changer leur nom d’utilisateur va être un vrai casse-pieds. Merci quand même pour votre aide !
J’ai effectué des dizaines, peut-être plus d’une centaine d’importations. Je prête une attention particulière aux personnes qui posent des questions sur les importations ici. C’est la première fois dont je me souvienne que quelqu’un s’en plaigne.
Vous pouvez dire à tout le monde d’essayer à la fois leur nom d’utilisateur et leur adresse e-mail (beaucoup d’entre eux ne le sauront pas non plus). Il est fort probable que d’autres noms d’utilisateur aient changé.
Ceci vous donnera tous les noms d’utilisateur qui ont changé :
Ce sera probablement beaucoup plus que de simples points d’exclamation. Cela semble être une limitation étrange, puisque vous pouvez utiliser ces caractères n’importe où ailleurs.
Il convient de souligner que les noms et les noms d’utilisateur ne sont pas la même chose. Les noms d’utilisateur sont utilisés dans les chemins d’URL, par exemple :
https://meta.discourse.org/u/pfaffman/summary
Un point d’exclamation n’est pas un caractère valide dans une URL, tandis que des caractères tels que ?& ont des objectifs spéciaux dans la structure de l’URL et ne peuvent donc pas non plus faire partie d’un nom d’utilisateur. Ceci n’est pas spécifique à Discourse, tout système qui utilise le nom d’utilisateur dans la structure de l’URL doit le respecter.
Un nom d’utilisateur ne peut pas contenir de point d’exclamation, mais le nom peut en contenir, ce que vous pouvez prioriser dans l’interface utilisateur.
En plus de cela, les noms d’utilisateur sont destinés à être utilisés dans les @mentions, et donc on s’attend à ce que les noms d’utilisateur soient simples et faciles à taper ; c’est pourquoi nous n’autorisons que les caractères ASCII par défaut (bien que cela puisse être étendu à l’unicode par le paramètre unicode_usernames, mais toujours sans ponctuation).
Notez que ce script de migration utilise la classe de base du script de migration non en masse, qui fait ceci avec chaque enregistrement d’utilisateur généré par la méthode que vous avez liée :
qui supprime tous les caractères invalides des noms d’utilisateur.
Il existe de nombreux endroits dans le code qui supposent certaines choses sur les noms d’utilisateur (analyse des @mention, changement de noms d’utilisateur, etc.), c’est la raison pour laquelle nous appliquons ces restrictions.
Comme le dit Stephen, les noms d’utilisateur ne sont pas l’endroit pour montrer la personnalité de l’utilisateur ; les champs nom et flair le sont
Il y a encore pas mal de cas limites qui sont difficiles à gérer de cette façon.
Les noms ne sont pas uniques, si nous donnons la priorité dans la mise en page au nom, vous pouvez imaginer comment cela se passerait dans un forum plein d’adolescents immatures qui jouent et trollent toute la journée
Il est parfaitement acceptable de dire que cela pourrait être un problème de faible priorité, mais c’est quelque chose qui pourrait clairement bénéficier d’une réflexion et d’un travail, et certainement pas d’une « fonctionnalité » ou de quelque chose qui donne un avantage par rapport à la possibilité de choisir un nom unique sans restrictions fortes comme tout autre logiciel de forum qui existe depuis longtemps.
Voudriez-vous partager certains des projets de CMS open source que vous avez utilisés ? Nous pourrions y jeter un œil et voir comment ils gèrent les permaliens et les références utilisateur, apprendre de leurs efforts.
Bien que… je me demande si les systèmes de gestion de contenu sont exactement dans le même panier que les forums communautaires ?
vBulletin 3 n’a pas ces fonctionnalités et vBulletin 5… Je ne sais pas s’il a cette fonctionnalité car c’est un logiciel qui est clairement à la traîne en termes de fonctionnalités modernes.
Lorsque vous mentionnez quelqu’un sur Discourse, une suggestion automatique apparaît. Pas besoin de s’inquiéter de devoir taper le pseudonyme complet.
Edit : Finalement, cela signifie que la suggestion décode la liste des noms d’utilisateur avant de la suggérer si vous le souhaitez vraiment, ou encode l’entrée (l’utilisateur qui écrit la partie) afin qu’elle puisse rechercher le nom d’utilisateur de manière appropriée.
Je veux dire, nous pouvons discuter de la quantité de travail et d’efforts que cela demande, mais pas de savoir si c’est possible.
Dans tous les cas, je ne sais pas si c’est juste le média qui est mauvais pour transmettre l’ambiance, mais toutes ces réponses récentes semblaient un peu “hostiles”. Les gens viennent sur meta.discourse pour demander de l’aide et suggérer des améliorations. Si vous n’êtes pas d’accord, vous pouvez simplement ignorer le fil de discussion et passer à autre chose.
Aussi, j’ai oublié d’ajouter. Si des PRs sont ouverts pour Discourse, je peux essayer de travailler dessus dans un fork et ouvrir un PR. Bien que je ne sois pas un développeur Ruby, j’ai plusieurs années d’expérience en tant qu’ingénieur logiciel / ingénieur plateforme. Je serais ravi d’essayer de contribuer
Juste une mise à jour pour la postérité, ! ne sont pas interdits dans les URL comme mentionné ci-dessus. Je ne sais pas d’où vient cette idée.
Cependant, Ruby semble utiliser ? et ! dans ses fonctions, ce qui est une chose étrange à dire honnêtement (du moins dans mes 20+ années d’ingénierie logicielle), mais chaque langage a ses propres particularités
Ce qui pourrait expliquer pourquoi ! est interdit. Je devrai creuser plus profondément dans le code source de Discourse pour comprendre s’il s’agissait d’un problème spécifique qui ne pouvait pas être résolu ou simplement de quelque chose qui a été interdit avec trop d’enthousiasme pour éviter des problèmes potentiels entre les noms d’utilisateur et Ruby devenant fou dans certains cas extrêmes.
Désolé de déterrer ce vieux fil de discussion, mais j’ai le même problème et je suppose que |, [ et ] sont également des caractères illégaux pour les noms d’utilisateur et ne peuvent pas être activés d’une manière ou d’une autre ?
Je suis sur le point de migrer un ancien forum de jeu de phpBB3 vers Discourse et de nombreux noms d’utilisateur sont comme Clan|Nickname ou [Clan]Nickname.
Je modifierais le script pour rechercher ces caractères et les remplacer par un caractère légal comme _ ou -. Je pense que cela les supprimera simplement. Vous pouvez examiner le code du nom d’utilisateur suggéré.
Lorsque j’ai migré mon premier forum vers Discourse, j’ai remarqué que les caractères illégaux, à commencer par les espaces vides, mais aussi d’autres, étaient remplacés par _. Mais sur ce forum, le caractère illégal le plus courant était l’espace vide et pas très souvent, donc ce n’était pas le problème que cela pourrait être maintenant. Quoi qu’il en soit, cela ne peut pas être un obstacle. Peut-être que j’entrerai l’ancien nom d’utilisateur dans le champ nom. On verra - quand j’aurai résolu l’autre problème, à savoir que mon conteneur d’importation ne se construit pas…