サイドバーのメッセージセクション

:information_source: 概要 サイドバーに、未読メッセージのインジケーターを含む個人メッセージとグループメッセージの受信トレイへのリンクを追加します
:eyeglasses: プレビュー Theme Creator
:hammer_and_wrench: リポジトリ GitHub - moin-Jana/sidebar-messages-section: Adds personal and group message inbox links to the sidebar, including unread message indicators.
:question: インストールガイド テーマまたはテーマコンポーネントのインストール方法
:open_book: Discourseテーマは初めてですか? Discourseテーマの使用に関する初心者ガイド

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

このコンポーネントは、サイドバーにメッセージセクションを追加し、ユーザーの個人受信トレイとアクセス権を持つグループ受信トレイへのリンクを提供します。このセクションには、セクションの見出しの隣に新しい個人メッセージを作成するためのボタンも含まれています。

個人受信トレイ

デフォルトでは、このコンポーネントはすべてのユーザーに個人受信トレイへのリンクを追加します。show_personal_inbox設定を使用すると、管理者はこれを完全に非表示にするか、サイト設定の「個人メッセージが有効なグループ」に基づいてプライベートメッセージを作成できるユーザーにのみ表示するようにできます。これは、個人受信トレイへのリンクが通知メニュー、ユーザーのプロフィール、およびサイドバーのコミュニティセクションに表示される方法と似ています。

:bulb: 個人受信トレイへの重複リンクを避けるために、サイドバーの最初のセクションにあるメッセージリンクを削除することを検討できます。その他メニューを開き、このセクションをカスタマイズを選択し、セクションからメッセージリンクを削除することで実行できます。

グループ受信トレイ

メッセージが少なくとも1つ含まれており、ユーザーがメンバーであるすべてのグループ受信トレイは、自動的にサイドバーに表示されます。管理者はhide_group_inboxes設定を使用して特定のグループ受信トレイを非表示にでき、グループ受信トレイがアクティブに使用されなくなった場合に便利です。

別の設定であるuse_group_page_inboxを使用すると、グループ受信トレイのリンクを開くときに、ユーザーのメッセージインターフェース(/my/messages/group/{group_name})またはグループページ(/g/{group_name}/messages/inbox)のどちらを使用するかを選択できます。

未読インジケーター

各受信トレイリンクは、ユーザーの「新しい項目の数を表示」の設定に基づいて現在のメッセージ状態を示します。これはドットまたは数値のいずれかです。100を超える値は99+と表示されます。

高度なグループ受信トレイ設定

グループ受信トレイの順序をカスタマイズしたり、サイドバーに表示される名前を変更したりするには、advanced_group_inbox_configuration設定を使用できます。

この設定で次のことができます。

  • ドロップダウンからグループを選択する
  • オプションで、サイドバーに表示されるカスタム名を定義する
  • 下部にあるボタンを使用して、設定されたグループの順序を変更する

カスタム名は、設定内でも役立ちます。
名前が提供されない場合、エントリは(位置に基づいて)group 1group 2などとしてラベル付けされます。並べ替えを容易にするために一時的な名前を追加し、保存する前にお好みに応じて削除することもできます。

高度な設定に追加されていないメッセージを持つグループは、引き続きサイドバーに表示され、設定されたグループの後にグループID順にリストされます。

hide_group_inboxes設定にリストされているグループは、高度な設定に含まれているか、メッセージがあるかに関係なく、常に非表示になります。管理者のみの警告は、グループが両方の設定に追加された場合にハイライト表示するのに役立ちます。

次のスクリーンショットで、設定例とそれが順序と表示される名前にどのように影響するかを確認できます。

メッセージセクションの位置

メッセージセクションの位置を変更するには、CSSを使用するか、次のいずれかの方法を使用できます。

または、サイドバーのセクションの順序を変更するための設定が含まれているNavigation (sidebar) menu display controlコンポーネントをインストールすることもできます。その位置を調整する際に、セクション名としてinbox-sectionを使用してください。

「いいね!」 16

すごい、よくやった、モイン! :clap: :tada:

「いいね!」 4

軽微な提案ですが、javascripts/discourse/api-initializers/group-inboxes-in-sidebar.gjs は GJS ではなく JS ファイルであるべきではないでしょうか?

素晴らしいコンポーネントです!


コードを10分間精査し、コアクラスを調べましたが、Discourse がいかに驚くほど作られており、すべてがうまく収まっているかに感銘を受けました。

