¿Plugin de campo de usuario multiselección roto?

Es posible que esto se vea afectado por la actualización reciente de Discourse (actualmente en la versión 2.5.0.beta2).

Tengo un campo de menú desplegable multiselección que estaba configurado y funcionando correctamente, y establecido como editable después del registro, entre otras cosas.

Sin embargo, ahora, para los usuarios existentes, aunque el contenido de este campo se muestra en su página de perfil de usuario, el campo ya no aparece junto con los demás campos personalizados editables en su página de preferencias de usuario.

En otras palabras, ya no hay forma de que el usuario o el administrador lo modifiquen.

Además, para los nuevos usuarios que se registran, aunque el campo multiselección es visible, ninguna de las opciones del menú desplegable está disponible o se muestra (solo se ve un rectángulo azul estrecho y vacío). Como este campo está establecido como obligatorio, el registro no puede continuar.

¿Se trata de un problema conocido? ¿Está confirmado que fue causado por la actualización de Discourse? ¿Se sabe cuál es la versión más reciente de Discourse compatible con esto? ¿Y existe alguna forma sensata de volver a ella?

He publicado un informe en GitHub, pero veo que el plugin no ha tenido actividad de desarrollo en los últimos dos años, por lo que no soy optimista de que una solución provenga de esa dirección. ¿Existen otras formas (que funcionen) de implementar un menú desplegable multiselección para los campos de usuario en Discourse?

FYI: En los últimos meses se realizó una gran actualización del Select Kit del núcleo a la versión 2. Esto afectó a varios complementos y, específicamente, a este tipo de control. Si este complemento no ha sido mantenido desde entonces, es posible que realmente no funcione.

Te sugiero que le envíes un mensaje al desarrollador aquí o que publiques en su tema de metadatos, si existe. Si no responden y es lo suficientemente importante para ti, publica en Marketplace para que un freelancer lo tome.

3 Me gusta

Gracias. He enviado un mensaje al único usuario de aquí que tiene un nombre de usuario similar al de GitHub; ¡espero que sea la misma persona!

¿Es probable que esos cambios en el núcleo requieran un trabajo significativo de reestructuración para complementos como este?

Me pregunto por qué la selección múltiple no forma parte ya de la funcionalidad del núcleo.

Así es. Lo que ha cambiado es la forma en que se configura y utiliza el control.

Gracias, Robert. Por suerte, @j.jaffeux acaba de indicar que estaría dispuesto a arreglar el plugin. ¡Qué comunidad tan increíble es esta!

1 me gusta

¡Eso es genial! Como fue su actualización, debería estar en una buena posición.

Esto debería solucionarlo:

Sin embargo, alguien de Procourse tendrá que fusionarlo :slight_smile:

4 Me gusta

@j.jaffeux gracias por la corrección. La he fusionado :slight_smile:

5 Me gusta

¡Hola, gracias a ambos por una respuesta increíble!

He actualizado tanto el plugin como Discourse para incluir los últimos cambios, pero el problema de que la página de perfil del usuario omita el campo de lista desplegable persiste para mí.

Un problema posiblemente relacionado es que, en todos los casos, tengo que hacer doble clic en el enlace Perfil de usuario en el lado izquierdo de la página de preferencias de usuario. El primer clic muestra solo los campos estándar del usuario, y solo el segundo clic muestra también los campos personalizados del usuario, pero excluyendo el campo de selección múltiple (desafortunadamente, hacer clic tres veces no ayuda).

Lo he probado en varios navegadores y he borrado la caché del navegador en cada caso.

Puedo confirmar, sin embargo, que los nuevos usuarios que se registran ahora pueden ver las opciones de la lista desplegable.
¿Esto ayuda a delimitar el problema?

¿Podrías hacer un video, por favor?

¡Claro! 2020-03-12_00h34_39|video

En el video, destaco el campo de selección múltiple tal como se muestra en la página de preferencias del usuario. Sin embargo, como puedes ver, a pesar de hacer clic dos veces en “Perfil”, ese campo no aparece, por lo que aún no es editable.

