Las opciones deshabilitadas sin categoría se muestran en los menús desplegables de categorías

¿Está esto en su última forma? Está deshabilitado y todo:

Pero aparece en varios menús desplegables de categorías. Probablemente no sea un gran problema en el backend, pero también se sugiere en la búsqueda:

1 me gusta

No tengo reproducción de esto en la rama principal.

@j.jaffeux Puedo reproducirlo en try.discourse.org. Puedo decir que la configuración “Permitir temas no categorizados” está deshabilitada en ese foro porque “No categorizado” no está presente en el menú “categoría…” del compositor de temas.

Menú de Búsqueda Avanzada

“No categorizado” está presente en el menú “Categorizado” de la búsqueda avanzada en la página de búsqueda.

  1. Haz clic en el siguiente enlace para abrir la página de búsqueda avanzada del foro de demostración de Discourse en tu navegador web:
    https://try.discourse.org/search
  2. Haz clic en “Filtros avanzados”.
    La sección “Filtros avanzados” de la página se expandirá.
  3. Haz clic en el menú “Todas las categorías”.
    El menú se abrirá.

:bug: Hay un elemento “No categorizado” presente en el menú.

Autocompletado de Búsqueda

  1. Haz clic en el siguiente enlace para abrir el foro de demostración de Discourse en tu navegador web:
    https://try.discourse.org/
  2. Haz clic en el icono de la lupa (“Buscar”) en la esquina superior derecha de la página.
    Se abrirá la interfaz de búsqueda.
  3. Escribe #u en el campo “Buscar”.
    Aparecerá el menú de autocompletado del filtro de categorías.

:bug: Hay un elemento “No categorizado” presente en el menú de autocompletado del filtro de categorías.

Autocompletado del Compositor de Publicaciones

  1. Si aún no tienes una cuenta, crea una en try.discourse.org.
  2. Inicia sesión en tu cuenta en try.discourse.org.
  3. Haz clic en el siguiente enlace para abrir el foro de demostración de Discourse en tu navegador web:
    https://try.discourse.org/
  4. Haz clic en el botón “Nuevo Tema” en la esquina superior derecha de la página.
    Se abrirá el compositor de temas.
  5. Haz clic en el campo del cuerpo de la publicación en el compositor de temas.
  6. Escribe #u en el campo “Buscar”.
    Aparecerá el menú de autocompletado del filtro de categorías.

:bug: Hay un elemento “no categorizado” presente en el menú de autocompletado del filtro de categorías.

Reordenar Categorías

También puedo reproducir la presencia de la categoría “No categorizado” en el diálogo “Reordenar Categorías”. Lo reproduje en un foro en el que soy administrador y donde la configuración “Permitir temas no categorizados” está deshabilitada (obviamente no puedo probarlo en try.discourse.org). Ese foro utiliza la versión de Discourse d8c855e55978d00fc63021b31ecd00a4bee9d922.

  1. Inicia sesión con una cuenta de administrador en un foro donde la configuración “Permitir temas no categorizados” esté deshabilitada.
  2. Abre la página “Categorías” (/categories).
  3. Haz clic en el icono de la llave inglesa (“Gestionar categorías”) cerca de la esquina superior derecha de la página.
    Se abrirá el diálogo “Reordenar Categorías”.

:bug: Hay un elemento “No categorizado” presente en el diálogo.

Estoy de acuerdo con @manuel en que la presencia en este diálogo es menos grave que la presencia en las interfaces visibles para el usuario, pero pensé que debería mencionarlo, ya que aparentemente ni siquiera puedes reproducir ese error.

3 Me gusta

@hugh ni siquiera estoy seguro de que queramos mantener este nido de víboras “sin categorizar” a largo plazo.

A lo largo de los años, me esforcé por deshacerme de la mayor parte posible, pero siguen apareciendo nuevos casos extremos.

En mi opinión, deberíamos deshacernos de la configuración y simplemente permitir que las personas elijan una categoría predeterminada. Un componente de tema puede ocultar una insignia de categoría particular para los casos raros en los que las personas no quieren mostrarla en “General” o similar.

