El botón "Nuevo tema" funciona incorrectamente

Cuando presiono el botón “Nuevo tema”, no muestra inmediatamente el formulario de nuevo tema. En cambio, el formulario se muestra después de que selecciono uno de los hilos del foro. Todavía parece que está creando un nuevo tema, pero en segundo plano. Una vez que abres cualquier tema existente, aparece el nuevo tema que estabas intentando crear (completamente correcto; es decir, para el foro en el que pretendías publicar, incluso si el tema que ingresaste está en un foro diferente).

Esto solo está sucediendo en un sitio (https://discussions.scouting.org/), así que supongo que es algo que han configurado incorrectamente. He planteado este problema allí, sin éxito.

¿Ocurre esto en modo seguro?

1 me gusta

Esto no es reproducible en modo seguro. Hay un tema / CSS personalizado que está causando este problema.

4 Me gusta

Los administradores han añadido una personalización CSS que se ve así:

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;
}

Esto parece estar bien a primera vista, pero luego veo que body.closed-topic se aplica a la lista de temas… lo que realmente no tiene sentido.

Esta clase no está en Discourse por defecto, así que hay que rastrear otra personalización que la añada…

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

Así que aquí, si estás conectado, no eres administrador, no eres moderador y tienes un nivel de confianza 4… entonces añade la clase closed-topic al cuerpo de la página.

Esta clase solo se elimina si model.closed es falso, lo que significa… si no es un tema cerrado (o ni siquiera es un tema) se aplicará la clase closed-topic.

Esta línea:

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

probablemente debería estar dentro de if (model) porque de lo contrario se aplica incluso cuando no hay modelo presente (por ejemplo, cuando no estás dentro de un tema)…

Parece que la intención era evitar que los usuarios de nivel de confianza 4 respondieran a temas cerrados, pero se aplica de forma demasiado general.

5 Me gusta

Muchas gracias, esto es lo que estaba buscando.

Jejeje, me pregunto si soy la razón de ese cambio. Descubrí ese error y lo exploté liberalmente. Nunca entendí la razón para exigir que las personas inicien un nuevo hilo cuando tienes información adicional que agregar a uno antiguo.

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