Pour une raison quelconque, il semble que le bouton « Créer votre compte » ne fonctionne plus dans la boîte de dialogue d’inscription de mon forum - cliquer dessus après que tous les champs utilisateur soient remplis (aussi correctement que je puisse le voir) n’entraîne aucune réponse (pas même un message d’erreur).
La boîte de dialogue ne se ferme pas et aucun message de vérification par e-mail n’est envoyé.
Je ne vois aucun problème évident avec le contenu des champs utilisateur lors de l’inscription - tous sont remplis et aucun ne présente d’erreurs.
Testé sous Chrome version 117.0.5938.134 (Official Build) et Edge version 118.0.2088.33 (Official build).
La suppression du cache du navigateur ne semble avoir aucun effet.
La fonction manuelle « tester l’e-mail » envoie un message à l’adresse de l’utilisateur concerné sans problème.
La fonctionnalité de liste de diffusion du forum pour les utilisateurs existants fonctionne parfaitement.
Je peux également me connecter et me déconnecter du site web du forum sans problème.
Je ne suis au courant d’aucun changement récent apporté aux paramètres du forum (autres que les mises à jour logicielles), mais je ne suis pas sûr qu’il existe un paramètre pour « ignorer les entrées utilisateur ».
Mon utilisateur visé a essayé de s’inscrire plusieurs fois et j’ai également essayé de mon côté, et je peux confirmer le problème.
J’exécute actuellement la dernière version de Discourse (mise à jour vers la version 3.2.0.beta2-dev dans l’espoir de résoudre le problème).
Je ne suis pas sûr de quand cela a commencé, car nous n’avons pas eu de nouvelles inscriptions depuis un certain temps (peut-être que je sais pourquoi maintenant !).
Voyez-vous des erreurs dans la console du navigateur ? Avez-vous (ou l’utilisateur) des bloqueurs de contenu ou de publicités installés dans les navigateurs ?
Je ne suis pas sûr de ce que je regarde - cela signifie-t-il que le plugin Multi-select est incompatible avec la dernière version de Discourse ?
Malheureusement, ce plugin est assez critique lors des inscriptions, - il est utilisé pour remplir certains champs utilisateur à partir de listes déroulantes.
En supposant que le plugin Multi-select soit à l’origine du problème, il devrait être assez simple de migrer les anciens champs ‘multiselect-dropdown’ vers les nouveaux champs ‘multiselect’ de Discourse. Quelqu’un de la communauté Discourse devrait pouvoir vous aider à ce sujet.
Salut - oui, le plugin semble effectivement être obsolète, il est donc peu probable qu’il soit mis à jour - mais le problème réside dans la migration des données utilisateur générées par le plugin vers les champs de données utilisateur principaux correspondants, afin que le plugin puisse être supprimé en toute sécurité.
La simple désinstallation du plugin semble également supprimer les données associées (ou du moins, elles ne sont plus visibles lorsque l’on consulte les profils des utilisateurs).
En supposant que je ne sois pas le seul utilisateur du plugin, il serait formidable que le plugin reçoive une dernière mise à jour, pour inclure une fonction de ‘migration’ !
Je ne vois rien dans le plugin qui pourrait causer la suppression des champs utilisateur créés par celui-ci de la base de données lorsque le plugin est désinstallé d’un site. Ce à quoi je m’attendrais, c’est que depuis la console Rails, en exécutant :
renvoie la liste des champs multiselect-dropdown que vous avez créés sur votre site.
Les valeurs définies pour l’id de chacun de ces champs peuvent être utilisées pour trouver les options que chaque utilisateur de votre site a sélectionnées pour le champ. Par exemple, si les id renvoyés sont [1, 2, 3], il y aura des entrées UserCustomField correspondantes nommées "user_field_1", "user_field_2" et "user_field_3". En supposant que tout cela est correct, cela suffira pour que quelqu’un puisse migrer les anciens champs vers de nouveaux champs depuis la console Rails de votre site.
Si l’auteur du plugin ne s’en occupe pas, vous devrez probablement engager quelqu’un pour le travail. Notez que je n’essaie pas de décrocher du travail, je préférerais ne pas le faire
Avant que la migration ne soit effectuée, vous devriez créer de nouveaux champs ‘multiselect’ dans Discourse avec des options qui correspondent aux valeurs de vos anciens champs ‘multiselect-dropdown’. Pour faciliter le processus de migration, il serait bon d’utiliser le même nom pour les nouveaux champs que celui utilisé pour les anciens champs. Ainsi, celui qui effectuera la migration saura que (par exemple) les champs ‘multiselect-dropdown’ nommés “NZRAB number” doivent être migrés vers le nouveau champ ‘multiselect’ nommé “NZRAB number”.
Je suis d’accord qu’il serait préférable que l’auteur du plugin s’en charge, mais si cela ne peut pas se faire, créez simplement de nouveaux champs ‘multiselect’ et supprimez le plugin.
Juste pour vérifier - la version principale de la liste déroulante Multiselect doit-elle permettre à un utilisateur de sélectionner plusieurs éléments d’une même liste déroulante simultanément, de la même manière que l’ancien plugin ?
Lorsque j’ai essayé d’ajouter un nouveau champ utilisateur de type ‘Liste déroulante Multiselect’, il n’y a qu’une seule option ‘Liste déroulante Multiselect’ à choisir (je m’attendais peut-être à deux, si la version du plugin est distincte de la version principale).
Maintenant, si je choisis ce type de champ Liste déroulante Multiselect, et que j’essaie d’ajouter des données à un profil utilisateur avec, il n’accepte qu’une seule sélection d’utilisateur, pas plusieurs sélections à la fois - donc il semble soit que la version principale du type de champ liste déroulante multiselect ait une fonctionnalité réduite et ait déplacé la version du type de champ plugin, soit qu’il y ait une interaction avec la version du plugin qui paralyse la version que je vois ?
Je pense que oui, mais je n’ai pas essayé le plugin multi-sélection, donc je ne peux pas être sûr. Voici comment fonctionnent les champs de sélection multiple de Discourse :
Il est possible que l’interface utilisateur soit différente de ce que faisait le plugin, mais j’espère que les résultats seront les mêmes.
Pouvez-vous confirmer qu’avec le plugin installé, vous pouvez voir les valeurs que les utilisateurs ont saisies pour les champs créés avec le plugin en visitant leur page de profil ?
Modification : @Paul_King, je réalise que j’ai peut-être été trop optimiste quant à la migration des données. Sans accéder à la console Rails de votre site, le moyen le plus simple d’avoir une idée de ce qui se passe serait de vérifier comment les anciens champs ont été enregistrés en exécutant une requête Data Explorer. Si vous n’avez pas ce plugin installé sur votre site, cela pourrait valoir la peine de l’ajouter.
Si le plugin Data Explorer est installé sur votre site, essayez d’exécuter la requête suivante :
SELECT * FROM user_fields
J’espère que cette requête retournera des résultats avec leur field_type défini sur « multiselect-dropdown ». Si c’est le cas, la migration des données devrait être assez simple.
Votre exemple montrant le fonctionnement du menu déroulant multi-sélection correspond à la façon dont le mien fonctionnait auparavant, ce qui semble prometteur pour rétablir la fonctionnalité d’origine.
Actuellement, il semble que ni l’ancien plugin ni la nouvelle version de la fonctionnalité de base ne fonctionnent correctement - le champ entier n’apparaît plus du tout dans l’écran de modification du profil utilisateur, bien que les valeurs que l’utilisateur a initialement saisies à l’aide de l’ancien plugin apparaissent pour un utilisateur cliquant sur l’avatar d’un autre utilisateur, mais avec les données d’origine montrant des crochets et des guillemets de chaque côté.
Oui, cette requête renvoie ce type de champ. Est-il possible que la confusion provienne du fait que l’ancien nom du plugin et le nom de base de Discourse pour leurs versions respectives d’un type de champ utilisateur multi-sélection soient identiques ?
Ce n’est pas surprenant. Cela signifie que les données nécessaires à la migration se trouvent dans la base de données, mais il est probable qu’elles soient dans un format qui ne facilitera pas la migration comme je l’espérais.
Pour confirmer cela, essayez d’exécuter la requête Data Explorer suivante :
SELECT * FROM user_custom_fields
WHERE name = 'user_field_1'
ORDER BY user_id
Les informations utiles des résultats de cette requête se trouveront dans la colonne value. Idéalement, les résultats ressembleraient à ceci, avec une entrée distincte pour chaque option sélectionnée par un utilisateur :
Je suspecte que vous constaterez que les valeurs de chaque option sélectionnée par un utilisateur se trouveront dans la même ligne. Par exemple, [this, that] ou \"[this, that]\". Si c’est le cas, pouvez-vous poster quelques-unes des entrées de valeur ?
Il faudra peut-être un peu d’essais et d’erreurs pour déterminer comment analyser les valeurs dans le format que Discourse s’attend à trouver.
Je suppose qu’une exportation du fichier utilisateur fournira toutes les données nécessaires, et qu’elle pourra être nettoyée pour être prête à être importée en utilisant quelque chose comme ceci :
Cela semble fonctionner. Il faudrait probablement embaucher Jay, ou quelqu’un de similaire, pour faire le travail.
Il devrait également être techniquement possible d’apporter les modifications depuis la console Rails. La difficulté de cette approche dépendra de la manière dont les champs value sont définis pour les anciens UserCustomFields « multiselect-dropdown ». S’il y a une option stockée par ligne, il serait simple de générer de nouvelles entrées UserCustomField à partir des anciennes. Si plusieurs options sont stockées dans chaque ligne, cela pourrait devenir un peu délicat.
Le format des données était intéressant - il se présentait sous deux formes différentes qui ont changé un jour. Elles ont commencé comme suit :
this
that
Et un jour, elles ont soudainement changé pour :
this,that
J’ai fait de la magie de tableur un peu moche pour transformer les données afin qu’elles correspondent aux nouveaux champs multisélection (comme ci-dessus). Malheureusement, le script ne peut pas (encore) gérer la sélection multiple. Une PR, quelqu’un ?
Bien que je puisse contourner / pirater pour faire le travail, je pense que :
1ère passe : tous les utilisateurs avec une seule entrée en utilisant le script existant
2ème passe : tous les utilisateurs avec plusieurs entrées en utilisant un script piraté qui force de nouvelles lignes.
plus tard…
Mon plan astucieux a fonctionné.
Voici le script piraté pour la 2ème passe :
# frozen_string_literal: true
require "csv"
desc "Import user fields"
task "multi_user_fields:import_csv", [:filename] => [:environment] do |_, args|
puts "Filename: #{args[:filename]}"
data = CSV.read(args[:filename], headers: true );
data.each_entry do |row|
puts "doing row."
row.to_h.each do |x|
user_id = row['user_id']
if x.first == 'user_id'
u = User.find(user_id)
puts "Got user: #{u.username}"
else
name = x.first
val = row[x.first]
ucf = UserCustomField.find_by(user_id: row['user_id'], name: name)
if val
puts "Creating UCF: #{row['user_id']} Name: #{name}, value: #{val}"
UserCustomField.create(user_id: user_id, name: name, value: val)
end
end
end
end
end
@pfaffman - quelle serait la facilité de mettre à jour le script réel pour gérer les champs de sélection multiple pour les autres qui manipuleront les UCF à l’avenir ?
De mon côté, je suis très heureux de signaler que Nathan et son processus (avec tous ses hacks) ont absolument fait l’affaire.
J’ai confirmé que la boîte de dialogue d’inscription fonctionne maintenant, que les utilisateurs peuvent à nouveau sélectionner plusieurs réponses dans les options du menu déroulant, et qu’ils peuvent les visualiser et les modifier en tant qu’utilisateurs approuvés, et que l’ancien plugin de sélection multiple a été supprimé avec succès.
Merci à @nathank, @omarfilip, @simon et @RGJ d’avoir pris le temps d’examiner ce problème et de partager vos connaissances et vos idées - une preuve supplémentaire, s’il en était besoin, de la grandeur de cette communauté !