Estou interessado em adicionar uma opção adicional dentro das “Ações do Tópico” (ícone de chave de fenda). Especificamente, a opção de alterar o Status do Tópico para Pendente (vamos chamar de “Tornar Pendente”).
O caso de uso principal seria quando um Tópico contém conteúdo questionável por algum motivo e é necessário refletir um pouco mais sobre a melhor forma de tratá-lo. Clicar na chave de fenda e definir o status como Pendente parece o método mais eficiente, mas, claro, estou aberto a outras sugestões.
O que ele quer é tornar alguns tópicos/postagens ocultos, como se tivessem sido detectados pelo gatilho de palavras monitoradas. Ele deseja que a postagem não seja visível para os usuários, mas seja encaminhada para a fila de revisão para tratamento posterior (por exemplo, entrar em contato com o usuário sobre a postagem e explicar por que ela é inadequada).
Acho que qualquer post deve funcionar, tópico é um caso um pouco especial… apenas finja que este post disse uma palavra feia… torça-o e force-o na fila de revisão?
Sim, qualquer post individual deve ser relativamente fácil (a sequenciação pode ficar desajustada, mas poderia funcionar), onde se torna muito complicado é tentar lidar com um tópico inteiro que já teve respostas.
Não tenho certeza de quão útil seria esse caso de uso? Parece que sim, pelo que o OP indicou.
Jane cria o tópico: Gosto de comer marshmallow
Jim responde: Você não sabe… este site é sobre “não marshmallow”
O site é sobre doces, mas os administradores não gostam de marshmallow. São 5 da manhã… eles não conseguem lidar com isso agora.
Clique no botão… e volte para a fila de aprovação do tópico de Jane. Podemos resolver isso amanhã.
O problema é… como lidamos com isso? O que acontece com os carimbos de data/hora quando republicamos e assim por diante. A fila de revisão não suporta múltiplos posts em um único lote.
Eu diria que a maneira “oficialmente suportada” atual de lidar com isso é:
“Tornar não listado”
Marcar para atenção do moderador para que ninguém esqueça
A desvantagem é que as pessoas ainda podem ver se tiverem o URL.
Outra opção pode ser: “clicar em excluir”, marcar o conteúdo excluído (não tenho certeza se a fila de revisão suporta isso, mas talvez seja razoável permitir que moderadores marquem conteúdo excluído).
Sim, já tentei e entendo. Não é ideal, mas é viável, acho, dadas as outras restrições/problemas relacionados que vejo discutidos acima.
Meu caso de uso principal é quando um Tópico é criado e exibido, e eu preferiria que fosse capturado pelo recurso de Palavras Monitoradas. Geralmente, observo esses casos dentro de, digamos, uma hora, e muitas vezes eles ainda não têm uma primeira resposta. Uma ideia viável poderia ser ter uma opção “Deixar Pendente” disponível apenas na chave de fenda para aqueles Tópicos que ainda não têm uma primeira resposta? Apenas um pensamento.
De qualquer forma, usarei a rotina “Tornar Não Listado” se nada mais se desenvolver sobre isso.
Desculpe pelo atraso. Tenho pensado bastante sobre isso.
Deixar uma postagem como pendente significa excluir permanentemente a postagem e armazenar todos os dados necessários para recriá-la no atributo payload do reviewable. Tive que reescrever isso algumas vezes porque estava preocupado com a perda de dados nessa transição devido a associações marcadas com dependent: :destroy ou dependent: :delete_all. No entanto, após alguns testes, acredito que deve ser seguro fazer isso.
Fazer isso quando um tópico não tem respostas ou quando não é a primeira postagem deve exigir um esforço baixo a moderado. Toda a lógica para enfileirar uma postagem está dentro do método NewPostManager#enqueue, então teremos que extraí-la para uma classe separada e reutilizá-la. Sempre adicionamos postagens pendentes no final do tópico após a aprovação, então adicioná-las em uma posição específica exigirá um pouco mais de trabalho.
Mover um tópico com respostas de volta para pendente deve ser mais complicado usando essa abordagem. Serializá-lo em um reviewable parece um pouco exagerado. Talvez pudéssemos simplesmente ocultar o tópico temporariamente? Por exemplo, já fazemos isso quando uma postagem é sinalizada como spam por um usuário confiável.
Alternativamente, poderíamos sempre sinalizar + excluir (ou ocultar) em vez disso, tornando tudo muito mais fácil. Não consigo pensar em nenhuma razão pela qual excluir permanentemente e enfileirar a postagem seria melhor.
Esqueci de postar uma atualização aqui. Adicionamos um botão Marcar Postagem no modal de marcação, ao lado de Tomar Ações.... Ao clicar na postagem, ela é enviada para a fila e ocultada, e então uma mensagem é enviada ao usuário informando que permanecerá assim até que um membro da equipe a revise.