Discourse에서 멘션 시 전체 이름 표시

이 테마 컴포넌트 설치

@멘션에서 사용자 이름 대신 전체 이름을 표시하는 테마 컴포넌트입니다.

이 테마 컴포넌트는 사용자의 전체 이름을 로드하여 멘션에서 @username 대신 @fullname를 표시합니다.

이 컴포넌트는 게시물을 표시할 때(가능한 경우) 사용자 이름을 사용자의 이름으로 단순히 대체하는 방식으로 작동합니다. 편집 중에는 아무것도 변경되지 않습니다. 작성기에서는 항상처럼 @username으로 태그를 지정합니다.

전체 이름 멘션을 고유한 방식으로 스타일링하기를 원한다면 a.mention 앵커 요소에 .mention-fullname 클래스를 추가합니다.

@fullname 멘션을 클릭할 때 카드가 표시되는 기능은 완전히 정상적으로 작동합니다.

사용 사례:

모든 사용자 이름이 X9999999 패턴(문자 하나와 숫자 7개)을 따르는 디스코urs 인스턴스를 상상해 보세요. 이제 10만 명의 사용자가 등록되어 있다고 상상해 보세요.

별로 친숙하지 않죠? 불행히도 이것은 상상 속의 시나리오가 아니라 매우 현실적인 상황입니다. 해당 디스코urs 인스턴스는 SSO에 연결되어 있으며 모든 사용자 이름이 기업 정책을 따릅니다.

이 경우 @X9999999 대신 @John Doe를 읽는 것이 훨씬 낫습니다.

설정:

  • show_fullname_in_mentions: 활성화하면 @멘션에서 @username 대신 @fullname가 표시됩니다
18개의 좋아요

세르히오님, 테마 컴포넌트를 만들어 주셔서 감사합니다!

직접 사용해 보았는데, 실험을 해 보니 UX 측면에서 몇 가지 일관성 없는 부분이 발견되었습니다.

상황을 설명해 드리자면, 사용자의 사용자명이 "oli44"이고 전체 이름이 "Henri Oliver"인 경우가 있습니다. 님의 테마 컴포넌트를 사용하면 이제 "Henri Oliver"로 표시되는데, 이는 맥락을 더 잘 전달해 주므로 좋은 점입니다. 하지만 만약 저처럼 "Henri Oliver"라는 이름이 사용자명 "oli44"를 가진 사람이라는 것을 모르는 다른 사용자가 있다면, 게시물에서 그 사람을 어떻게 멘션해야 할까요?

"Henri Oliver"를 검색하면 실제로 "oli44"가 보이지만, 그것이 바로 그 사람임을 어떻게 알 수 있을까요?

이러한 이유로, 현재로서는 당분간 이 기능을 활성화하지 않기로 했습니다. 혹시 이 문제를 해결해 줄 다른 테마 컴포넌트나 플러그인이 있는지 알고 계신가요? 찾아보았지만 찾지 못했습니다.

아니면, 님의 테마 컴포넌트가 사용자명도 함께 표시할 수 있는 방법이 있을까요? (예: @Henri Oliver (oli44)) 이렇게 하면 그 사람을 멘션할 때 무엇을 찾아야 하는지 알 수 있을 것 같습니다(?)

어쨌든 훌륭한 기능을 추가해 주셔서 감사합니다.

3개의 좋아요

@를 입력한 뒤에 Henri Oliver를 입력하면 됩니다. 확인 후, @+사용자명이 게시물에 삽입됩니다.

검색 시에는 사용자명과 전체 이름이 모두 표시됩니다.
문제가 어디에 있나요?

포크에서 렌더링을 쉽게 사용자 정의할 수 있습니다:

1개의 좋아요

두 가지 문제를 발견했습니다:

서버로 멘션당 하나의 AJAX 요청이 전송됩니다.
사용자 이름이 많은 페이지(예: 사용자가 제공한 사용자 디렉터리)에서 이 때문에 스로틀링이 발생할 수 있을까요?

캐시된 사용자 이름에서 전체 이름으로의 변환은 전체 이름 변경 사항을 인식하지 못합니다. 이 캐시의 수명은 얼마나 되나요?

필요한 정보(사용자 이름 → 전체 이름)를 동반 플러그인을 통해 제공할 수 있다면, 이러한 문제가 사라지지 않을까 싶습니다.

예상되는 문제들이 발생하고 있었기 때문에, 멘션과 함께 전체 이름을 제공하는 플러그인을 만들었습니다:

이에 따라 해당 컴포넌트에서 ajax 요청을 제거했습니다.

멘션을 렌더링하는 데 사용되는 템플릿을 설정할 수 있는 옵션도 추가했습니다:

