Ocultar categorías según la pertenencia a grupos de usuarios

Continuando la discusión de Cómo dividir el foro en dos partes principales (general/grupos) y cómo mostrar solo las subcategorías en las que puedo crear una nueva publicación:

Hola a todos,

Aquí hay un componente de tema que hace algo que he querido hacer durante mucho tiempo, pero me gustaría recibir sus comentarios sobre el código para mejorarlo o sus sugerencias.

No creo que el código sea muy bueno, por lo que no quiero recomendarlo antes de que alguien más lo revise.

Qué hace

Oculta con CSS todos los temas para los cuales el usuario tiene una restricción de permiso de categoría en las páginas seleccionadas.

Repositorio

Enlace al repositorio
framagit.org/oca/discourse-theme-shroud-subcategories

Motivación

Tengo una comunidad con muchos grupos y quiero que las personas ignoren pacientemente lo que pertenece a grupos distintos del suyo. No quiero restringir el acceso al contenido, solo no quiero que aparezca en la página principal. Deberían poder acceder a él yendo directamente, eligiendo entrar específicamente en esa categoría (por ejemplo, para saber qué se discute allí). Obviamente, la herramienta adecuada sería la función de seguimiento/ignorar, pero como la interfaz requiere más de 2 clics para configurarla, nadie en la comunidad la utiliza. Algunas mejoras en la página de categorías podrían funcionar, pero están fuera de mi alcance.

Así que uso la interfaz que es lo suficientemente sencilla para ellos: la página de grupos. En la misma página se muestran todos los grupos a los que pueden acceder, libremente o no, y su descripción. Es perfecto, solo necesitan hacer clic y elegirlos. La página de grupos está demasiado oculta para ellos (dentro del menú hamburguesa), así que podría colocar un botón grande con enlace en la página principal.

Ahora necesito vincular la pertenencia al grupo con la visualización de las publicaciones de la categoría.

Cómo funciona

El truco que usé fue configurar el permiso de categoría de la siguiente manera:

  • todos: leer, escribir
  • ese grupo: iniciar un mensaje, leer, escribir

Y luego, para cada tema en la lista, verificar si hay una restricción de categoría y, si es así, agregar una clase not-in-group al elemento del tema.

Luego, el CSS agrega display:none en consecuencia.

Interfaz de usuario

El administrador puede elegir las páginas donde este comportamiento es efectivo. No debería hacerse en la página de categorías porque, por definición, es allí donde queremos acceder al contenido. En mi sitio web, todos estos grupos son subcategorías que están ocultas en la página latest, y accedemos a ellas a través de la página /c/groups/, por lo que es esa página la que se utiliza.

Mejoras

  • Poder seleccionar categorías padre de las categorías filtradas (de modo que cualquier categoría que no sea hija de esta esté a salvo de ser omitida)
  • Agregar etiquetas, de modo que si un tema tiene esta etiqueta, no será eliminado.
10 Me gusta

Esto no tiene sentido para mí. ¿Por qué no usar los permisos de categoría para restringir lo que ven los grupos?

4 Me gusta

Porque quiero que puedan ver esas categorías, pero solo si se toman el esfuerzo de llegar a ellas. Por ejemplo, para ver de qué se habla en ese proyecto específico antes de registrarse.

Pero en la página principal, no quiero que se vean bombardeados con temas que no les interesan. Lo ideal sería que pudieran ignorarlos con la opción de seguir/ignorar, pero eso es demasiado complicado para ellos. Otra opción sería registrarse en el grupo, ir a la página de la categoría para leer de qué se habla y luego darse de baja del grupo. Eso son demasiados clics para la mayoría, además de que no se atreverían a hacerlo.

La última opción es la configuración de la categoría «quitar de lo más reciente», pero esa configuración afecta a todos los usuarios, incluso a los que siguen esa categoría. Con este método, consigo el equivalente a «quitar de lo más reciente», pero solo para algunos usuarios y en todas las páginas que desee.

Espero que ahora esté más claro.

2 Me gusta

Estas mejoras están implementadas.

4 Me gusta

Encuentro esto muy interesante. ¿Podría ver un ejemplo o unirme a un foro donde esté instalado este componente?

1 me gusta

Además, ¿filtrar con este componente también hace que las publicaciones no se envíen por correo electrónico del Resumen? Porque eso sería INCREÍBLE.

1 me gusta

No, no lo hace.
No elimina el acceso a la publicación, simplemente la oculta con CSS.
Los temas siguen siendo enviados al usuario, con la instrucción de no mostrarlos.
El caso de uso no es eliminar el acceso, sino simplemente quitarlo de la página principal (o de cualquier otra página elegida).

Lo siento, no lo he instalado en un foro sin inicio de sesión, pero siéntete libre de hacer preguntas aquí o por mensaje privado.

2 Me gusta

¡Gracias!

¿Qué significa esta parte?

1 me gusta

Si observas el código fuente de la página, la información del tema se envía. Sin embargo, el componente del tema ordena ignorarla.

1 me gusta

Solo funciona en la visualización de elementos al navegar. No es una función de silenciar ni de ignorar. Pero encuentro esta solución muy interesante para ciertos casos. ¡Felicidades a @oca por este trabajo!

2 Me gusta

Lo revisaré más de cerca. ¡Gracias de nuevo!

1 me gusta

Hola, he instalado este componente del tema y ahora tengo problemas para configurarlo. Cuando intento seleccionar etiquetas y categorías filtradas, las mías no parecen aparecer. Por ejemplo, definitivamente tenemos una etiqueta de preguntas frecuentes, pero sin éxito, no puedo seleccionarla. También intenté simplemente escribir la etiqueta, pero eso tampoco funciona.

2 Me gusta

¿Tienes las etiquetas habilitadas en el Panel de control? Se encuentran en Configuración/Etiquetas. La primera casilla en la parte superior de la lista de etiquetas es para habilitarlas. Luego, cualquier etiqueta que crees debería funcionar.

1 me gusta

Sí, las etiquetas están activadas.

1 me gusta

El parámetro de configuración no sabe qué etiquetas existen. Debes escribir el nombre de la etiqueta aquí, hacer clic en create: 'faq' y así se seleccionará el nombre de la etiqueta. Puedes seleccionar tantas etiquetas como sea necesario; cualquiera de ellas será suficiente para mostrar el mensaje.

Ten cuidado: si tu cuenta tiene privilegios de administrador, entonces tiene permisos completos para cada categoría, pero ocultar una categoría se realiza verificando si la cuenta puede efectivamente crear un nuevo mensaje. La tuya sí puede, por lo que tu cuenta podrá ver todos los mensajes en todas partes. Para probar el componente, te recomiendo que crees una cuenta de prueba para ver lo mismo que vería un usuario.

2 Me gusta

Gracias. Creo que logré que funcione y estoy muy emocionado por ver cómo avanza. Mi agradecimiento por tu trabajo.

2 Me gusta

¿Se podría hacer una excepción para las personas que están siguiendo una categoría?

1 me gusta