Outils d'administration/clé sur les petits messages d'action

Serait-il possible d’inclure des outils d’administration sur les petits messages d’action (les messages fermé/épinglé etc.) ? Comme permettre la suppression permanente, le changement de propriétaire et autres.

Je suis le seul utilisateur administrateur sur mon site, et bien que ces messages soient cachés en tant que suppressions logicielles, ils sont toujours un peu laids - même en tant qu’utilisateur du personnel. Parfois, je note des choses dans des messages supprimés logiquement avant de transformer des brouillons en publications réelles, il devient donc un peu difficile de les distinguer des petits messages d’action lorsque je clique pour afficher les réponses masquées.

Je ne souhaite pas non plus utiliser de CSS dans un composant - car il y a quelques cas où je souhaite que le petit message d’action soit affiché, comme pour informer les utilisateurs que j’ai archivé ou fermé des sujets spécifiques. Je ne veux juste pas des flux d’épinglage/désépinglage/épinglage/désépinglage etc. - nous avons tous vu cela auparavant, donc je pense que vous comprenez ce que je veux dire.

Pour le contexte, j’ai un petit site avec environ 10 utilisateurs que j’utilise essentiellement comme une bibliothèque numérique pour diverses notes et médias (je fais la promotion d’événements comme passe-temps, donc la publication de pages est très utile pour le lien permanent des informations).

Je suppose que la clé n’a pas été implémentée sur les petits messages d’action exprès car la plupart des sites préféreraient que le personnel puisse suivre qui a fait quoi sur un message, ce qui est logique. Mais je pense que cela pourrait être utile dans des circonstances spécifiques, peut-être en tant que plugin supplémentaire.

C’est aussi la première fois que je poste sur ce site :hugs:. Je pense que c’est le bon endroit pour cette demande, mais désolé si ce n’est pas le cas !

3 « J'aime »

Excellent premier message. Il est extrêmement utile d’avoir le contexte spécifique derrière des demandes comme celle-ci, alors merci de l’avoir inclus.

Pour votre cas d’utilisation, la « suppression définitive » est-elle la principale chose que vous recherchez et que vous ne pouvez pas faire actuellement ?

Ou avez-vous besoin d’une des autres actions ? (Si oui, lesquelles et pourquoi ?)

2 « J'aime »

Merci pour vos aimables paroles, j’apprécie !

La suppression permanente est certainement la principale. Je ne peux personnellement pas imaginer un cas d’utilisation spécifique pour changer la propriété d’une petite action, ou les autres options d’administration généralement disponibles sur les publications.

Je peux supprimer ces messages via Rails, mais cela implique bien sûr de trouver l’ID de publication spécifique et d’accéder à la console, ce serait donc beaucoup plus pratique dans l’interface utilisateur.

Je connais un peu la création de composants (pas encore très familier avec la conception de plugins, mais je veux apprendre bientôt !). Si je peux faire fonctionner cela dans un composant - si c’est même possible - alors je fournirai certainement un lien GitHub pour la communauté !

2 « J'aime »

Je me suis souvenu de ce message d’il y a quelque temps. Au cas où cela pourrait être utile à quelqu’un d’autre à l’avenir, voici ma solution finale à ce problème !


Suppression des publications d’action mineure indésirables

Le script Rails ci-dessous est nécessaire pour effectuer cette opération. Je l’ai nommé smalldelete.rb et je l’ai placé dans /var/www/discourse/script à l’intérieur du conteneur.

Nous devons également parcourir et nous assurer que chaque publication d’action mineure que nous souhaitons supprimer contient le mot delete dans la section de la publication elle-même, afin de la différencier de celles que nous pourrions vouloir conserver. Voici un exemple de ce que je veux dire avec une publication Auto Bump :

Vous pouvez changer ce mot-clé pour autre chose si nécessaire en modifiant la ligne p.raw.strip.downcase == \"delete\" par un autre mot-clé.

Script pour smalldelete.rb


class TopicCleaner
  def self.delete_small_actions(topic_id, dry_run: false)
    topic = Topic.find_by(id: topic_id)
    unless topic
      puts "Topic #{topic_id} not found"
      return
    end

    posts = topic.posts.where(post_type: Post.types[:small_action])
    to_delete = posts.select { |p| p.raw.strip.downcase == "delete" }

    if to_delete.empty?
      puts "No small action posts with 'delete' found in topic #{topic_id}"
      return
    end

    puts "Found #{to_delete.size} matching posts in topic ##{topic_id}"

    to_delete.each do |post|
      if dry_run
        puts "Would PERMANENTLY delete post ##{post.id} (created #{post.created_at}, by #{post.user.username})"
      else
        post.destroy()
        puts "🗑️ Permanently deleted post ##{post.id}"
      end
    end

    puts dry_run ? "Dry run complete — no posts deleted." : "Finished permanent cleanup of topic #{topic_id}"
  end
end

Le script trouve un sujet par son ID, puis vérifie chaque publication de ce sujet pour voir si elle contient le mot-clé défini, et rien d’autre. Si c’est le cas, il prépare cette publication spécifique pour la suppression.


Une fois le script configuré, nous pouvons accéder à la console Rails et le charger :

load Rails.root.join("script/smalldelete.rb")

puis, enfin, nous pouvons exécuter

TopicCleaner.delete_small_actions(topic_id, dry_run: false)

Le drapeau dry_run est également inclus pour lister exactement ce qui serait définitivement supprimé, si désiré.


Maintenant, bien sûr, ces changements sont entièrement esthétiques et n’ont aucune incidence sur le contenu, car les publications supprimées de manière logicielle ne seront de toute façon pas visibles par les non-membres du personnel.

Je suis particulièrement amateur de tout ce qui est beau et bien rangé, donc je peux certainement imaginer des cas où certains propriétaires de forum voudront l’utiliser !

1 « J'aime »