「いいね!」 2

はい、APIはセクションを他のセクションと同じように見せ、機能させるために必要なほぼすべてを提供しています。チャットもそれを使用しており、おそらく開発に影響を与えました。機能は同時に開発されました。
残念ながら、コアセクションの未読トピック数を表示する get badgeText() はサポートされていないため、数字については少し工夫する必要がありました。

「いいね!」 4

これに関する管理者設定が見つからなかったので、CSSでこれを非表示にするというPSAを投稿します。

.sidebar-section-link[data-link-name="my-messages"] {
    display: none;
}
「いいね!」 2

CSSでリンクを非表示にするのは、管理者がサイドバーをカスタマイズするための既存のオプションを使用するよりも、壊れやすいように思えますが、なぜCSSでの非表示を好むのですか?

[quote=“Moin, post:1, topic:347764”]このセクションをカスタマイズするには:

  1. サイドバーのその他をクリックします
  2. 拡張メニューの一番下にあるこのセクションをカスタマイズを選択します

The image shows the first section of a Discourse sidebar highlighting the "More" menu and the "Customize this section" option inside the menu.
[/quote]

「いいね!」 2

ダープ、その通りです。管理者コンソールやコア機能の設定だろうと考えて、考えすぎていました。

「いいね!」 1

あなただけではありませんでした。:joy:


これは素敵なコンポーネントですね!

「いいね!」 2

{“content”:“ノートを拡張しました:\n[quote="Moin, post:1, topic:389664"]\n> :bulb: 個人用受信トレイへの重複リンクを避けるため、サイドバーの最初のセクションにあるメッセージリンクを削除することを検討してください。これを行うには、その他メニューを開き、このセクションをカスタマイズを選択し、セクションからメッセージリンクを削除します。\n[/quote]”,“target_locale”:“ja”}

「いいね!」 5

はい、そうでしたね。しかし、管理者としては管理パネルを操作することに慣れているため、手順をざっと見るときに細部を見落としてしまうことがあります :wink:

コアアップデートであっても、私たちが使用している何かが別の領域に移動するまで、細部まですべてを読み込まない人も多いのではないでしょうか。

ずっと昔のAndroid、例えばGingerbreadでは、ナビゲーションとマップが一緒になっていたと記憶しています。アップデートでマップと統合された後、ナビゲーションを探すのに10分くらい費やしましたよ。:joy:

これは、メッセージを多用するサイトに最適な素晴らしいテーマコンポーネントです!@moin さんの素晴らしい仕事に感謝します!

グループをかなり利用する人たち(メッセージはその大きな要素です)にとって、さらに良くするために、これらの提案を検討していただけませんか?

サイドバーでの表示位置を選択可能にする

UIでメッセージをより強調するために、サイドバーの一番上(つまりリンクのすぐ下)に表示させたいと考えています。基本的に、通知に頼ることなく、最近のメッセージ(グループごと)を一目で簡単に見られるようにしたいのです。

これを実現するためにこのCSSを使用しましたが、他にもこれで助かる人がいるのではないかと思います。

/* Messagesセクションがflexboxコンテナの最初に表示されるようにする */
.sidebar-section-wrapper {
  order: 1;
}
.sidebar-section-wrapper[data-section-name="inbox-section"] {
  order: 0;
}

グループ受信トレイをグループのコンテキストで開く

ユーザーが自分のグループを簡単に見つけてやり取りできるようにしたいと考えています。グループページからアクセスする受信トレイ(つまり /g/the-group/messages/inbox)でメッセージを操作する方が、個人の受信トレイページ(つまり /my/messages/group/the-group)で操作するよりも理にかなっていると思います。

これにより、他のグループメンバーや設定への簡単なアクセスを備えた、きれいでグループ中心のページが得られます。

これをTCの設定で制御できると素晴らしいでしょう。

「いいね!」 3

私はこれについて、どちらのルートがより良いデフォルト設定で、設定項目になるかについて考えましたが、今すぐ思い出せない理由で削除しました。後で確認します。未読メッセージのインジケーターに関するものだったと思います。未読メッセージのインジケーターがなくなるという結果になっても、あなたはまだこのルートを好みますか?

