Salut !
J’ai modifié le plugin pour qu’il corresponde à mes besoins, et j’aimerais partager ce que j’ai fait, mon flux de travail actuel, et quelques questions/demandes de conseils.
1. Mes Modifications
Chemin et contenu du fichier :
Fichier : app/jobs/scheduled/update-all-titles.rb
# frozen_string_literal: true
module AddTitleBasedOnTrustLevel
class UpdateTitles < ::Jobs::Scheduled
every SiteSetting.update_title_frequency.hours
def execute(args)
group_titles = JSON.parse(SiteSetting.group_trust_level_titles || "{}")
User.find_each do |user|
# Ignorer les administrateurs et les modérateurs, ne pas mettre à jour leurs titres
next if user.admin? || user.moderator?
group_id = user.primary_group_id
next unless group_id
group = Group.find_by(id: group_id)
next unless group
group_key = group.name.downcase
tl = user.trust_level
titles = group_titles[group_key]
next unless titles.is_a?(Array)
next unless tl >= 1 && tl <= 4
new_title = titles[tl]
next unless new_title.present?
user.update_column(:title, new_title) if user.title != new_title
end
end
end
end
Fichier : config/settings.yml
plugins:
add_title_based_on_trust_level_enabled:
default: false
client: true
group_trust_level_titles:
default: '{"designers": ["", "Junior Designer", "Designer", "Senior Designer", "Chief Designer"], "developers": ["", "Junior Developer", "Developer", "Senior Developer", "Tech Lead"]}'
type: string
client: true
multiline: true
update_title_frequency:
default: 24
type: integer
2. Comment j’ai testé
J’exécute actuellement cette logique manuellement via la console Rails pour vérifier si la fonction fonctionne. Elle met bien à jour les titres des utilisateurs en masse selon mes exigences.
3. Problème d’entrée des paramètres du plugin
Il n’y a pas de bouton « Paramètres » pour ce plugin sur la page /admin/plugins. Actuellement, pour modifier la configuration, je dois visiter directement /admin/plugins/add-title-based-on-trust-level/settings.
Existe-t-il un moyen de faire apparaître le bouton ou le lien des paramètres sur la page des Plugins pour un accès plus facile ?
4. Mes paramètres actuels
Voici ma configuration JSON actuelle (je joindrai une capture d’écran également) :
{
"designers": ["", "Junior Designer", "Designer", "Senior Designer", "Chief Designer"],
"developers": ["", "Junior Developer", "Developer", "Senior Developer", "Tech Lead"]
}
5. Questions / Améliorations possibles
- Cette approche (parcourir tous les utilisateurs et mettre à jour leur titre) risque-t-elle de poser des problèmes de performance s’il y a beaucoup d’utilisateurs ? Existe-t-il une meilleure pratique pour cela ?
- Des conseils d’optimisation, que ce soit pour le travail planifié ou pour l’interface utilisateur des paramètres d’administration ?
- Y a-t-il quelque chose d’insécurisé ou de problématique dans ma méthode dont je devrais me méfier ?
Merci beaucoup pour votre excellent travail et ce plugin utile !
Si vous avez des suggestions, ou si vous prévoyez d’améliorer la configuration des titres par groupe + niveau de confiance à l’avenir, j’aimerais beaucoup connaître vos réflexions.

