다중 선택 사용자 필드 플러그인이 깨졌나요?

최근 Discourse 업데이트(현재 2.5.0.beta2)로 인해 문제가 발생했을 가능성이 있습니다.
이전에 설정되어 정상 작동하던 다중 선택 드롭다운 필드가 있으며, 가입 후 편집 가능하도록 설정되어 있었습니다.

그러나 기존 사용자의 경우, 이 필드의 내용은 사용자 프로필 페이지에 표시되지만, 사용자 설정 페이지에서 다른 편집 가능한 사용자 정의 필드 목록에 나타나지 않습니다.
즉, 사용자나 관리자가 이 필드를 변경할 수 있는 방법이 더 이상 없습니다.

또한, 새로 가입하는 사용자의 경우 다중 선택 필드는 표시되지만, 드롭다운 옵션이 하나도 나타나지 않습니다(가늘고 빈 파란색 사각형만 보입니다). 이 필드가 필수 항목으로 설정되어 있어 가입을 진행할 수 없습니다.

이것이 알려진 문제인가요? Discourse 업데이트가 원인이 된 것으로 확인되었나요? 가장 최근 호환되는 Discourse 버전을 알고 있는지, 해당 버전으로 되돌리는 합리적인 방법이 있는지 궁금합니다.

GitHub에 보고서를 게시했지만, 이 플러그인은 몇 년 동안 개발 활동이 없어 그 방향으로 해결책이 나올 것이라고 낙관하지는 않습니다. Discourse에서 사용자 필드에 대해 다중 선택 드롭다운을 구현할 수 있는 다른(작동하는) 방법이 있을까요?

참고로 지난 몇 달 동안 코어의 Select Kit이 2버전으로 크게 업그레이드되었습니다. 이로 인해 여러 플러그인이 영향을 받았으며, 특히 이 유형의 컨트롤에 해당됩니다. 해당 플러그인이 이후로 유지보수가 되지 않았다면 실제로 작동하지 않을 수 있습니다.

여기에서 개발자에게 메시지를 보내거나, 해당 메타 토픽이 존재한다면 그곳에 게시글을 작성하는 것을 제안합니다. 개발자가 응답하지 않고 해당 문제가 중요하다고 생각된다면, Marketplace 채널에 게시글을 올려 프리랜서가 작업을 맡게 할 수 있습니다.

감사합니다. GitHub의 계정명과 비슷한 사용자명을 가진 이곳의 유일한 사용자에게 메시지를 보냈습니다. 같은 사람일 거라고 기대하고 있어요!

코어에 그런 변경 사항이 있다면, 이 플러그인 같은 경우 상당한 재작업이 필요할까요?

다중 선택 기능이 이미 코어 기능에 포함되어 있지 않은 이유가 궁금하네요.

그렇습니다. 변경된 부분은 컨트롤의 구성 및 사용 방식입니다.

로버트, 감사합니다. 정말 다행히도 @j.jaffeux 님이 플러그인을 수정해 주겠다고 말씀하셨습니다. 정말 놀라운 커뮤니티네요!

정말 좋습니다. 승진이 그분의 것이었으니, 유리한 위치에 계실 거예요!

이렇게 하면 해결될 거예요:

다만 Procourse 쪽에서 누군가가 머지를 해줘야 합니다 :slight_smile:

@j.jaffeux 수정해 주셔서 감사합니다. 병합했습니다 :slight_smile:

안녕하세요, 두 분 모두 훌륭한 답변에 감사드립니다!

플러그인과 Discourse를 모두 최신 변경 사항이 포함된 버전으로 업데이트했지만, 제 환경에서는 여전히 사용자 프로필 페이지에서 드롭다운 필드가 생략되는 문제가 남아 있습니다.

가능성이 있는 관련 문제로, 사용자 설정 페이지 왼쪽의 사용자 프로필 링크를 두 번 클릭해야 한다는 점이 있습니다. 첫 번째 클릭 시에는 표준 사용자 필드만 표시되고, 두 번째 클릭 시에야 사용자 정의 필드도 함께 표시됩니다. 다만, 멀티 셀렉트 필드는 제외됩니다(불행히도 3번 클릭해도 도움이 되지 않습니다).

여러 브라우저에서 시도해 보았으며, 각 경우에서 브라우저 캐시를 삭제했습니다.

새로 가입한 사용자는 이제 드롭다운 옵션을 볼 수 있다는 점은 확인할 수 있습니다.
이로 인해 문제 범위가 좁혀질까요?

영상 하나 만들어 주실 수 있나요?

물론입니다

영상에서는 사용자 설정 페이지에서 표시되는 다중 선택 필드를 강조해 보았습니다. 그러나 '프로필’을 두 번 클릭했음에도 불구하고 해당 필드가 표시되지 않아 여전히 수정할 수 없는 상태입니다.

사용자 설정 페이지에서 발견할 수 있는 부차적인 문제는, 해당 사용자에게 적용되는 옵션이 하나 이상인 경우 다중 선택 항목 사이에 쉼표가 표시되지 않는다는 점입니다.

필드가 표시되지 않을 때 브라우저 콘솔에 표시되는 오류를 보여 주십시오.

쉼표에 대해서는 Discourse의 회귀 문제가 아닙니다.

콘솔 창에 아래 메시지가 표시됩니다. '프로필’을 처음 클릭할 때 나타납니다.

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

'프로필’을 다시 클릭해도 콘솔의 오류 메시지는 변하지 않는 것 같습니다.
도움이 된다면 영상 캡처를 보내드릴 수 있습니다?
옵션 목록 사이에 쉼표를 추가할 방법이 있을까요? 현재 여러 옵션이 적용되는 경우, 구분자 없이 연속으로 나열되어 있어 모두 하나의 긴 옵션 문자열인 것처럼 읽힙니다.

네, 오늘 늦거나 내일 확인해볼게요.

정말 감사합니다!! 도움을 주셔서 정말 감사드립니다

안녕하세요, 혹시 진전이 있었나요?

어떻게 이런 상태가 되었는지 정확히 알 수는 없지만, 어쨌든 설정값이 잘못되었습니다. JSON으로 파싱할 수 없는 값이 있는 경우 기본값으로 폴백하도록 파싱을 더 견고하게 만들 PR을 해당 플러그인에 제출했습니다.

다른 "문제

감사합니다!

현재까지 제 Discourse 설치에서는 업데이트가 감지되지 않았습니다.

위 내용을 읽어보니 ‘merge’ 과정이 필요한 것 같습니다?
이것을 제가 직접 시도해도 다른 사람에게 문제를 일으키지 않을 수 있을까요?

그동안 플러그인을 수동으로 업데이트하는 방법이 있으며, 만약 가능하다면 Discourse가 향후 업데이트를 계속 관리할 수 있을까요?

이것은 디스코어 코어에서 발생하는 문제가 아닙니다. 플러그인 소유자에게 PR을 보냈습니다. 그들이 병합할 때까지 우리가 할 수 있는 다른 조치는 없습니다.

성공했습니다! 업데이트가 적용되었고 이제 모든 것이 정상적으로 작동하는 것 같습니다. 정말 감사합니다, 여러분.