"Appliquer les options utilisateur par défaut historiquement" est une voie à sens unique

Lorsqu’une option utilisateur par défaut est définie de false à true, elle ne se comporte pas comme elle le devrait.
Elle ne demande pas si le paramètre doit être appliqué aux utilisateurs existants et même si c’était le cas, cela ne fonctionnerait pas.

Repro :

  • Avoir un paramètre comme, par exemple, « ouvrir les liens externes dans un nouvel onglet » activé
  • Définir admin - paramètres - préférences utilisateur - ouvrir par défaut les autres liens externes dans un nouvel onglet sur activé
  • Définir admin - paramètres - préférences utilisateur - ouvrir par défaut les autres liens externes dans un nouvel onglet sur désactivé
  • Obtenir une popup « Souhaitez-vous appliquer ce changement historiquement ? Cela modifiera les préférences de X utilisateurs existants. » et choisir Oui
  • Pour tous les utilisateurs, « ouvrir les liens externes dans un nouvel onglet » est maintenant désactivé

Jusqu’ici tout va bien, mais :

  • Définir admin - paramètres - préférences utilisateur - ouvrir par défaut les autres liens externes dans un nouvel onglet sur activé
  • Obtenir aucune popup et il est toujours désactivé pour tout le monde.

Dernière étape attendue :

  • Obtenir une popup « Souhaitez-vous appliquer ce changement historiquement ? Cela modifiera les préférences de X utilisateurs existants. » où choisir Oui l’activerait pour tout le monde

Cela s’applique à toutes les préférences utilisateur default_.

Cela semble lié à ici et ici

previous_value = SiteSetting.public_send(id) || "" if update_existing_users

qui définit previous_value à "" si le paramètre est false, et ensuite

UserOption.where(user_option => previous_value).update_all(attrs)

et

json[:user_count] = UserOption.where(user_option => previous_value).

ne fait rien.

9 « J'aime »

Voici une PR :

4 « J'aime »

Ce sujet a été automatiquement fermé 3 jours après la dernière réponse. Les nouvelles réponses ne sont plus autorisées.