階層的なグループメンバーシップ(グループ内のグループ)

当社のランニングクラブでは、チーム要素を含む1年間のチャレンジを調整しています。10歳ごとの年齢別チームごとに、Discourse グループを作成して @メンションできるようにし、必要に応じて独自の会話を開催できるようにしています(ただし、誰もその仕組みに気づくとは思っていません)。そのため、各年齢別チームに対して7つのグループを用意し、参加者が登録するたびに手動で更新する必要があります。

また、チャレンジに参加する全員を含む「スーパーグループ」も作りたいと考えています。もし「Challengers」という大きなグループに、19歳以下、20〜29歳、30〜39歳といったサブグループを単純に含めることができれば、作業が非常に楽になります。そうすればサブグループを管理するだけで、変更がスーパーグループに自動的に反映されるからです。

このような方法が現在あるか、あるいは今後実装される可能性はありますか?それとも、サブグループのすべてのユーザー名を手動で入力し続けるしかないのでしょうか?(合計で数百人の参加者が予想され、週次の作業になる見込みです。)

「いいね!」 6

「グループへの一括追加」機能を使用すれば、入力作業を大幅に節約できます。

階層型グループメンバーシップの完全な解決機能の実装については、現時点で計画はございません。

「いいね!」 2

「グループへの一括追加」の参照にいつも混乱しています。私の知る限り、UI には表示されていないからです。リンクされた 2015 年のトピックのスクリーンショットは、現在私が目にするものと一致しません。これは単に、グループ内の「メンバー追加」ダイアログを使用することと同じでしょうか?

また、あるグループのメンバーリストをコピーして、別のグループに一括追加できるようにするにはどうすればよいでしょうか?現時点で思いつく最善のワークフローは、「メンバー」ページのテキストをコピーし、Nisus Writer Pro でのスタイル対応 grep を使ってユーザー名を抽出することです。不可能ではありませんが、決して簡単ではありません。

「いいね!」 1

「グループへの一括追加」機能については、この Meta にもいくつかの言及がありますが、https://discourse.example.org/admin/groups/bulk にはもう表示されず、空白のページになっています(管理者権限を持ついくつかのサイトを確認しました)。@adamengst さん、あちらには何か表示されていますか?

「いいね!」 1

遅れて申し訳ありません。通知を見落としていました。いいえ、https://forum.fingerlakesrunners.org/admin/groups/bulk のページは存在しません(404)。メインのグループページは FLRC Forum です。私が確認した限り、「Bulk Add」という記載はどこにも見当たりません。

「いいね!」 1

これは少し隠れた機能かもしれませんが、既存のユーザーをグループに追加するには、一括招待機能を使用できます。モーダルで説明されている通り、メールアドレスとグループを記述した CSV ファイルを準備してアップロードしてください。ユーザーにはメールは送信されません。

「いいね!」 2

@tobiaseigen ああ!既存ユーザーのメールアドレスがすでにアカウントを持っている場合、グループ更新を処理できるかどうかご存知ですか?

はい、私が言いたいのはまさにそれです。

この機能は二重の役割を果たしているように見えますが、UI を改善できます。何か提案します。

「いいね!」 3

素晴らしい、ありがとう!では、LibreOffice Calc へ行きましょう!:keyboard:

「いいね!」 1

ありがとうございます!だいぶ近づいてきました。ただし、メールアドレスを基準にする方法は私にはあまりうまくいかないことが多いです。多くの人が複数のアドレスを持っているため、事前にどのアドレスがアカウントに関連付けられているか、それとも混乱を招く別のアドレスかを検証する必要があります(場合によっては、二重のアカウントを作成させてしまう可能性があります)。

基盤の仕組みはわかりませんが、グループが他のグループへの参照を含めることができるようにするのが最もシンプルだと思われます。

「いいね!」 1

ユーザーをエクスポートし、エクスポートした CSV を使用して新しいリストを作成し、一括招待機能を使って再度インポートするという方法もあります。既存のユーザーでシステムを設定するには、これを一度行うだけで十分でしょう。その後、新規参加者が出た場合や年齢区分に変更があった場合は、手動で対応すれば大丈夫です。

コミュニティ向けにこれを半自動化するカスタムコードを導入するケースもあるかもしれません。予算があるようであれば、Marketplace でリクエストを投稿してみてください。

「いいね!」 1

ユーザーのエクスポートについての指摘、なるほどですね。アカウントリストを初期化する方法としてその視点が浮かんでいませんでした。引き続きアイデアを練って、実際にどうなるか試してみます。

「いいね!」 1

階層グループ(グループがグループのメンバーである場合)には、継承されたグループからメンバーを自動的に削除するという追加の利点があります。

このような機能を「手動で」実装するには、グループメンバーシップが階層的に上位のグループによって継承されたのか、直接設定されたのかを覚えておく必要があります。

階層グループ機能を実装するために外部ユーザーディレクトリサービス(ldap)を使用することについてコメントしていただけますか?

「いいね!」 2

@angus このスレッドの意図を GroupAssociatedGroup がすでに実装しているかどうか疑問に思っています。

いいえ、その機能は外部サービス上のグループとDiscourseグループの同期に関するものであり、グループ階層に関するものではありません。

「いいね!」 1

このスレッドを開始したので、私の階層グループの要求が依然として完全に有効であることを付け加えたいと思います。

Bulk Invite to Group機能は、私の場合は、登録するにつれて、特定の年齢ベースのグループと、4か月の期間にわたるすべての年齢ベースのグループを網羅する全体的なグループに人々を追加するため、まったく役に立ちません。

開発者に、毎週手作業で行うのがいかに退屈であるかがわかったので、今年はプロセスを自動化できるかどうかを確認します。

「いいね!」 1

@adamengst ここに進展はありますか?

はい、実際、私の開発者は、レース登録に使用している WebScorer のデータを Discourse グループと同期させることができました。名前が一致する必要がありますが、彼は一致しない場合に表示される管理ページを作成しました。

そのため、階層はありませんが、複数のグループが自動的に入力されるため、私が抱えていた主な必要性がなくなりました。

オープンソース コードなので、興味のある人が仕組みを知りたい場合は共有できると思います。

「いいね!」 3

私もこれについて直接リクエストを受けましたので、@SteveDesmond.ca の Discourse グループへの書き込みコードに興味のある方は、以下で入手できます。

スティーブは、それについての質問に喜んで答えてくれるとのことです。

「いいね!」 2

以前アダムが言及していた特定のコードのアウトラインは次のとおりです。

  1. (L36) 外部システムですべてのユーザーを取得する
  2. (L37) Discourseですべてのユーザーを取得する
  3. (L38-39) 問題のグループのすべてのメンバーを取得する(この場合、globalが「スーパーグループ」です)
  4. (L46-78) 外部システムの各ユーザーについて、Discourseに存在するかどうかを確認し、どのグループにすでに属していて、追加する必要があるかをマッピングする
「いいね!」 1