Plugin de champ utilisateur multisélection cassé ?

Il est possible que cela soit dû à la récente mise à jour de Discourse (actuellement en version 2.5.0.beta2).

J’utilise un champ multisélectif qui était auparavant configuré et fonctionnel, et défini comme modifiable après l’inscription, etc.

Cependant, pour les utilisateurs existants, bien que le contenu de ce champ s’affiche sur leur page de profil, il n’apparaît plus parmi les autres champs personnalisés modifiables dans leur page de préférences utilisateur. Autrement dit, il n’existe plus de moyen pour l’utilisateur ou l’administrateur de le modifier.

De plus, pour les nouveaux utilisateurs s’inscrivant, bien que le champ multisélectif soit visible, aucune des options du menu déroulant n’est désormais disponible/affichée (on ne voit qu’un fin rectangle bleu vide). Comme ce champ est défini comme obligatoire, l’inscription ne peut pas se poursuivre.

S’agit-il d’un problème connu ? Est-il confirmé que la mise à jour de Discourse en est la cause ? Sait-on quelle est la version de Discourse la plus récente compatible ? Existe-t-il une méthode raisonnable pour revenir à cette version ?

J’ai publié un rapport sur GitHub, mais je constate que le plugin n’a fait l’objet d’aucune activité de développement depuis quelques années, je ne suis donc pas optimiste quant à une solution venant de ce côté-là. Existe-t-il d’autres moyens (fonctionnels) de mettre en œuvre un menu déroulant multisélectif pour les champs utilisateur dans Discourse ?

Pour information, une mise à jour majeure du Select Kit de core a été effectuée vers la version 2 au cours des derniers mois. Cela a affecté plusieurs plugins, et en particulier ce type de contrôle. Si ce plugin n’a pas été maintenu depuis lors, il est possible qu’il ne fonctionne effectivement plus.

Je vous suggère de contacter le développeur ici ou de publier dans son sujet méta, s’il existe. S’ils ne répondent pas et que cela est suffisamment important pour vous, publiez dans Marketplace pour qu’un freelance puisse s’en charger.

Merci — j’ai envoyé un message au seul utilisateur présent ici ayant un pseudonyme similaire à celui de GitHub, en espérant qu’il s’agisse de la même personne !

Est-il probable que ces modifications apportées au cœur du système nécessitent un important travail de refonte pour des plugins comme celui-ci ?

Je me demande pourquoi la sélection multiple n’est pas déjà incluse dans les fonctionnalités de base.

C’est exact. Ce qui a changé, c’est la manière dont le contrôle est configuré et utilisé.

Merci Robert. Très heureusement, @j.jaffeux vient d’indiquer qu’il était prêt à corriger le plugin – quelle communauté incroyable !

C’est super. C’était sa mise à niveau, il devrait donc être bien placé !

Cela devrait régler le problème :

Quelqu’un chez Procourse devra tout de même l’accepter :slight_smile:

@j.jaffeux merci pour la correction. Je l’ai fusionnée :slight_smile:

Bonjour, merci à vous deux pour cette réponse incroyable !

J’ai mis à jour à la fois le plugin et Discourse pour inclure les dernières modifications, mais le problème de la page de profil utilisateur omettant le champ déroulant persiste pour moi.

Un problème potentiellement lié est que, dans tous les cas, je dois cliquer deux fois sur le lien Profil utilisateur situé sur le côté gauche de la page des préférences utilisateur. Le premier clic affiche uniquement les champs utilisateur standard, et seul le deuxième clic affiche également les champs utilisateur personnalisés — mais en excluant le champ à sélection multiple (malheureusement, cliquer trois fois ne aide pas).

J’ai essayé sur plusieurs navigateurs et vidé le cache de chacun d’eux.

Je peux confirmer que les nouveaux utilisateurs s’inscrivant peuvent maintenant voir les options du menu déroulant.

Cela permet-il de cibler le problème ?

Pourriez-vous s’il vous plaît faire une vidéo ?

Bien sûr ! 2020-03-12_00h34_39|video

Dans la vidéo, je mets en évidence le champ à sélection multiple tel qu’il s’affiche sur la page des préférences utilisateur. Cependant, comme vous pouvez le voir, même après avoir cliqué deux fois sur « Profil », ce champ n’apparaît pas et reste donc non modifiable.