2 Me gusta

¿Pudieron los mantenedores reproducir la falla siguiendo los procedimientos que describí en mi respuesta anterior? Pregunto porque veo que el tema todavía tiene la etiqueta needs-repro.

Si pueden reproducir la falla, por favor eliminen esa etiqueta del tema para que quede claro que el informe es ahora procesable en su estado actual.

2 Me gusta

Aguanta, compañero, se nos salió del radar, priorizando esto para confirmar la reproducibilidad y asignarlo al miembro xp

1 me gusta

Per, odio tener que responder esto con “prueba otra cosa”

Pero me pregunto, ¿qué te impide simplemente terminar el uso de “suprimir no categorizados” en Arduino?

Encuentro que toda esta función es una curva de confusión, en un universo paralelo simplemente eliminaría la configuración del sitio, los temas necesitan una categoría, por lo que tener este universo donde los temas tienen una categoría (pero en realidad no tienen una categoría) es confuso y realmente aporta muy poco a los usuarios finales dado que puedes simplemente meter cosas en “general” si la gente no puede categorizar.

¿Te gustaría que te ayudemos a portar la “recuperación de temas que no están categorizados” a una categoría “General”?

2 Me gusta

¿Con esto te refieres a desmarcar la configuración del sitio “Permitir temas no categorizados”?

Si es así, así es como está configurado el Foro de Arduino (y siempre lo ha estado).

Ten en cuenta que, con la excepción de “Reordenar categorías” (que ya hemos especificado que no es muy importante), he verificado que la falla se puede reproducir siguiendo las instrucciones que proporcioné en try.discourse.org. Por lo tanto, el Foro de Arduino no es directamente relevante para esta conversación. Por lo que puedo ver como usuario normal, la configuración del sitio “Permitir temas no categorizados” está deshabilitada en try.discourse.org.

El problema reportado aquí es que la categoría Uncategorized se expone en la interfaz de usuario en foros que tienen esa categoría deshabilitada a través de la configuración del sitio “Permitir temas no categorizados”.

Eso está bien para mí.

Como alguien que ha luchado durante años para que los usuarios elijan una categoría apropiada para sus temas, puedo entender por qué a algunos operadores de foros les resultaría útil tener una función que permita a los usuarios la opción de omitir la elección de una categoría. Sin embargo, no tengo ningún interés en usar la función “Permitir temas no categorizados” en mi foro, por lo que la eliminación de la función no me afectaría personalmente.

Dado que no tengo experiencia usando la función “Permitir temas no categorizados”, no puedo comentar sobre los méritos relativos de la función frente a simplemente usar una categoría normal como propones.

Creo que es una buena idea hablar con alguien que use la función para entender si es realmente necesaria; simplemente no soy esa persona.

No estoy seguro de entender a qué te refieres con esto. Sin embargo, me gustaría entenderlo.

¿Estás ofreciendo algún tipo de asistencia con la categorización del Foro de Arduino?

Si estás mirando el Foro de Arduino, algo que podría causar confusión es que sí tenemos una categoría llamada “Sin categorizar”. Sin embargo, esta es una categoría normal que simplemente tiene ese nombre, no la categoría especial que proporciona la configuración del sitio “Permitir temas no categorizados”. Nuestra categoría “Sin categorizar” tiene en realidad un propósito completamente opuesto a la función “Permitir temas no categorizados”. No es relevante en absoluto para el tema de este informe de error, pero en caso de que estés interesado en por qué lo hicimos, se explica aquí.

2 Me gusta

Entiendo, acabo de hacer un poco de depuración local, confirmo que esto es 100% reproducible en instalaciones predeterminadas de Discourse.

Permítanme recapitular aquí:

Hay 2 configuraciones cuando se trata de no categorizado:

allow_uncategorized_topics predeterminado desactivado
suppress_uncategorized_badge predeterminado activado

cuando allow_uncategorized_topics está deshabilitado (configuración predeterminada), filtramos su presencia en ciertos lugares.

Si intenta solucionar esto habilitando no categorizado para poder eliminarlo, se le presenta:

