Strumenti admin/chiave inglese su piccoli post d'azione

Sarebbe possibile includere strumenti di amministrazione nei piccoli post di azione (i messaggi chiuso/fissato, ecc.)? Come ad esempio consentire l’eliminazione permanente, il cambio di proprietà e simili.

Sono l’unico utente amministratore sul mio sito e, sebbene questi post siano nascosti come eliminazioni logiche, sono ancora un po’ brutti, anche come utente staff. A volte annoto delle cose nei messaggi eliminati logicamente prima di trasformare le bozze in post veri e propri, quindi diventa un po’ difficile distinguerli dai piccoli messaggi di azione quando clicco per mostrare le risposte nascoste.

Inoltre, non voglio usare il CSS in un componente, perché ci sono alcuni casi in cui voglio che venga visualizzato il piccolo messaggio di azione, ad esempio per far sapere agli utenti che ho archiviato o chiuso argomenti specifici. Semplicemente non voglio flussi di fissato/non fissato/fissato/non fissato ecc. - li abbiamo visti tutti prima, quindi penso che tu capisca il succo di quello che intendo.

A titolo di contesto, gestisco un piccolo sito con circa 10 utenti che uso fondamentalmente come libreria digitale per varie note e media (promuovo eventi come hobby, quindi la pubblicazione di pagine è molto utile per collegamenti permanenti di informazioni).

La mia ipotesi è che la chiave inglese non sia stata implementata sui piccoli post di azione di proposito perché la maggior parte dei siti preferirebbe che lo staff potesse tracciare chi ha fatto cosa a un post, il che ha senso. Ma penso che potrebbe essere utile in circostanze specifiche, magari come plugin aggiuntivo.

È anche la mia prima volta che posto su questo sito :hugs:. Penso che questo sia il posto giusto per questa richiesta, ma scusate se non lo è!

3 Mi Piace

Ottimo primo post. È estremamente utile avere il contesto specifico dietro richieste come questa, quindi grazie per averlo incluso.

Per il tuo caso d’uso, la “eliminazione permanente” è la cosa principale che stai cercando e che non puoi fare attualmente?

O hai bisogno di una qualsiasi delle altre azioni? (Se sì, quali e perché?)

2 Mi Piace

Grazie per le tue gentili parole, lo apprezzo!

La cancellazione permanente è sicuramente quella principale. Personalmente non riesco a pensare a un caso d’uso specifico per cambiare la proprietà di una piccola azione, o alle altre opzioni di amministrazione solitamente disponibili sui post.

Posso eliminare questi messaggi tramite rails, ma ovviamente ciò comporta la ricerca dell’ID specifico del post e l’accesso alla console, quindi sarebbe molto più comodo all’interno dell’interfaccia utente.

Ho una certa familiarità con la creazione di componenti (non ho ancora molta familiarità con la progettazione di plugin, ma voglio imparare presto!). Se riesco a far funzionare questo in un componente, se è anche possibile, fornirò sicuramente un link GitHub per la community!

2 Mi Piace

Ricordo questo post di un po’ di tempo fa. Nel caso in cui qualcun altro possa trarne beneficio in futuro, ecco la mia soluzione a questo problema alla fine!


Eliminare i Post di Piccola Azione Indesiderati

Lo script rails seguente è necessario per fare ciò: l’ho chiamato smalldelete.rb e l’ho posizionato in /var/www/discourse/script mentre ero all’interno del container.

Dobbiamo anche esaminare e assicurarci che ogni post di piccola azione che vogliamo eliminare abbia la parola delete inserita nella sezione effettiva del post, per differenziarli da quelli che potremmo voler conservare. Ecco un esempio di cosa intendo con un post Auto Bump:

Puoi cambiare quella parola chiave con qualcos’altro se necessario modificando la riga p.raw.strip.downcase == \"delete\" con un’altra parola chiave.

Script per 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

Lo script trova un topic tramite ID, quindi controlla ogni post in quel topic per vedere se contiene la parola chiave definita, e nient’altro. Se questo è vero, allora prepara quel post specifico per l’eliminazione.


Una volta impostato lo script, possiamo entrare nella console rails e caricarlo:

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

quindi, infine, possiamo eseguire

TopicCleaner.delete_small_actions(topic_id, dry_run: false)

Il flag dry_run è incluso anche per elencare esattamente ciò che verrebbe eliminato permanentemente, se desiderato.


Ora, ovviamente, queste modifiche sono interamente estetiche e non fanno alcuna differenza in termini di contenuto, poiché i post eliminati in modo “soft” non saranno comunque visibili ai non membri dello staff.

Tuttavia, sono un particolare fan del rendere tutto bello e ordinato, quindi posso certamente vedere alcuni casi in cui i proprietari di determinati forum potrebbero voler fare uso di questo!

1 Mi Piace