現在の位置は、コアにあったメッセージセクションと同じだと思います。
サイドバーのセクションの順序を変更するための優れたコンポーネントがすでに存在します:Navigation (sidebar) menu display control
両方のコンポーネントが順序を上書きしようとすることで競合を避けるために、管理者が異なる順序を望む場合は既存のコンポーネントを使用することが理にかなっているかもしれません(作成者はセクション名として「inbox-section」を使用すると動作することを確認しました)。
これに追加の設定を提供できるかどうかを確認する必要があります。いずれにしても、コンポーネント同士が干渉し合うことは避けたいです。

「いいね!」 2

私のフォークでこれをいじってみましたが、同じことを見つけました。機能はしますが、未読メッセージのインジケーターとサイドバーのリンクのハイライトの両方を失います。これら両方の機能は確かに非常に重要です!

私が到達したところまでのプルリクエストを作成しました。

しかし、本当に機能させるには、未読インジケーターとリンクのハイライトが機能する必要がありますよね?

ごもっともな点です!それはずっと良い考えです。恥ずかしながら、私はそのTCの作成者の一人です!

「いいね!」 1

routeの代わりにhrefを使ったのはなぜですか?hrefは未読インジケーターでは全く機能しないと思います。私がより懸念していたのは、group.messages.inboxルート上の番号が、userPrivateMessagesで使えるような方法で利用できなかったことです。

「いいね!」 1

ゴミのような開発者なので、何かがうまくいくまで色々なことを試しただけです!おそらく、あまり賢くない生成AIへの不健康な依存も原因でしょうね :wink:

ルートを利用しようと試みましたが、既存のルートを上書きすることができませんでした。それで諦めました。

リンクを単に乗っ取って別の場所に移動させるだけで、あの数値や動作を得られるのかどうか疑問に思いました。しかし、これは古くて単純な私には少々複雑すぎます。

自由に「改善」してください!

(ちなみに、素晴らしい @moin さんがまさにそれをやってくれて、機能を追加し、正しく動作するようにしてくれました!)

「いいね!」 2

これは確かに非常にうまく機能します。恥ずかしながら、私はそのTCの著者の一人です(@lillyに比べればずっと二次的ですが:flushed_face:

OPにこれを載せられると素晴らしいでしょう。

「いいね!」 2

@nathank さんは、サイドバーのグループ受信トレイの順序を変更するオプションを求めていました。以前、テーマコンポーネントの設定でグループの順序を設定する方法について、Configuring the order of groups in theme component settings でアイデアを求めましたが、これで解決策にたどり着いたと思います。

これを、グループの短縮名ではなく完全名を表示するというリクエストと組み合わせました。完全名はコンテキストで簡単には取得できないため、管理者が代わりに カスタム表示名 を定義できるようにするという解決策です。以前はグループ名を表示するためだけに利用されていたフィールドが、サイドバーに表示される名前を制御するためにも使用されるようになりました。

どちらの機能も、新しい advanced_group_inbox_configuration 設定を通じて処理されます。

この設定では、以下のことができます。

  • ドロップダウンからグループを選択する
  • サイドバーに表示されるカスタム名をオプションで定義する
  • 下部のボタンを使用して、設定されたグループの順序を変更する

カスタム名は、設定内でも役立ちます。名前が提供されていない場合、その項目は(位置に基づいて)group 1group 2 などとラベル付けされます。一時的な名前を追加すると順序変更が容易になり、保存する前に削除することもできます。

高度な設定に追加されていないメッセージを持つグループは、引き続きサイドバーに表示され、設定されたグループの後にグループ ID の順にリストされます。hide_group_inboxes 設定にリストされているグループは、高度な設定に含まれているかメッセージがあるかに関わらず、常に非表示になります。


この例では、モデレーターグループにカスタム名は入力されていないため、設定内では group 1 として表示されています。他のグループにはカスタム名が付いています。

この設定の結果は次のとおりです。


ここでは、「doggo-daily」と「cat_pics」の受信トレイの位置が入れ替わり、ハイフンやアンダースコアなしで表示されていることがわかります。「Team」受信トレイは、高度な設定で設定されたものの下に表示されます。

また、「admin」グループが高度な設定に追加され、同時に hide_group_inboxes 設定にも追加されたため、管理者のみに表示される警告が表示されていることも確認できます。

「いいね!」 4

これは、コミュニケーションにグループを利用している人にとって、まさに素晴らしいものです。@Moin、素晴らしい仕事です!

フィードバックに耳を傾け、積極的に関与してくれたこと(私からのものも含めて)、そして長年の問題をこれほどエレガントに解決する、非常によく設計された実用的なテーマコンポーネントを制作してくれたことに感謝します。

「いいね!」 2