En Discourse, esta categoría es muy extraña en el sentido de que:

  1. Debe estar allí
  2. No se puede eliminar
  3. La inyectamos en mucha lógica en muchos lugares:

Podemos solucionar la fuga simplemente agregando más y más condicionales, probablemente ya estemos en al menos 10, tanto en el cliente como en el servidor.

O podemos solucionarlo en el núcleo, simplemente permitir que los administradores eliminen la categoría, entonces desaparecerá y nunca necesitaremos verificarla.

Mi recomendación aquí es:

  1. Eliminar ambas configuraciones y la configuración oculta uncategorized_category_id
  2. Tener un concepto de categoría predeterminada (que ya tenemos): ya tenemos default_composer_category
  3. ‘uncategorized’ entonces ya no es un concepto especial, menos cosas que razonar.
  4. Tener un componente temático para las personas que deben tener una “categoría sin insignia”.

El error de búsqueda actual se puede solucionar con algo como:

diff --git a/app/assets/javascripts/select-kit/addon/components/search-advanced-category-chooser.js b/app/assets/javascripts/select-kit/addon/components/search-advanced-category-chooser.js
index a678919d16..83a9ed27db 100644
--- a/app/assets/javascripts/select-kit/addon/components/search-advanced-category-chooser.js
+++ b/app/assets/javascripts/select-kit/addon/components/search-advanced-category-chooser.js
@@ -1,4 +1,5 @@
 import { classNames } from "@ember-decorators/component";
+import { setting } from "discourse/lib/computed";
 import CategoryChooserComponent from "select-kit/components/category-chooser";
 import {
   pluginApiIdentifiers,
@@ -7,11 +8,13 @@ import {
 
 @classNames("search-advanced-category-chooser")
 @selectKitOptions({
-  allowUncategorized: true,
+  allowUncategorized: "allowUncategorized",
   clearable: true,
   none: "category.all",
   displayCategoryDescription: false,
   permissionType: null,
 })
 @pluginApiIdentifiers("search-advanced-category-chooser")
-export default class SearchAdvancedCategoryChooser extends CategoryChooserComponent {}
+export default class SearchAdvancedCategoryChooser extends CategoryChooserComponent {
+  @setting("allow_uncategorized_topics") allowUncategorized;
+}
import { render } from "@ember/test-helpers";
import { module, test } from "qunit";
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
import selectKit from "discourse/tests/helpers/select-kit-helper";
import SearchAdvancedCategoryChooser from "select-kit/components/search-advanced-category-chooser";

module(
  "Integration | Component | select-kit/search-advanced-category-chooser",
  function (hooks) {
    setupRenderingTest(hooks);

    hooks.beforeEach(function () {
      this.set("subject", selectKit());
    });

    test("respects allow_uncategorized_topics setting when false", async function (assert) {
      this.siteSettings.allow_uncategorized_topics = false;

      await render(
        `<template><SearchAdvancedCategoryChooser /></template>`
      );

      await this.subject.expand();

      // Uncategorized category (ID 17 in test data) should not be present when setting is false
      assert.false(
        this.subject.rowByValue(17).exists(),
        "uncategorized category is not available when allow_uncategorized_topics is false"
      );
    });

    test("shows uncategorized category when allow_uncategorized_topics is true", async function (assert) {
      this.siteSettings.allow_uncategorized_topics = true;

      await render(
        ` <template><SearchAdvancedCategoryChooser /></template>`
      );

      await this.subject.expand();

      // Uncategorized category (ID 17 in test data) should be present when setting is true
      assert.true(
        this.subject.rowByValue(17).exists(),
        "uncategorized category is available when allow_uncategorized_topics is true"
      );
    });

    test("has correct default options", async function (assert) {
      await render(
        `<template><SearchAdvancedCategoryChooser /></template>`
      );

      assert.strictEqual(
        this.subject.header().label(),
        "All categories",
        "has correct default none label"
      );
    });
  }
);

Pero ese es solo el error de búsqueda avanzada, estamos jugando al whack-a-mole aquí…

3 Me gusta