Botão “Novo tópico” funcionando incorretamente

Quando clico no botão “Novo tópico”, ele não exibe imediatamente o formulário de novo tópico. Em vez disso, o formulário é exibido depois que seleciono um dos tópicos do fórum. Ainda parece que está criando um novo tópico, mas em segundo plano. Assim que você abre qualquer tópico existente, o novo tópico que você estava tentando criar aparece (completamente correto; ou seja, para o fórum em que você pretendia postar, mesmo que o tópico que você inseriu esteja em um fórum diferente).

Isso está acontecendo apenas em um site (https://discussions.scouting.org/), então presumo que seja algo que eles configuraram incorretamente. Levantei essa questão , sem sucesso.

Isso ocorre no modo de segurança?

1 curtida

Isso não é reproduzível no modo de segurança. Há um tema / CSS personalizado causando esse problema.

4 curtidas

Os administradores adicionaram uma personalização CSS que se parece com isto:

body:not([class*="category-council-"]):not(.staff).closed-topic .reply, 
body:not([class*="category-council-"]):not(.staff).closed-topic #topic-footer-buttons .create, 
body:not([class*="category-council-"]):not(.staff).closed-topic .timeline-container .create, 
body:not([class*="category-council-"]):not(.staff).closed-topic #reply-control {
  display: none !important;
}

Isso parece estar ok à primeira vista, mas então eu vejo que body.closed-topic é aplicado à lista de tópicos… o que realmente não faz sentido.

Essa classe não está no Discourse por padrão, então rastreando outra personalização que adiciona isso…

<script type="text/discourse-plugin" version="0.8">
const container = Discourse.__container__;
const controller = container.lookup("controller:topic");
const currentUser = api.getCurrentUser();

api.onPageChange(() => {

  if (!currentUser || currentUser.admin || currentUser.moderator || currentUser.trust_level != 4 ) {
    return;
  } else {
    let model = controller.get("model");
    
    document.querySelector("body").classList.add("closed-topic");
    
    if (model) {
      if (!model.closed) {
        document.querySelector("body").classList.remove("closed-topic");
      }
    }
  }

});
</script>

Então aqui, se você estiver logado, não for um administrador, não for um moderador e tiver nível de confiança 4… então ele adiciona a classe closed-topic ao corpo da página.

Essa classe só é removida se model.closed for falso, o que significa… se não for um tópico fechado (ou mesmo se não for um tópico) a classe closed-topic será aplicada.

Esta linha:

document.querySelector("body").classList.add("closed-topic");

provavelmente deveria estar dentro de if (model) porque, de outra forma, ela é aplicada mesmo quando não há modelo presente (por exemplo, quando você não está em um tópico)…

Parece que a intenção era impedir que usuários de nível de confiança 4 respondessem a tópicos fechados, mas está sendo aplicado de forma muito ampla.

5 curtidas

Muito obrigado, era isso que eu estava procurando.

Heheh, me pergunto se sou o motivo dessa mudança. Descobri esse bug e o explorei liberalmente. Nunca entendi o motivo de exigir que as pessoas iniciassem um novo tópico quando você tem informações adicionais para adicionar a um antigo.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.