2개의 좋아요

테마 컴포넌트를 따르려면 AJAX 요청이 필수였나요?

만약 그렇다면, 자신의 작업이 타인이 사용할 수 있을 만큼 신뢰할 수 있다고 생각하신다면 새로운 Customization > Plugin 토픽을 만들어 주시기를 초대합니다. :slight_smile:

해당 카테고리에 작성할 권한이 없습니다 …

모르겠습니다. 저는 플러그인/컴포넌트 개발에만 관심을 두고 있으므로, 원하는 동작을 얻기 위해 이 두 가지 해킹 방법을 모았습니다.

하지만 다른 분들이 함께 참여해 이를 다듬어 주시면 좋겠습니다.

1개의 좋아요

그룹 페이지에서 접근 권한을 요청해야 합니다 :slight_smile:

https://meta.discourse.org/g/plugin_authors

1개의 좋아요

방금 이 글을 올렸는데, 저도 방금 원작자의 플러그인을 설치했어요. 그런데 원작자 플러그인은 그룹의 전체 이름을 지원하지 않는 것 같더라고요. 하지만 님은 그룹 기능을 추가한 것 같은데, 맞다면 축하드립니다! 구현하신 기능들을 고려할 때, 님의 플러그인은 단독 스레드를 가질 자격이 충분합니다!

아마도 제가 무언가를 잘못하고 있는 것 같긴 한데, 테마 컴포넌트와 플러그인을 활성화했는데 이제 멘션에서 전체 이름을 더 이상 볼 수 없어요.

게시물을 다시 생성(rebake)하셨나요?

1개의 좋아요

감사합니다! 이제 그렇게 했습니다. 그룹 검색도 가능한가요? 제 trust_level_0 그룹 이름이 everyone입니다. 플러그인이 그룹 언급 시 전체 이름을 사용할 수 있다면, 전역 trust_level_0 언급을 everyone 언급처럼 보이게 만드는 멋진 방법이 될 수 있겠네요.

이제 그렇게 됩니다 (컴포넌트도 업데이트해야 합니다).

불행히도, 그룹 이름 링크를 클릭해도 그룹이 열리지 않습니다.

1개의 좋아요

플러그인이 게시물을 생성하는 동안 정보를 포함하기 때문입니다. 사용자가 전체 이름을 업데이트하더라도, 게시물을 다시 생성하지 않는 한 게시물에는 업데이트되지 않는다는 점에 유의하세요.

이 테마 컴포넌트의 몇 가지 항목을 업데이트해야 합니다. 사용자 상태가 활성화되어 있으면 이제 Ajax 호출을 제거할 수 있습니다.

조금만 있으면 시도해 보겠습니다.

2개의 좋아요

정말 그렇습니다. 사용자 이름과 그룹 이름 변경 사항을 감시해야 합니다:

2개의 좋아요

다시 구우기(Rebaking)는 비용이 많이 듭니다. 사용자가 이름을 변경하는 빈도에 따라 일부 커뮤니티에서는 문제가 될 수 있습니다.

이 점을 염두에 두세요.

1개의 좋아요

감사합니다. 저희가 좀 더 격식 있는 학교 커뮤니티이기 때문에 이름이 자주 바뀌지는 않을 것입니다.

원칙적으로는 이미 구워진 콘텐츠를 배포하는 동안에도 이름을 추가할 수 있습니다. 이 방식을 선호하시는 건가요?

대부분은 잘 작동합니다. 왜 그런지는 모르겠지만, 신뢰 수준 0을 '모두’로 변경해 두었는데도 해당 그룹에 라벨이 적용되지 않습니다.


신뢰 수준이 아닌 그룹들은 모두 정상 작동하며 전체 이름이 표시됩니다.

수정: 아, groups 테이블의 full_name 열에 신뢰 수준 그룹의 수정된 전체 이름 값이 저장되어 있지 않네요! 데이터 탐색기를 확인해 보니 null 값이었습니다. 음?

위 사진에서 보았을 때, trust_level_0의 i18n 항목을 변경한 것으로 보입니다.

rails 콘솔에서 Group.find(10).update! full_name: "TESTTEST"를 시도해 보세요.

내장 그룹의 전체 이름을 변경하는 것은 UI에서 허용되지 않으므로, 이는 부수적인 영향을 미칠 수 있습니다.

그렇군요. 이 방법을 시도해 보았는데, 심각한 영향 없이 잘 작동했습니다. 플러그인을 사용하지 않고 테마 컴포넌트만 사용해 그룹을 통합하는 방법이 있을까요? 가능하다면 그 방법이 훨씬 더 좋습니다. 피할 수만 있다면 그 작업을 하고 싶지 않으니까요.