メンションで表示名をフルネームにする

このテーマコンポーネントをインストール

ユーザー名ではなくフルネームを表示するためのテーマコンポーネントです。

このテーマコンポーネントは、ユーザーのフルネームをロードし、メンションで @ユーザー名 の代わりに @フルネーム を表示します。

このコンポーネントは、投稿を表示する際に、ユーザー名(利用可能な場合)をユーザーの名前に置き換えるだけで機能します。編集中は何も変更されません。コンポーザーでは、常に @ユーザー名 のようにタグ付けします。

また、フルネームのメンションを区別してスタイル設定したい場合は、a.mention アンカー要素に .mention-fullname クラスを追加します。

@フルネーム メンションをクリックしたときにカードを表示する機能は、引き続き完全に機能します。

ユースケース:

ユーザー名がすべて X9999999 (アルファベット1文字と数字7桁) のパターンに従う Discourse インスタンスを想像してください。さらに、10万人のユーザーが登録されているとします。

あまり親切ではありませんよね?残念ながら、これは架空の話ではなく、非常に現実的なシナリオです。Discourse インスタンスは SSO にバインドされており、すべてのユーザー名は会社のポリシーに従っています。

この場合、@X9999999 ではなく @John Doe と読む方がはるかに良いでしょう。

設定:

  • show_fullname_in_mentions: 有効にすると、@メンションで @ユーザー名の代わりに @フルネームが表示されます
「いいね!」 17

こんにちは、セルジオさん、テーマコンポーネントありがとうございます!

試してみましたが、実験の結果、UXに一貫性のない問題が発生することがわかりました。

以下がその内容です。ユーザー名が「oli44」でフルネームが「Henri Oliver」のユーザーがいます。このテーマコンポーネントを使用すると、「Henri Oliver」と表示されるようになり、これは素晴らしいことで、より良いコンテキストが追加されます。しかし、次に、「Henri Oliver」がユーザー名「oli44」で知られていることを知らない別のユーザーである場合、投稿でどのようにメンションすればよいでしょうか?

「Henri Oliver」を検索すると、確かに「oli44」が表示されますが、それが実際の人物であるとどうすればわかりますか?

そのため、現状では、現時点では有効にしないことにしました。この問題を解決できる別のテーマコンポーネント/プラグインをご存知ですか?そのようなものを探してみましたが、見つかりませんでした。

あるいは、このテーマコンポーネントで、ユーザー名を表示する(例:「@Henri Oliver (oli44)」)ことで、その人物をメンションする必要があるときに、何を探せばよいかわかるようにする方法はありますか?

いずれにしても、この素晴らしい追加機能に感謝します。

「いいね!」 3

@に続けてHenri Oliverと入力するだけです。確認後、@+usernameが投稿に挿入されます。

検索時には、ユーザー名とフルネームの両方が表示されます。
問題は何でしょうか?

フォークでレンダリングを簡単にカスタマイズできます。

「いいね!」 1

2つの問題点があります。

サーバーへのメンションごとに1つのajaxリクエストが発生します。
これは、ユーザー名が多いページ(ユーザー提供のユーザーディレクトリなど)でスロットリングを引き起こす可能性がありますか?

キャッシュされたユーザー名からフルネームへの変換は、フルネームの変更を認識しません。このキャッシュはどのくらいの期間有効ですか?

必要な情報(ユーザー名からフルネームへの変換)をコンパニオンプラグイン経由で提供できれば、これらの問題は不要になると思います。

予想される問題が発生していたため、メンションと共にフルネームを提供するプラグインを作成しました。

それに伴い、コンポーネントからAJAXリクエストが削除されました。

また、メンションのレンダリングに使用されるテンプレートを設定するオプションも追加しました。

「いいね!」 2

テーマコンポーネントに準拠したい場合、AJAXリクエストは必須でしたか?

もしそうであれば、あなたの作業が他の人が使用できるほど信頼できると考えるなら、新しい#pluginトピックを作成することをお勧めします :slight_smile:

そのカテゴリには書き込めません…

わかりません。プラグイン/コンポーネント開発について調べているだけなので、これらの2つのハックを収集して、望ましい動作を得ることにしました。

しかし、他の人も参加して、それを洗練させたいと思うかもしれません。

「いいね!」 1

グループページでアクセスをリクエストする必要があります :slight_smile:

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

「いいね!」 1

投稿されたばかりで、投稿と同時にオリジナルのプラグインをインストールしました。オリジナルのプラグインはグループのフルネームをサポートしていませんが、グループを追加したように見えます。もしそうなら、おめでとうございます!有効にしたことを考えると、あなたのプラグインは独自のトピックに値します!

何か間違っているのかもしれませんが、テーマコンポーネントとプラグインを有効にしたところ、メンションでフルネームが表示されなくなりました。

投稿を再焼きましたか?

「いいね!」 1

ありがとうございます!これでできました。グループの検索も可能でしょうか?私の trust_level_0 グループは everyone という名前です。プラグインがグループ名のフルネームも使用できる場合、グローバルな trust_level_0 メンションを everyone メンションのように見せかけるクールな方法になります。

現在対応しています(コンポーネントも更新する必要があります)。

残念ながら、グループ名のリンクをクリックしてもグループは開きません。

「いいね!」 1

プラグインには投稿をベイクする際に情報が含まれるため、ユーザーがフルネームを更新しても、投稿が再ベイクされない限り投稿には反映されないことに注意してください。

このテーマコンポーネントでいくつか更新する必要があります。ユーザーの状態が有効になっている場合、Ajax呼び出しを削除できるようになりました。

すぐに試してみます。

「いいね!」 2

その通りです。ユーザー名とグループ名の変更を監視する必要があります。

「いいね!」 2

再ベイクはコストがかかります。これは、ユーザーが名前を変更する頻度によっては、一部のコミュニティで問題となる可能性があります。

これを念頭に置いてください。

「いいね!」 1

ありがとうございます。よりフォーマルな学校コミュニティでは、名前が頻繁に変更されることはありません。

原則として、すでに作成済みのコンテンツを配信しながら名前を追加することも可能です。こちらの方法をご希望でしょうか?

ほとんど機能します。理由がわからないのですが、信頼レベル0をeveryoneにリネームしても、ラベルが適用されません。


信頼レベル以外のグループはすべて機能し、フルネームが表示されます。

編集:ああ、groupsテーブルのfull_name列には、信頼レベルグループの変更されたフルネーム値が保持されていないためです!データエクスプローラーを確認すると、nullになっています。なぜでしょうか?

上記の画像から、trust_level_0 の i18n エントリを変更したようです。

rails コンソールで Group.find(10).update! full_name: "TESTTEST" を試してください。

これは、UI で組み込みグループのフルネームを変更することが許可されていないことを考慮すると、副作用がある可能性があります。

はい。これを試したところ、深刻な影響もなく機能しました。プラグインを使用せずに、テーマコンポーネントのみを使用してグループを組み込む方法はありますか?できれば避けたいので、実際にはそれが望ましいです。