Barra lateral do administrador desapareceu

Olá a todos,

há cerca de dois meses, a barra lateral de administração à esquerda está faltando (veja a captura de tela). Não encontrei nas configurações nem em nenhum outro lugar a opção para “ativá-la”. Mesmo ao usar uma janela de navegação anônima, o mesmo problema persiste.
Alguém tem uma ideia do que possa estar causando isso?

Atenciosamente
Mr. Xurrent

Bem-vindo ao fórum :wave:

Você já tentou o modo seguro? Isso pode ajudar a descartar que o problema venha de um plug-in ou componente.
Você também pode verificar se há mensagens de erro no console do navegador.

Olá, Moin,

Acabei de testar isso, curiosamente, e a barra lateral de administração está presente no “modo seguro”.
Você pode me dizer qual plug-in ou componente pode estar causando esse problema?

Para isolar o problema, você pode primeiro desativar apenas os plugins em modo seguro e, em seguida, apenas os temas. Assim, você já terá uma ideia de onde procurar.

Em geral, você encontrará ambos na barra lateral de administração — agora que você consegue vê-la novamente. Os plugins têm uma seção separada. Você também pode adicionar /admin/plugins ao final da URL do seu fórum. Os temas estão na seção Aparência ou em /admin/config/customize/themes.

Provavelmente, trata-se de uma personalização específica do seu fórum, pois até agora não li sobre nenhum outro fórum com esse problema. Sem saber quais plugins não desenvolvidos pela equipe do Discourse você está usando, bem como quais componentes de tema e personalizações próprias você possui, será difícil adivinhar.

1 Curtiu

Estavam ativos apenas plugins publicados pela própria equipe do Discourse.
Desativei todos os plugins – o problema persiste.

O tema utilizado é o “Foundation”; independentemente do tema em que visualizo a pré-visualização, a barra lateral de administração à esquerda está ausente em todos eles.

Nenhum componente está instalado.

Você já tentou isolar se o problema é de tema ou de plugin usando as diferentes opções do modo de segurança?

Acabei de testar isso.
Se eu ativar apenas a opção “Fazer com que funções JavaScript obsoletas gerem um erro”, o problema também aparece no “modo seguro”.

Você verificou o console do navegador em busca de erros?

1 Curtiu

Isso não me surpreende, então nem plugins nem temas estão desativados. No entanto, isso não responde se o problema vem de um tema ou plugin.

A barra lateral funciona se você desativar apenas os temas?

Então poderíamos descartar os plugins como causa. Caso contrário, eu prosseguiria de forma sistemática e desativaria os plugins não oficiais.

E se isso também não ajudar, então apenas a 3ª opção.

Será que isso é suficiente para esse tipo de problema? Ou é necessário reconstruir em cada rodada?

Isso é exatamente o que eu quis dizer com minhas declarações anteriores.
Ou seja, por um lado, desativei todos os plugins gradualmente (o que não alterou o comportamento do erro) e, por outro lado, independentemente de qual das três opções superiores eu desative, a barra lateral de administração à esquerda é exibida no “modo seguro”.

Se eu ativar a opção “Fazer com que funções JavaScript obsoletas gerem um erro”, a barra lateral de administração à esquerda não é mais exibida no “modo seguro”.

Hmm. Isso é incomum. Eu esperava um comportamento de “um ou outro”. Portanto, deve haver um problema na interação entre um plugin e o tema, ou não é nenhum dos dois.
Acho que o console do navegador pode realmente ajudar agora.

Lá, dois erros são exibidos para mim:

  1. admin-sidebar.js:378 Uncaught (in promise) TypeError: n.admin_config_login_routes.map não é uma função
  2. api-sections.gjs:23 Uncaught (in promise) TypeError: Não é possível ler propriedades de undefined (lendo ‘map’)

1 Curtiu

Ótimo! Aqui é possível ver em qual linha de código o problema ocorre.

O código parece ser a solução para este problema Changing the target audience of Enable form templates incorrectly creates an Update Discourse option in the left sidebar - #2 by zogstrip

1 Curtiu

O erro listado lá não reflete exatamente o problema que estou enfrentando.
Além disso, não ficou claro para mim, pelo post, o que exatamente eu precisaria mudar para que funcionasse novamente :sweat_smile:.

Acho que seu problema resulta das alterações feitas para resolver o problema vinculado. Não tenho certeza se você pode fazer alguma alteração aqui. Espero que alguém com mais conhecimento do código tenha tempo para analisar isso em breve.

1 Curtiu

Olá @Mr.Xurrent, tenho tentado reproduzir o problema localmente, mas não consegui, independentemente de como meus plugins estão configurados. Você disse que apenas os plugins da equipe estavam habilitados, mas você tem outros plugins instalados que estejam desabilitados?

Você também pode tentar executar isso no console quando estiver vendo o erro e colar o resultado aqui:

(() => {
  const raw = JSON.parse(
    JSON.parse(document.querySelector("#data-preloaded").textContent).site
  ).admin_config_login_routes;

  const live = Discourse.__container__
    .lookup("service:site")
    .admin_config_login_routes;

  return {
    raw,
    rawType: typeof raw,
    rawConstructor: raw?.constructor?.name,
    rawIsArray: Array.isArray(raw),

    live,
    liveType: typeof live,
    liveConstructor: live?.constructor?.name,
    liveIsArray: Array.isArray(live),
    liveHasMap: typeof live?.map === "function",

    arrayPrototypeHasMap: typeof Array.prototype.map === "function",
  };
})()

Neste ponto, estou realmente sem entender como você poderia estar obtendo um valor para admin_config_login_routes que não permite o uso de map. Quando desativo todos os plugins no servidor com LOAD_PLUGINS=0, obtenho um array vazio. Em todos os outros casos, tenho um array de valores. Ambos funcionam com map, mas algo como {} ou "oauth2" fora de um array desencadearia o erro.

1 Curtiu

Olá @tannerabread ,

exato, apenas os plugins publicados pelo próprio Discourse estavam ativos – não há outros plugins instalados.

Coloquei o bloco de texto que você mencionou no console do navegador, mas nada mudou, e também não houve nenhum feedback do console do navegador.

O plugin “OAuth2” não estava ativado em nenhum momento.

Apenas para esclarecer, eu não esperava que algo mudasse com aquele bloco de código — mas eu esperava algum tipo de saída, mesmo que os valores fossem null ou undefined.

E mais um pouco: o fato de estar habilitado/desabilitado não deveria afetar a inclusão em admin_config_login_routes, a menos que o app descarregue explicitamente todos os plugins iniciando o servidor com LOAD_PLUGINS=0.


Com o bloco do console que pedi para você executar, eu esperava poder ver o valor (ou a ausência de valor) em admin_config_login_routes. Não deveria ser possível que isso estivesse vazio, e mesmo um array vazio deveria funcionar para a função de mapeamento.

Estas são principalmente reflexões e vou pensar um pouco mais em maneiras de podermos descobrir isso. Seria bom poder ver mais do seu setup, mesmo que você tenha dito que possui apenas plugins oficiais do Discourse.

Acho que uma boa pergunta seria: os plugins que você tem instalados são todos os padrões que vêm com o Discourse core, ou você também tem alguns plugins adicionais do Discourse instalados?

1 Curtiu