Plugin campo utente multiselezione rotto?

È possibile che questo sia stato influenzato dal recente aggiornamento di Discourse (attualmente alla versione 2.5.0.beta2).

Ho un campo a discesa multi-selezione che era precedentemente configurato e funzionante, impostato come modificabile dopo la registrazione, ecc.

Tuttavia, per gli utenti esistenti, sebbene i contenuti di questo campo siano visualizzati nella pagina del profilo utente, il campo non è più elencato insieme agli altri campi utente personalizzati modificabili nella pagina delle preferenze dell’utente.
In altre parole, non è più possibile per l’utente o l’amministratore apportare modifiche.

Inoltre, per i nuovi utenti che si registrano, sebbene il campo a selezione multipla sia visibile, nessuna delle opzioni a discesa è ora disponibile/visualizzata (si vede solo un sottile rettangolo blu vuoto). Poiché questo campo è impostato come obbligatorio, la registrazione non può procedere.

Si tratta di un problema noto? È confermato che un aggiornamento di Discourse ne sia la causa? È noto qual è l’ultima versione di Discourse compatibile e esiste un modo ragionevole per tornare a quella versione?

Ho pubblicato un rapporto su GitHub, ma vedo che il plugin non ha registrato alcuna attività di sviluppo da un paio d’anni, quindi non sono ottimista che una soluzione possa arrivare da quella direzione. Esistono altri metodi (funzionanti) per ottenere un menu a discesa multi-selezione per i campi utente in Discourse?

Per tua informazione, nei ultimi mesi c’è stato un importante aggiornamento del Select Kit del core alla versione 2. Questo ha interessato diversi plugin e, in particolare, questo tipo di controllo. Se questo plugin non è stato mantenuto da allora, potrebbe effettivamente non funzionare.

Ti suggerisco di contattare lo sviluppatore qui o di pubblicare un messaggio nel suo Topic meta, se esiste. Se non rispondono e la cosa è importante per te, pubblica in Marketplace per trovare un freelance che se ne occupi?

Grazie - ho contattato l’unico utente qui presente che ha un nome utente simile a quello su Github, sperando che sia la stessa persona!

È probabile che queste modifiche al core richiedano un lavoro significativo per plugin come questo?

Mi chiedo perché la selezione multipla non faccia già parte delle funzionalità principali.

È così. Ciò che è cambiato è il modo in cui il controllo viene configurato e utilizzato.

Grazie, Robert. Per fortuna @j.jaffeux ha appena indicato che è disposto a correggere il plugin - che comunità straordinaria!

È fantastico. È stato un suo aggiornamento, quindi dovrebbe essere in una posizione ideale!

Questo dovrebbe risolvere il problema:

Tuttavia, qualcuno di Procourse dovrà comunque unirlo :slight_smile:

@j.jaffeux grazie per la correzione. L’ho unita :slight_smile:

Ciao, grazie a entrambi per la straordinaria risposta!

Ho aggiornato sia il plugin che Discourse per includere le ultime modifiche, ma per me il problema della pagina del profilo utente che omette il campo a discesa persiste.

Un problema potenzialmente correlato è che in tutti i casi devo fare doppio clic sul link Profilo utente sul lato sinistro della pagina delle preferenze dell’utente. Il primo clic mostra solo i campi utente standard, e solo il secondo clic mostra anche i campi utente personalizzati, ma escludendo il campo multi-selezione (sfortunatamente, fare clic tre volte non aiuta).

Ho provato su diversi browser e ho svuotato la cache di ciascun browser.

Posso confermare, tuttavia, che le nuove registrazioni di utenti possono ora vedere le opzioni a discesa.
Questo restringe il campo del problema?

Puoi fare un video, per favore?

Certo

Nel video, metto in evidenza il campo a selezione multipla così come appare nella pagina delle preferenze utente, ma come puoi vedere, nonostante abbia cliccato due volte su “Profilo”, quel campo non appare e quindi non è ancora modificabile.

Un secondo problema che potresti notare nella pagina delle preferenze utente è che non viene visualizzata alcuna virgola tra gli elementi della selezione multipla quando ci sono più opzioni applicabili al campo per quell’utente.

Mostrami l’errore nella console del browser quando i campi non vengono visualizzati.

Per quanto riguarda le virgole, non si tratta di una regressione di Discourse.

La finestra della console mostra il messaggio seguente, alla prima cliccata su ‘Profilo’

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

Cliccando di nuovo su ‘Profilo’ non sembra che il messaggio di errore nella console cambi.
Posso inviare una registrazione video se può essere utile?
Esiste un modo per aggiungere le virgole tra le opzioni elencate? Attualmente, se più di un’opzione è applicabile, quando vengono elencate una dopo l’altra senza un separatore, sembrano tutte un’unica lunga stringa di opzione.

Ok, darò un’occhiata, più tardi oggi o domani.

Mille grazie!! Apprezzo davvero molto il tuo aiuto

Ciao, hai avuto qualche fortuna?

Non sono sicuro di come tu sia finito in questo stato, ma in qualche modo il valore della tua impostazione è errato. Ho creato una PR per il plugin per rendere il parsing più robusto e, se per qualche motivo il valore non è parsabile come JSON, far sì che ricada su un valore predefinito.

Per quanto riguarda l’altro “problema”, si tratta di una richiesta di funzionalità rivolta a chi possiede questo plugin. Non sono nemmeno sicuro che possano farlo.

Grazie!

Finora l’aggiornamento non è stato rilevato dalla mia installazione di Discourse.

Leggendo quanto sopra, sembra che sia necessario un processo di “unione” (merge)?
È qualcosa che potrei tentare di fare senza creare problemi a nessuno?

Esiste un modo per aggiornare manualmente il plugin nel frattempo e, in tal caso, Discourse sarà comunque in grado di gestire eventuali ulteriori aggiornamenti?

Questo non è un problema nel core di Discourse; ho inviato una PR al proprietario del plugin. Non c’è altro che possiamo fare finché non la uniranno.

Riuscito! L’aggiornamento è arrivato e ora sembra che tutto funzioni: grazie mille a tutti