La barra lateral de administrador ya no está disponible

Hola a todos,

Desde hace aproximadamente dos meses, me falta la barra lateral de administración a la izquierda (ver captura de pantalla). No encuentro ninguna opción para “activarla”, ni en la configuración ni en ningún otro lugar. Incluso al usar una ventana de incógnito del navegador, el problema persiste.
¿Alguien tiene alguna idea de qué podría estar causando esto?

Saludos cordiales,
Mr. Xurrent

¡Bienvenido al foro :wave:

¿Has probado el modo seguro? Esto podría descartar que el problema provenga de un complemento o de un componente.
También podrías revisar si hay mensajes de error en la consola del navegador.

¡Hola!

Curiosamente, lo he probado justo ahora y, en el “modo seguro”, aparece la barra lateral de administración.
¿Podrías decirme qué complemento o componente podría estar causando este problema?

Para acotar las posibilidades, primero puedes desactivar solo los complementos en modo seguro y, después, solo los temas. Así ya sabrás por dónde empezar a buscar.

En general, encontrarás ambos en la barra lateral de administración, ahora que vuelves a verla. Los complementos tienen una sección propia. También puedes añadir /admin/plugins a la URL de tu foro. Los temas los encontrarás en la sección Apariencia o en /admin/config/customize/themes.

Probablemente se trate de una personalización específica de tu foro, ya que hasta ahora no he leído de ningún otro que tenga este problema. Sin saber qué complementos no desarrollados por el equipo de Discourse utilizas, así como qué componentes de tema y personalizaciones propias tienes, será difícil adivinar la causa.

1 me gusta

Solo estaban activados los plugins publicados por el propio equipo de Discourse.
Desactivé todos los plugins, pero el problema persiste.

Se está utilizando el tema “Foundation”; independientemente del tema cuya vista previa consulte, la barra lateral de administración a la izquierda falta en todos ellos.

No hay componentes instalados.

¿Has intentado determinar si el problema proviene de un tema o de un complemento probando las distintas opciones del modo seguro?

Acabo de probarlo.
Si solo activo la opción “Hacer que las funciones de JavaScript obsoletas generen un error”, también se muestra el error en el “modo seguro”.

¿Has revisado la consola del navegador en busca de errores?

1 me gusta

No me sorprende, ya que ni los plugins ni los temas están desactivados. Sin embargo, esto no responde a la pregunta de si el problema proviene de un tema o de un plugin.

¿Funciona la barra lateral si desactivas solo los temas?

Entonces podríamos descartar los plugins como causa. De lo contrario, procedería de forma sistemática y desactivaría los plugins no oficiales

Y si eso tampoco ayuda, entonces solo la opción 3

¿Sera suficiente en este tipo de caso? ¿O hay que reconstruirlo en cada ronda?

Eso es exactamente lo que quería decir con mis afirmaciones anteriores.
Es decir, por un lado, desactivé todos los complementos uno por uno (lo cual no cambió el comportamiento del error) y, por otro lado, sin importar cuál de las tres opciones superiores desactive, en el “modo seguro” se me muestra la barra lateral de administración a la izquierda.

Si activo la opción “Hacer que las funciones JavaScript obsoletas generen un error”, en el “modo seguro” ya no se me muestra la barra lateral de administración a la izquierda.

Hmm. Eso es inusual. Habría esperado un caso de «o esto o aquello». Por lo tanto, debería ser un problema en la interacción entre un plugin y el tema, o no ser ninguno de los dos.
Creo que la consola del navegador podría ser realmente útil ahora.

Allí se me muestran dos errores:

  1. admin-sidebar.js:378 Uncaught (in promise) TypeError: n.admin_config_login_routes.map no es una función
  2. api-sections.gjs:23 Uncaught (in promise) TypeError: No se pueden leer las propiedades de indefinido (leyendo ‘map’)

1 me gusta

¡Genial! Aquí se puede ver en qué línea de código surge el problema.

El código parece ser la solución a este problema Changing the target audience of Enable form templates incorrectly creates an Update Discourse option in the left sidebar - #2 by zogstrip

1 me gusta

El error mencionado allí no refleja exactamente el problema que estoy experimentando.
Además, no queda claro para mí por la publicación qué exactamente debería cambiar para que vuelva a funcionar :sweat_smile:.

Supongo que tu problema se debe a los cambios realizados para solucionar el problema vinculado. No estoy seguro de que puedas modificar algo aquí. Esperemos que alguien con más conocimiento del código tenga tiempo de echarle un vistazo pronto.

1 me gusta

Hola @Mr.Xurrent, he estado intentando reproducirlo localmente y no he podido, independientemente de cómo tenga configurados mis complementos. Dijiste que solo los complementos del equipo estaban habilitados, pero ¿tienes algún otro complemento instalado que esté desactivado?

¿Podrías también intentar ejecutar esto en la consola cuando veas el error y pegar el resultado aquí?

(() => {
  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",
  };
})()

En este punto, realmente no entiendo cómo podrías estar obteniendo un valor para admin_config_login_routes que no permita usar map. Cuando desactivo todos los complementos del servidor con LOAD_PLUGINS=0, obtengo una matriz vacía. En todos los demás casos, tengo una matriz de valores. Ambos funcionan con map, pero algo como {} o "oauth2" fuera de una matriz provocaría el error.

1 me gusta

Hola @tannerabread ,

sí, solo estaban activos los plugins publicados por Discourse; no hay otros plugins instalados.

He añadido el bloque de texto que mencionaste en la consola del navegador, pero no ha habido ningún cambio, ni tampoco ha habido ninguna respuesta de la consola del navegador.

El plugin “OAuth2” no estuvo activado en ningún momento.

Solo para aclarar, no esperaba que nada cambiara con ese bloque de código — pero sí esperaba algún tipo de salida, incluso si los valores eran null o undefined.

Y un poco más, que esté habilitado o deshabilitado no debería afectar que esté incluido en admin_config_login_routes, a menos que la aplicación descargue explícitamente todos los plugins iniciando el servidor con LOAD_PLUGINS=0.


Con el bloque de consola que te pedí que ejecutaras, esperaba poder ver el valor (o la falta de valor) en admin_config_login_routes. No debería ser posible que esté vacío, y aun un array vacío debería funcionar para la función map.

Estos son principalmente pensamientos y reflexionaré un poco más sobre formas de poder resolver esto. Sería bueno poder ver más de tu configuración, aunque dijiste que solo tienes plugins oficiales de Discourse.

Supongo que una buena pregunta es si los plugins que tienes instalados son todos los predeterminados que vienen incluidos con Discourse core, o si también tienes algunos plugins adicionales de Discourse instalados.

1 me gusta