Un autre problème que vous pouvez remarquer sur la page des préférences utilisateur est l’absence de virgule entre les éléments de sélection multiple lorsque plusieurs options s’appliquent au champ pour cet utilisateur.

Veuillez afficher l’erreur dans la console de votre navigateur lorsque les champs ne s’affichent pas.

En ce qui concerne les virgules, ce n’est pas une régression de Discourse.

La fenêtre de la console affiche le message ci-dessous lors du premier clic sur ‘Profil’ :

VM173 : 1 Uncaught SyntaxError : Unexpected token N in JSON at position 0
    at JSON.parse (<anonymous>)
    at t.init_values (_discourse-multiselect-user-field-307aa8bb3934aada9a7d682455decf422704c235754739f0d5e4b19e3e909690.js:63)
    at D (_ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:25381)
    at p (_ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:41427)
    at Function.e.create (_ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:42006)
    at e.t.create (_ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:11490)
    at t.n.create (_ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:18623)
    at Object.evaluate (_ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:60870)
    at e.t.evaluate (_ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:59374)
    at e.t.evaluateSyscall (_ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:62789)
init_values @ _discourse-multiselect-user-field-307aa8bb3934aada9a7d682455decf422704c235754739f0d5e4b19e3e909690.js:63
D @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:25381
p @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:41427
e.create @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:42006
t.create @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:11490
n.create @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:18623
(anonymous) @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:60870
t.evaluate @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:59374
t.evaluateSyscall @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:62789
t.evaluateInner @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:62735
t.evaluateOuter @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:62727
e.next @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:64859
e.execute @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:64843
t.handleException @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:63724
t.handleException @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:63904
t.throw @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:63622
r.evaluate @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:60213
t.execute @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:63609
t.rerender @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:63936
h.render @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:19079
V @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:25920
t._renderRoots @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:19372
t._renderRootsTransaction @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:19410
t._revalidate @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:19456
t.invoke @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:66276
t.flush @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:66168
t.flush @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:66372
t._end @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:66948
t.end @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:66634
t._run @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:67003
t._join @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:66977
t.join @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:66694
f @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:53486
(anonymous) @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:45901
r @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:49817
handleEvent @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:45897
handleEvent @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:44834
(anonymous) @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:45224
dispatch @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:5251
v.handle @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:5058
Afficher 10 trames supplémentaires

Un nouveau clic sur ‘Profil’ ne semble pas modifier le message d’erreur dans la console.
Je peux envoyer une capture vidéo si cela peut aider ?
Existe-t-il un moyen d’ajouter des virgules entre les options listées ? Actuellement, si plusieurs options s’appliquent, lorsqu’elles sont listées les unes à la suite des autres sans séparateur, elles sont lues comme s’il s’agissait d’une seule longue chaîne d’options.

D’accord, je regarderai plus tard aujourd’hui ou demain.

Un grand merci !! Je vous suis vraiment reconnaissant pour votre aide

Salut, tu as eu de la chance ?

Je ne sais pas comment vous en êtes arrivé à cet état, mais d’une manière ou d’une autre, la valeur de votre paramètre est incorrecte. J’ai soumis une PR au plugin pour rendre l’analyse plus résiliente et basculer vers une valeur par défaut si, pour une raison quelconque, la valeur n’est pas analysable en JSON.

En ce qui concerne l’autre « problème », il s’agit d’une demande de fonctionnalité destinée aux propriétaires de ce plugin. Je ne suis pas vraiment certain qu’ils puissent le faire, cependant.

Merci !

La mise à jour n’a pas encore été détectée par mon installation Discourse.

En lisant ce qui précède, il semble qu’un processus de « fusion » soit nécessaire ?
Est-ce quelque chose que je pourrais tenter de faire sans causer de chaos à personne ?

Y a-t-il un moyen de mettre à jour manuellement le plugin dans l’intervalle, et si oui, Discourse pourra-t-il toujours gérer les futures mises à jour ?

Ce n’est pas un problème dans le cœur de Discourse. J’ai envoyé une PR au propriétaire du plugin. Nous ne pouvons rien faire d’autre tant qu’ils ne l’auront pas fusionnée.

Succès ! La mise à jour est arrivée et tout semble maintenant fonctionner – un grand merci à tous.