Multiselect user field plugin broken?

Possibly this has been affected by recent Discourse update (currently on 2.5.0.beta2).
I have a multiselect dropdown feild that was previously set up and working, and set as editable after sign up etc

but now for existing users while contents of this field are displayed in their user profile page, the field is not listed with the other editable custom user fields in their user preferences page.
In other words there is no longer a way for user or administrator to change.

Also, for new users signing up, while the mutiselect field is visible, none of the drop down options are now available/showing (just see a slim blank blue rectangle) - and because this is a set as a mandatory field, sign-up cannot proceed.

Is this a known issue?, and is it confirmed that a Discourse update caused it? Is it known what the most recent compatible Discourse version is - and it there any sensible way to revert to it?

I have posted a report to GitHub, but see that the plugin has not seen any development activity for a couple of years, so not optimistic that a solution will come from that direction. Are there any other (working) ways to achieve a multi-select dropdown for user fields in Discourse?

FYI there was a big upgrade to coreā€™s Select Kit to version 2 in the last few months. This affected a number of plugins and specifically this kind of control. If this plugin has not been maintained since then it may indeed not work.

Suggest you message the dev on here or post in its meta Topic if it exists? If they donā€™t respond and itā€™s important enough to you, post in marketplace for a freelancer to pick it up?

3 Likes

Thanks - have messaged the only user on here who has similar username to the one on Github - hoping it is same person!

Is it likely that those changes to core would necessitate significant re-work for plugins like this?

I wonder why multiselect is not already part of core functionality?

It is. What has changed is the way the control is configured and used.

Thanks Robert. Very fortunately @joffreyjaffeux has just indicated he would be willing to fix the plugin - what an amazing community this is!

1 Like

Thatā€™s great. It was his upgrade so he should be well placed!

This should fix it:

https://github.com/procourse/discourse-multiselect-user-field/pull/2

Someone at Procourse will have to merge it though :slight_smile:

4 Likes

@joffreyjaffeux thank you for the fix. I merged it :slight_smile:

5 Likes

Hi thank you both for an amazing response!

I have updated both the plugin and Discourse to include latest changes, but issue with user profile page omitting drop down field remains for me.

A possibly related issue is that in all cases, I have to click twice on the User Profile link on left hand side of User preferences page. The first click brings up the standard user fields only, and only the second click brings up the custom user fields as well - but excluding the multi-select field (unfortunately, clicking 3 times does not help)

I have tried on several browsers, and cleared browser cache in each case

I can confirm that new user signups can now see the drop down options however.
Does this narrow the problem down?

can you make a video please ?

Sure

In the video, I highlight the multi-select field as it displays in user preferences page, but as you can see, despite clicking twice on ā€˜Profileā€™, that field does not appear, so is still not editable.

A secondary issue you may notice, on the User Preferences page, is that there is no comma appearing between multi select items when there is more than one option applicable to the field for that user.

Please show me the error in your browser console, when fields are not showing.

Concerning commas thatā€™s not a Discourse regression.

Console window shows the below message, the first time I click on ā€˜Profileā€™

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

Clicking ā€˜Profileā€™ again does not seem to change the error message in console.
I can send video capture if that helps?
Is there any way to add the commas between options listed? Currently if more than one option applies, when listed one after the other without a separator, they read as if all are one long option string.

Ok will have a look, later today or tomorrow.

1 Like

Many thanks!! Really appreciate your help

Hi, any luck at all?

Iā€™m not sure how you ended up in this state, but somehow the value of your setting is wrong. I made a PR to the plugin to have parsing more resilient and fallback to some default if for some reason the value is not parsable by JSON.

https://github.com/procourse/discourse-multiselect-user-field/pull/3

Concerning the other ā€œissueā€, thatā€™s a feature request for people owning this plugin. Iā€™m not actually sure they can do it though.

1 Like

Thank you!

Update so far not detected by my Discourse installation.

Reading above, sounds like a ā€˜mergeā€™ process is required?
Is this something I could attempt to do, without causing havoc to anyone?

Is there a way to manually update plugin in the meantime, and if so will Discourse still be able to manage any further updates?

This is not a problem in discourse core, I sent a PR to the plugin owner. Nothing else we can do until they merge it.

3 Likes

Success! Update came through and everything now seems to be working - many thanks guys

2 Likes