¿Las respuestas del tema son invisibles hasta que el propietario del tema decida revelarlas?

Así es, mi pareja es profesora (de griego antiguo y latín clásico) y lleva usando Discourse en sus clases desde hace varios años. La utiliza principalmente para distribuir tareas a sus alumnos y discutirlas posteriormente. Sin embargo, hasta ahora todas las tareas se entregaban en papel durante las clases.

Hasta ahora, dado que los centros educativos han cerrado por la pandemia de coronavirus, está pasando a una enseñanza 100 % en línea, incluidas las tareas. Por lo tanto, todos los alumnos le están enviando sus trabajos por correo electrónico. Esto es muy ineficiente, ya que requiere que ella realice una gran cantidad de trámites administrativos (y puedo decirles que no se le dan muy bien ese tipo de cosas ;)).

Hablamos de varias opciones y ella dijo: «¿Por qué no puedo tener un tema donde solo se puedan ver mis publicaciones (es decir, las realizadas por el creador del tema) y las suyas propias? Esto me permitiría publicar una tarea como tema y que cada alumno responda debajo sin poder ver las respuestas de los demás. Luego, cuando todos hayan enviado su trabajo y sea momento de discutir, quiero poder pulsar un botón para levantar el velo y hacer que todas las publicaciones del tema sean visibles para todos, de modo que puedan ver y debatir el trabajo de los demás».

¡Sí, es brillante! (Por eso la quiero tanto).

Voy a desarrollar un plugin para esto, probablemente aprovechando el plugin «solved» para el interruptor mágico (hacer que todo sea visible tan pronto como el tema se marque como resuelto). Pero antes de empezar, quería conocer vuestra opinión, recibir comentarios y, quizás, obtener algunas ideas para mejorarlo aún más.

También sería muy bienvenido cualquier consejo sobre cómo implementar esto de manera eficiente, ya que hay muchas formas de recuperar un tema y, si un solo alumno encuentra una manera de eludirlo, todo perdería su utilidad.

¿Todo lo relacionado con un tema pasa por un TopicView? ¿Podría aprovechar username_filters? ¿O crear algo similar? ¿O es mejor usar un guardian?

¡Quedo a la espera de vuestras opiniones!

18 Me gusta

Depende en gran medida de las garantías de seguridad necesarias aquí, pero dado que asumo que los estudiantes son bastante astutos, una solución solo con CSS no funcionará.

Ahora, si una solución con CSS no funciona y es probable que estos chicos sean traviesos y encuentren cada laguna para hacer trampa.

Podrían ocurrir expansiones de backdoor [quote] y todo tipo de otras travesuras. Un parche simple para “puede ver la publicación” podría no ser suficiente.

Una forma muy segura de hacerlo sería mediante mensajes privados (PM): los estudiantes envían el material a través de un PM y, una vez terminado… un “clic” mueve todos los PMs al tema. Limpio… sencillo… seguro.

18 Me gusta

¿Son las soluciones subidas o texto del compositor?

Si son subidas, usar los nuevos Cargas de medios seguras, junto con un plugin para cambiar la forma en que se genera la URL temporal para las descargas de los usuarios, de modo que solo se generen URLs “válidas” para el personal, podría funcionar y ser un cambio mínimo. Una vez que un tema se resuelve, etiqueta o cierra, la URL temporal vuelve al estado normal para que todos puedan ver todo.

También es interesante que puedas ver a las personas enviando sin ver el contenido del envío.

8 Me gusta

¡Gracias a ambos por los comentarios y las ideas!

El problema es que tiene 6 clases diferentes con quizás 2 o 3 tareas cada una funcionando simultáneamente, por lo que tiene alrededor de 15 tareas diferentes que gestionar. Así que no va a ser tan sencillo, supongo.

No, solo con CSS no funcionará, eso es seguro. Por otro lado, no sería un gran problema si esto se supera una o dos veces, siempre y cuando no termine parcheando problemas todos los días.

Esa es una idea realmente genial. Pero son mayormente textos del editor y ella no quiere obligar a que todo sea una carga.

2 Me gusta

Voy a editar el título, ya que esta es la solicitud.

Mi intuición me dice que esto se parece más a un plugin de spoilers que a cualquier otra cosa. Los spoilers solo serían revelables por el propietario del tema.

4 Me gusta

El spoiler será un poco complicado porque entonces también tendrás que proteger las rutas /raw.

Quizás:

  • El profesor publica: “¿Por qué comenzó la guerra en Indochina?”

  • El estudiante crea un MP a sí mismo con la tarea y, una vez terminada, publica un enlace en el tema. (Ventaja: permite revisiones y no molesta al profesor)

  • El profesor puede entonces brindar “retroalimentación directa” en el MP.

  • Una vez que todo esté calificado, el profesor hace clic en “Publicar”, lo que copia el contenido sin formato del MP y reemplaza el enlace al MP en el tema de la tarea.

