Estamos trabajando en mejorar la experiencia de incorporación de nuestra comunidad. Naturalmente, nos gustaría usar la información que conocemos sobre el usuario para hacer/mostrar ciertas cosas basándonos en la información que nos proporcionan.
Hoy en día, nuestros usuarios inician la creación de su cuenta a través de nuestra integración OIDC creando una cuenta con nuestra empresa. Proporcionan correo electrónico, nombre y nombre de usuario a OIDC antes de que los devuelva a Discourse.
El problema
Nos gustaría ahora darles algunos campos de usuario adicionales para completar, ¡lo cual es genial porque Discourse ofrece esto! Desafortunadamente, no podemos mostrar campos basados en las respuestas de campos anteriores. Por ejemplo, nos gustaría preguntar: “¿Qué rol te describe mejor?” con las opciones, desarrollador, administrador y analista.
Si eligen desarrollador, por supuesto, quiero preguntarles cuáles son sus lenguajes de programación preferidos. También los agregaré más tarde al grupo de usuarios desarrolladores.
Si eligen analista, quiero hacerles una serie diferente de preguntas y agregarlos a un grupo de usuarios diferente.
Solución propuesta
Muchas opciones de formularios en la web hoy en día ofrecen campos de formulario condicionales (por ejemplo, ¿dónde nos conoció? si se selecciona ‘otro’, aparece un campo adicional para decir por qué). Sería genial si comenzaran un camino similar (aunque más robusto) como lo han hecho con las plantillas de formularios de nuevos temas, aunque con el requisito adicional de la capacidad de depender del ID de otro campo, y específicamente de la entrada de ese campo. Como ejemplo, podría verse algo así:
- type: dropdown
id: user-type
choices:
- "Desarrollador"
- "Administrador de Aplicaciones"
- "Analista"
attributes:
none_label: "Elige tu rol..."
label: "¿Qué opción describe mejor tu trabajo?"
validations:
required: true
- type: dropdown
id: developer-type-programming-language
depends: user-type
choices:
- "Desarrollador"
choices:
- "Desarrollador"
- "Administrador de Aplicaciones"
- "Analista"
attributes:
none_label: "Lenguaje de programación preferido..."
label: "¿Cuál es el lenguaje de programación principal utilizado en tu rol?"
validations:
required: true
En este ejemplo, a todos los usuarios se les haría la primera pregunta. Si el usuario selecciona Desarrollador de la lista desplegable, entonces aparecería una segunda pregunta en el formulario preguntando cuál es su lenguaje de programación preferido.
Esta mejora de campo condicional podría usarse tanto en el proceso de incorporación de usuarios como en el lugar original previsto de nuevos temas.
Puedes echar un vistazo a GitHub - discourse/discourse-authentication-validations que hace precisamente eso, excepto solo para la página de registro de usuarios. No parece trivial adaptarlo a la página de preferencias del usuario donde se editan esos campos.
Pero estás pidiendo una función, no buscando una solución a tu problema inmediato.
La casilla de verificación inferior añade la opción de autenticación.
Luego, rellena las respuestas del desencadenador que activarán los siguientes campos personalizados del usuario. En mi caso, es un número de auriculares mayor que Ninguno.
Una vez rellenados, apunta a los campos de usuario personalizados que deseas mostrar. En mi ejemplo, si es de 1 a 6 o más, se le pedirá al usuario que introduzca los HMD primarios y secundarios.
Esto sería genial si se extendiera a las plantillas de formulario experimentales.
¿Será posible tener esas condiciones en el perfil de usuario en lugar de solo en la página de creación de cuenta? (Estoy bastante seguro de que entiendo que solo funciona en la página de creación de cuenta; tengo a alguien que quiere que la gente regrese e ingrese cosas y que esas reglas se apliquen).
Sí, esta es actualmente la única ubicación afectada por este plugin.
Déjame asegurarme de que estamos en la misma página:
¿Quieres la capacidad de actualizar campos de usuario personalizados públicos a través de /preferences/profile y aplicamos la misma lógica condicional de ocultar/mostrar que hacemos en el modal de creación de cuenta?
¿Algo como, si el valor del campo personalizado 1 es mostrar campo personalizado 2, entonces mostrar el segundo campo personalizado?
Bueno, ¡para ti, quizás! Lo intenté y me perdí rápidamente. Parecía que debería ser casi tan fácil como copiar algunas cosas a la página de preferencias, pero solo qué cosas era más de lo que pude entender rápidamente.