Pouvons-nous supprimer tous les messages 'Automatiquement mis à jour' en une seule fois ?

Recherché avant de poster :
J’aime le « Bump automatique des sujets » pour que les sujets soient renouvelés. Mais j’aurais souhaité que lorsqu’un visiteur consulte les sujets, il ne voie pas des dizaines de messages de « Bump automatique ».

Y a-t-il un moyen de les supprimer occasionnellement, manuellement ou automatiquement (ou les deux) ?

Je pose cette question car j’ai constaté qu’à mon niveau, quels que soient mes souhaits, la plupart d’entre eux ont déjà été pris en charge.

2 « J'aime »

Salut @Bathinda !
Vous pouvez cliquer manuellement sur l’icône de suppression, comme pour tout autre message :

2 « J'aime »

Merci, mais ce n’est pas une façon pratique de supprimer des centaines de messages de “bump” sur différents sujets.

Je n’ai même pas pu sélectionner tous les messages de “bump” sur un seul sujet.

1 « J'aime »

Il n’y a pas de fonctionnalité intégrée pour une telle action groupée.

Vous pourriez utiliser un script Rails pour supprimer les messages de promotion automatique existants, quelque chose comme :

  1. Connectez-vous en SSH à votre serveur
  2. cd /var/discourse
  3. ./launcher enter app
  4. rails c
  5. Post.where("action_code = 'autobumped'").destroy_all

:warning: Faites toujours une sauvegarde d’abord, au cas où.

4 « J'aime »

C’est assez bon.
Merci.

Existe-t-il une commande qui nous permettrait d’abord de lister/voir tous ces messages avant de donner la commande « destroy (supprimer) » ?

1 « J'aime »

La meilleure façon serait de le faire depuis l’interface Discourse avec Data Explorer :

Utilisez la requête suivante :

SELECT * from posts
WHERE action_code = 'autobumped'

3 « J'aime »

Ah !! C’est la requête qui me rendrait heureux. Merci encore.

2 « J'aime »

Bien que la requête suggérée montre les sujets qui contiennent des messages « auto-bumped » dans tous les sujets. Mais cela s’est avéré peu utile.


Cela renvoie juste des centaines de sujets qui contiennent des milliers de messages « Auto-Bumped », mais n’indique pas combien de tels messages existent dans combien de sujets.

Je pense donc qu’en fin de compte, je devrai manier la hache dans les « pièces sombres » de la console Rails uniquement (ce qui est un peu intimidant).

Je suis un peu inquiet car cela affectera des milliers de sujets/messages d’un coup. S’il y avait un bouton tout sélectionner à l’intérieur des sujets qui sélectionnerait tous les messages de « bumping » ensemble et que nous pourrions supprimer ces messages en un clic à l’intérieur de n’importe quel sujet. Et si quelqu’un voulait supprimer tous ces messages dans Tous les sujets avec une seule commande, il devrait entrer ‘rails’.

Je ne me plains pas. Je m’exprime simplement.

1 « J'aime »

La 5ème ligne de la commande rails que vous m’avez indiquée demanderait-elle ou solliciterait-elle quelque chose avant de supprimer tous ces messages ? Ou ferait-elle simplement ce qui lui a été dit, sans avertissement, etc., ni possibilité de récupération ?

Si possible, pouvons-nous supprimer les « messages de bumping » de n’importe quel sujet en premier, au lieu de les supprimer de tout le site web ?

Pouvez-vous également me suggérer/indiquer une commande rails pour visualiser des exemples des messages que nous allons supprimer ?

Merci.

Quelque chose comme ceci dans l’explorateur de données pourrait aider à donner un aperçu :


SELECT p.topic_id,
       COUNT(p.id) AS count
FROM posts p
WHERE action_code = 'autobumped'
GROUP BY p.topic_id
ORDER BY count DESC

Cependant, je vous mets en garde contre l’utilisation de la console Rails pour apporter des modifications de ce type sur un site en production si vous n’avez pas d’expérience. Vous pourriez vouloir créer un site de test et vous entraîner avant de vous lancer. :+1:

3 « J'aime »

Oui, cela a résolu le problème autant que proposé par les concepteurs/développeurs.

Mais je voudrais quand même dire qu’il devrait y avoir une commande « Admin », dans les paramètres d’administration ou dans le sujet consulté, pour sélectionner tous les « messages en double (automatiquement mis à jour) » dans un sujet ou tous les sujets, puis les supprimer, quand l’administrateur le souhaite.

Peut-être pourriez-vous masquer ces messages avec CSS à la place ? Malheureusement, je ne pense pas que le widget post-small-action inclue actuellement le type d’action comme classe CSS, vous ne pouvez donc pas cibler spécifiquement les messages de “bump”. Peut-être qu’un composant de thème pourrait aider ?

1 « J'aime »

Oui, j’ai vérifié cela avant de suggérer la solution de l’explorateur de données.
L’ajout de classes spécifiques aux actions courtes pourrait être une bonne suggestion de #fonctionnalité.

1 « J'aime »

Pouvez-vous me suggérer quelque chose s’il vous plaît.
Je peux simplement copier-coller la même chose dans un composant. Je ne connais pas le codage.

Je n’ai pas fait grand-chose avec l’API de plugin, mais j’ai vu qu’il existe une méthode qui peut ajouter des classes aux petits messages d’action :

J’ai donc créé un composant de thème qui incluait ceci dans la section Head :

<script type="text/discourse-plugin" version="1.6.0">
  api.addPostSmallActionClassesCallback(post => {
    return ["small-action-" + post.actionCode]
  });
</script>

… et ceci dans la section CSS :

.small-action.small-action-autobumped {
  display: none;
}

… et le message autobumped a disparu !

Je n’ai effectué aucun autre test, donc je ne sais pas s’il pourrait y avoir d’autres effets secondaires. Il est possible que les classes small-action-[...] entrent en conflit ailleurs dans l’application, auquel cas vous devriez choisir un préfixe garanti unique.

3 « J'aime »

Notez que la méthode addPostSmallActionClassesCallback n’a été ajoutée que le mois dernier, vous devez donc utiliser une version assez récente de Discourse :

2 « J'aime »

Merci.
Veuillez élaborer sur cette dernière phrase : « auquel cas vous devriez choisir un préfixe garanti d’être unique. »

Par exemple, vous pourriez utiliser le préfixe bathinda-, qui serait garanti de ne pas entrer en conflit avec quoi que ce soit dans Discourse, ni maintenant ni à l’avenir. Cela ressemblerait à ceci :

Head :

<script type="text/discourse-plugin" version="1.6.0">
  api.addPostSmallActionClassesCallback(post => {
    return ["bathinda-" + post.actionCode]
  });
</script>

CSS :

.small-action.bathinda-autobumped {
  display: none;
}
2 « J'aime »

@simonk

Merci encore. J’ai créé et utilisé/activé le composant avec succès.
Cependant, après avoir masqué les messages ‘Automatically Bumped’, cela ressemble à ceci.

Un peu ‘peu attrayant’, mieux que rien/d’autres solutions.

Ah je vois, c’est à cause des messages de décalage horaire qui ne sont pas masqués. C’est délicat car on ne peut pas cibler un élément précédent avec CSS.

1 « J'aime »