7 Me gusta

La gente lo pregunta varias veces al año y la respuesta siempre es: «No puedes tener permisos específicos por tema». Si logras resolver esto, creo que habrá un interés considerable.

6 Me gusta

Bueno, esto es un poco delicado. He estado trabajando un poco en TopicView y PostGuardian, y con eso llego al 80% sin demasiado esfuerzo, incluyendo /raw y trucos con la edición de los números de las citas. Por ahora, todavía puedo ver publicaciones que no debería poder ver a través de:

  • búsqueda
  • actividad de usuario
  • correos electrónicos de resumen

Así que necesita más parches. Por ahora, lo anterior es todo lo que se me ocurre. Son bienvenidas sugerencias sobre otras formas de acceder a una publicación.

4 Me gusta

Y esa sigue siendo la respuesta. Creo que incluso plantear esta pregunta indica que la persona que la formula no ha reflexionado realmente sobre lo que intenta lograr, a decir verdad.

No me importa un modo de ocultar (spoiler) mejorado, de hecho, creo que tiene sentido.

4 Me gusta

¿Y si esto se implementara como ‘usuarios normales creando publicaciones susurradas’?

2 Me gusta

¿Susurros para quién? ¿Para el propietario del tema? Entonces deben ser degradados de los susurros.

4 Me gusta

Aún tengo que terminar algunos detalles menores, pero ya tengo un plugin funcional en GitHub - communiteq/discourse-private-replies · GitHub

Después de instalar y activar el plugin, el propietario del tema (y el personal) verá un botón adicional en la parte inferior de cada tema llamado Respuestas privadas.

El botón se puede usar para activar o desactivar el modo de ‘respuestas privadas’ para el tema.

Cuando el modo de respuestas privadas está activado:

  • los propietarios del tema aún pueden ver todas las publicaciones
  • todos los demás usuarios solo verán las publicaciones realizadas por el propietario del tema, el personal y ellos mismos.

Un tema de este tipo se puede identificar por un banner en la parte superior del tema:

image

Cuando el propietario del tema decida hacer públicas las publicaciones, puede usar el mismo botón en la parte inferior del tema (ahora llamado ‘Respuestas públicas’) para desactivar el modo de respuestas privadas. El banner desaparecerá y todas las publicaciones serán visibles para todos (respetando, por supuesto, la seguridad de la categoría).

El plugin deshabilita las siguientes formas de recuperar el contenido de las publicaciones:

  • vista del tema (es decir, la forma habitual de ver las publicaciones)
  • perfil de usuario - actividad
  • búsqueda
  • sin procesar (/raw/id_tema/id_publicación)

Aviso 1:

El plugin no oculta completamente quién publicó en el tema. Los avatares de los usuarios en la lista de temas permanecen sin cambios y los temas también son visibles en el perfil de usuario - resumen. Sin embargo, ninguno de estos dos revela el contenido de la publicación.

Aviso 2:

No sé si existen formas de recuperar el contenido de las publicaciones que pueda haber pasado por alto. (Aún tengo que probar, por ejemplo, si los resúmenes revelan algo). Mi SO va a probar esto en las próximas semanas y no tengo dudas de que sus estudiantes podrán encontrar algunos agujeros inteligentes. ¡Intentaré cerrarlos tan pronto como me enteré de ellos! Las sugerencias y consejos son bienvenidos.

Esta semana publicaré una entrada en la categoría de plugins y un buen README.md. Mientras tanto, ¡me encantaría recibir sus comentarios!

9 Me gusta

¿Cuáles son las implicaciones de rendimiento de esto? Muchos plugins de terceros logran agregar consultas N+1, N al cuadrado, N al cubo, N elevado a la N… espero que esto se pueda evitar aquí.

También sería ideal que se pueda activar o desactivar por tema y tener un impacto de rendimiento cero en cualquier otro tema, excepto en aquellos donde se active, en lugar de un costo global que deba pagarse todo el tiempo.

7 Me gusta

Hice lo posible por mantener las cosas lo más eficientes posible, es decir, evaluar con la mayor pereza posible y salir de cualquier filtro lo antes posible.

Sin duda, hay margen para pequeñas optimizaciones, como almacenar en caché los IDs de los usuarios del personal y los IDs de los temas protegidos, pero creo que lo hice bastante bien para una primera versión. Si alguien no está de acuerdo, siéntete libre de criticar mi código.

9 Me gusta