Plugin de campo de usuário multisseleção quebrado?

Possivelmente isso foi afetado pela atualização recente do Discourse (atualmente na versão 2.5.0.beta2).

Tenho um campo de menu suspenso multisseleção que estava configurado e funcionando anteriormente, definido como editável após o cadastro, etc.

Mas agora, para usuários existentes, embora o conteúdo desse campo seja exibido na página do perfil do usuário, o campo não aparece listado junto com os outros campos personalizados editáveis na página de preferências do usuário.

Em outras palavras, não há mais como o usuário ou administrador alterar esse campo.

Além disso, para novos usuários se cadastrando, embora o campo multisseleção seja visível, nenhuma das opções do menu suspenso está disponível/exibida (apenas um retângulo azul fino e vazio). Como esse campo está definido como obrigatório, o cadastro não pode prosseguir.

Isso é um problema conhecido? E está confirmado que foi causado por uma atualização do Discourse? Sabe-se qual é a versão mais recente do Discourse compatível? Existe alguma maneira sensata de reverter para ela?

Já publiquei um relatório no GitHub, mas vejo que o plugin não teve nenhuma atividade de desenvolvimento há alguns anos, então não estou otimista quanto a uma solução vir por esse caminho. Existem outras maneiras (funcionais) de implementar um menu suspenso multisseleção para campos de usuário no Discourse?

FYI, houve uma grande atualização do Select Kit do core para a versão 2 nos últimos meses. Isso afetou vários plugins e, especificamente, esse tipo de controle. Se esse plugin não foi mantido desde então, pode realmente não funcionar.

Sugiro que você envie uma mensagem ao desenvolvedor aqui ou poste no tópico meta dele, se existir? Se eles não responderem e for importante o suficiente para você, poste em Marketplace para que um freelancer possa assumir?

Obrigado - já enviei uma mensagem ao único usuário aqui com um nome de usuário semelhante ao do GitHub - espero que seja a mesma pessoa!

É provável que essas alterações no núcleo exijam um trabalho significativo de readequação para plugins como este?

Me pergunto por que a seleção múltipla ainda não faz parte da funcionalidade principal.

É. O que mudou foi a forma como o controle é configurado e utilizado.

Obrigado, Robert. Muito felizmente, @j.jaffeux acabou de indicar que estaria disposto a corrigir o plugin — que comunidade incrível é essa!

Isso é ótimo. Como foi a atualização dele, ele deve estar bem posicionado!

Isso deve corrigir:

Alguém da Procourse terá que mesclá-lo, porém :slight_smile:

@j.jaffeux obrigado pela correção. Eu a fundi :slight_smile:

Olá, obrigado a ambos pela resposta incrível!

Atualizei tanto o plugin quanto o Discourse para incluir as últimas alterações, mas o problema da página de perfil do usuário omitir o campo de lista suspensa permanece para mim.

Um problema possivelmente relacionado é que, em todos os casos, tenho que clicar duas vezes no link Perfil do Usuário no lado esquerdo da página de Preferências do Usuário. O primeiro clique exibe apenas os campos padrão do usuário, e apenas o segundo clique exibe também os campos personalizados do usuário — mas excluindo o campo de seleção múltipla (infelizmente, clicar três vezes não ajuda).

Tentei em vários navegadores e limpei o cache de cada um.

Posso confirmar, no entanto, que novos cadastros de usuários agora conseguem ver as opções da lista suspensa.

Isso ajuda a estreitar o problema?

Você pode fazer um vídeo, por favor?

Claro2020-03-12_00h34_39|vídeo

No vídeo, destaco o campo de seleção múltipla conforme ele aparece na página de preferências do usuário. No entanto, como você pode ver, mesmo clicando duas vezes em ‘Perfil’, esse campo não aparece e continua sem ser editável.

Um problema secundário que você pode notar na página de Preferências do Usuário é que não há vírgula aparecendo entre os itens de seleção múltipla quando há mais de uma opção aplicável ao campo para aquele usuário.

Por favor, mostre o erro no console do seu navegador quando os campos não estiverem aparecendo.

Quanto às vírgulas, isso não é uma regressão do Discourse.

A janela do console exibe a mensagem abaixo na primeira vez que clico em ‘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

Ao clicar em ‘Perfil’ novamente, a mensagem de erro no console parece não mudar.
Posso enviar uma captura de vídeo se isso ajudar?
Existe alguma maneira de adicionar vírgulas entre as opções listadas? Atualmente, se mais de uma opção se aplica, ao serem listadas uma após a outra sem separador, elas parecem formar uma única e longa string de opção.

Ok, vou dar uma olhada, mais tarde hoje ou amanhã.

Muito obrigado!! Agradeço muito sua ajuda

Oi, teve alguma sorte?

Não tenho certeza de como você chegou a esse estado, mas de alguma forma o valor da sua configuração está incorreto. Fiz um PR para o plugin para tornar a análise mais resiliente e, se por algum motivo o valor não puder ser analisado pelo JSON, retornar a um valor padrão.

Quanto à outra “questão”, isso é um pedido de recurso para quem possui este plugin. Na verdade, não tenho certeza se eles podem fazer isso.

Obrigado!

Até agora, a atualização não foi detectada pela minha instalação do Discourse.

Pelo que li acima, parece que é necessário um processo de ‘merge’?
É algo que eu possa tentar fazer sem causar problemas para ninguém?

Existe alguma maneira de atualizar manualmente o plugin no meantime e, se sim, o Discourse ainda poderá gerenciar futuras atualizações?

Isso não é um problema no núcleo do Discourse. Enviei um PR para o proprietário do plugin. Não há nada mais que possamos fazer até que ele seja mesclado.

Sucesso! A atualização chegou e tudo parece estar funcionando agora — muito obrigado, pessoal.