Pulsante “Nuovo argomento” non funziona correttamente

Quando premo il pulsante “Nuovo argomento” non viene visualizzato immediatamente il modulo per il nuovo argomento. Invece, il modulo viene visualizzato dopo che ho selezionato uno dei thread nel forum. Sembra ancora che stia creando un nuovo argomento, ma in background. Una volta aperto un argomento esistente, appare il nuovo argomento che stavi cercando di creare (completamente corretto; cioè, per il forum in cui intendevi pubblicare, anche se l’argomento che hai inserito è in un forum diverso).

Questo sta accadendo solo su un sito (https://discussions.scouting.org/), quindi presumo che sia qualcosa che hanno configurato in modo errato. Ho sollevato questo problema , senza successo.

Si verifica in modalità provvisoria?

1 Mi Piace

Non è riproducibile in modalità provvisoria. È un tema personalizzato / css che causa questo problema.

4 Mi Piace

Gli amministratori hanno aggiunto una personalizzazione CSS che appare così:

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

A prima vista sembra a posto, ma poi si vede che body.closed-topic viene applicato all’elenco degli argomenti… il che non ha molto senso.

Questa classe non è presente in Discourse per impostazione predefinita, quindi bisogna rintracciare un’altra personalizzazione che la aggiunge…

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

Quindi qui, se sei loggato, non sei un amministratore, non sei un moderatore e hai un livello di fiducia 4… allora aggiunge la classe closed-topic al corpo della pagina.

Questa classe viene rimossa solo se model.closed è falso, il che significa… se non è un argomento chiuso (o anche se non è affatto un argomento) la classe closed-topic verrà applicata.

Questa riga:

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

dovrebbe probabilmente essere all’interno di if (model) perché altrimenti viene applicata anche quando non è presente alcun modello (ad esempio, quando non ti trovi all’interno di un argomento)…

Sembra che l’intenzione fosse quella di impedire agli utenti di livello di fiducia 4 di rispondere ad argomenti chiusi, ma è applicata in modo troppo ampio.

5 Mi Piace

Grazie mille, era quello che cercavo.

Ah ah, mi chiedo se sono io il motivo di quel cambiamento. Ho scoperto quel bug e l’ho sfruttato liberamente. Non ho mai capito il motivo per cui si richieda alle persone di iniziare un nuovo thread quando si hanno informazioni aggiuntive da aggiungere a uno vecchio.

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