Un problema secundario que podrías notar en la página de Preferencias del usuario es que no aparece ninguna coma entre los elementos de selección múltiple cuando hay más de una opción aplicable al campo para ese usuario.

Por favor, muéstrame el error en la consola de tu navegador cuando los campos no se muestran.

En cuanto a las comas, eso no es una regresión de Discourse.

La ventana de la consola muestra el siguiente mensaje la primera vez que hago clic en ‘Perfil’:

VM173:1 Uncaught SyntaxError: Unexpected token N in JSON at position 0
    at JSON.parse (<anonymous>)
    at t.init_values (_discourse-multiselect-user-field-307aa8bb3934aada9a7d682455decf422704c235754739f0d5e4b19e3e909690.js:63)
    at D (_ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:25381)
    at p (_ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:41427)
    at Function.e.create (_ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:42006)
    at e.t.create (_ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:11490)
    at t.n.create (_ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:18623)
    at Object.evaluate (_ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:60870)
    at e.t.evaluate (_ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:59374)
    at e.t.evaluateSyscall (_ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:62789)
init_values @ _discourse-multiselect-user-field-307aa8bb3934aada9a7d682455decf422704c235754739f0d5e4b19e3e909690.js:63
D @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:25381
p @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:41427
e.create @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:42006
t.create @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:11490
n.create @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:18623
(anonymous) @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:60870
t.evaluate @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:59374
t.evaluateSyscall @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:62789
t.evaluateInner @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:62735
t.evaluateOuter @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:62727
e.next @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:64859
e.execute @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:64843
t.handleException @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:63724
t.handleException @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:63904
t.throw @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:63622
r.evaluate @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:60213
t.execute @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:63609
t.rerender @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:63936
h.render @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:19079
V @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:25920
t._renderRoots @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:19372
t._renderRootsTransaction @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:19410
t._revalidate @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:19456
t.invoke @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:66276
t.flush @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:66168
t.flush @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:66372
t._end @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:66948
t.end @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:66634
t._run @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:67003
t._join @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:66977
t.join @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:66694
f @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:53486
(anonymous) @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:45901
r @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:49817
handleEvent @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:45897
handleEvent @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:44834
(anonymous) @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:45224
dispatch @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:5251
v.handle @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:5058
Show 10 more frames

Al hacer clic en ‘Perfil’ nuevamente, parece que el mensaje de error en la consola no cambia.
¿Puedo enviar una captura de video si eso ayuda?
¿Existe alguna forma de agregar comas entre las opciones enumeradas? Actualmente, si se aplica más de una opción, al listarse una tras otra sin un separador, se leen como si todas fueran una sola cadena de opción larga.

Vale, echaré un vistazo más tarde hoy o mañana.

1 me gusta

¡Muchas gracias!! Realmente aprecio tu ayuda

Hola, ¿has tenido suerte?

No estoy seguro de cómo terminaste en este estado, pero de alguna manera el valor de tu configuración es incorrecto. He enviado una PR al plugin para que el análisis sea más resistente y, si por alguna razón el valor no es analizable por JSON, se use un valor predeterminado.

En cuanto a la otra “incidencia”, es una solicitud de función dirigida a quienes poseen este plugin. Aunque no estoy seguro de si realmente pueden hacerlo.

1 me gusta

¡Gracias!

Hasta ahora, la actualización no ha sido detectada por mi instalación de Discourse.

Por lo que leo más arriba, ¿parece que se requiere un proceso de ‘fusión’?
¿Es algo que podría intentar hacer sin causar problemas a nadie?

¿Existe alguna forma de actualizar el plugin manualmente por el momento y, de ser así, seguirá pudiendo Discourse gestionar futuras actualizaciones?

Esto no es un problema en el núcleo de Discourse; envié una PR al propietario del plugin. No hay nada más que podamos hacer hasta que la fusionen.

3 Me gusta

¡Éxito! La actualización llegó y todo parece estar funcionando ahora. Muchas gracias, chicos.

2 Me gusta