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.
