トピックのリンク(メガトピックの分割と管理)

https://github.com/discourse/discourse/commit/1476e17c354bc30e23485d921bdb9a9feb35adca をマージしました。これにより、「自動閉鎖の投稿数」サイト設定に基づいてトピックが自動的に閉鎖された際、新しいリンク付きトピックが自動的に作成されます。

この機能は、メガトピック の自動分割と管理に特に役立ちます。

仕組み

「自動閉鎖の投稿数」設定が 10000 件に設定されており、「自己紹介!」というタイトルのトピックがこの制限に達したとします。

すると、そのトピックが閉鎖され、議論を続けるための新しいリンク付きトピックが作成されます。新しいトピックの最初の投稿には、それまでのすべての議論(トピック)へのリンクが含まれます。

元のトピックのタイトルには「Part 1」が、新しいトピックのタイトルには「Part 2」が自動的に追加されます。

以降のトピックも同様の命名規則に従います。

また、自動的に閉鎖されたトピックの下部には、議論を続けるための新しいトピックが利用可能であることを示すモデレーター投稿も表示されます。

この機能はデフォルトで有効になっています。無効にするには、サイト設定「自動閉鎖のトピックでリンク付きトピックを作成」を無効にするだけです。

なお、「自動閉鎖の投稿数」が無効(0 に設定)されている場合、この機能も無効になります。

「いいね!」 33

素晴らしいですね!

これは「10,000 件のメッセージ問題」に対する解決策として活用できるでしょうか?

「いいね!」 4

これらのコード行(および見落としがあるかもしれませんが)について、小さな提案があります。

previous_topics += "- [#{topic.title}](#{topic.url})\n"
parent_topic.add_moderator_post(system_user, I18n.t('create_linked_topic.moderator_post_raw', new_title: "[#{new_topic_title}](#{new_topic.url})"))

[title](url) の形式を単に url に置き換え、Discourse の既存の機能(URL からトピックのタイトルを表示する機能)に依存することをお勧めします。もし私の認識が間違っていなければ、トピックがリネームされた場合に表示されるタイトルが自動的に更新されるというボーナス効果も得られ、これは良い工夫だと思います。

「いいね!」 6

はい、良いアイデアですね @techAPJ、それを実行すべきでしょう。

また、2 つのメッセージではなく 1 つのメッセージにすることは可能でしょうか。「会話を続ける」部分を閉鎖メッセージに編集して組み込むのはどうでしょうか。例えば:

このトピックは、返信数の上限 10000 に達したため自動的に閉鎖されました。この議論は {link} で続けてください。

「いいね!」 9

以下により実装済み:

もちろん、以下により実装済み:

「いいね!」 11

アクセス制限が厳密に同一でない別のカテゴリへ、アクセス制限付きトピックからの議論を引き継ぐ場合、この方法はうまく機能しません。

「いいね!」 1

それはあり得るユースケースでしょうか?一般的には、継続するトピックは元のトピックと同じカテゴリに留まるように思われます。もしこの状況が発生した場合、機能しなくなるとおっしゃいますが、具体的にどのような動作になるのでしょうか?

「いいね!」 4

リンクの問題がなくても、引き継がれたトピックが完全に同一のアクセス制限を継承していることを期待します。そうでなければ、それはバグと見なされます。

「いいね!」 4

良い指摘ですね、ならおそらく問題ないでしょう!

「いいね!」 3

こんにちは、とても素晴らしい機能ですが、2点の課題があります:

  1. 「Part」(1、2など)のテキストを変更するにはどうすればよいですか?英語ベースのフォーラムでは問題ないかもしれませんが、変更できるようにしたいです。
  2. 新しいトピックのカテゴリです。初めて自動的にリンクされたトピックが「未分類」でした。自動で閉じられた直前のトピックのカテゴリを、新しいトピックが引き継ぐようにしたいです。
「いいね!」 4

はい、その点は的確ですが、最後に確認した際はカテゴリが正しく継承されていました。@techAPJ さん、その通りでしょうか?

「いいね!」 3

これらのキーの翻訳を更新する必要があります。詳しくは、Contributing translations to Discourse をご覧ください。

それは妥当なバグです。本日中に優先して修正します。

それは手動での更新だった可能性があります。リンクされたトピックにカテゴリを割り当てるコードは見当たりません。

「いいね!」 6

以下で修正済みです:

「いいね!」 9

私もこの質問に非常に興味を持っています。

「いいね!」 1

@elijah さん、こちらで 以前の会話 を続けるおつもりでしたか?個人的には、こちらの方が適切な場所だと思います。

「いいね!」 3

@elijah 要するに、古いトピックの全ユーザーについて、トピックの通知ステータス(ウォッチ中、追跡中、ミュート中など)を新しいトピックにコピーしたい、ということですね?

その意図は理解できますが、懸念として、一部のユーザーにとっては少し侵入的すぎる可能性があります。長いトピックには数百人、あるいは数千人が関与していることもあります。これについて他の皆さんのご意見、メリットとデメリットはありますか?

「いいね!」 4

はい、文脈のためにここで再度私の提案を繰り返させてください。

メгатピックについては、あまり頻繁に利用しないユーザーにとって分割をよりシームレスにするための2つの方法のいずれかを提案していました。

メソッド:ウォッチリストのコピー:トピックを分割する際、新しいトピックに対してミュート/追跡/ウォッチのステータスをコピーする(そして、元のトピックで設定されていたのではなく、単にコピーされていた場合のみ、その閉じたトピックの追跡ステータスを解除する)。理由:ユーザーがしばらくそのトピックを読んでいない場合でも、一般的に関心があるなら、古いトピックの未読ポストを強調表示せず、新しいトピックの未読ポストのみを強調表示することで、フォローアップを支援する。

メソッド:トップスプリット:トピックを分割する際、2番目からN番目までのポストを1番目のポストをコピーして新しいトピック(作成時に閉じた状態)に移動し、移動されたポストをリンク付きのトピックメッセージに置き換える仕組みを提供する。理由:ウォッチ設定をいじるのは厄介だ。この方法なら、外部リンク(ブックマーク、RSS、アプリに組み込まれたものなど)や内部のウォッチ設定を壊すことなく、古いコンテンツをアーカイブできる。

私はトップスプリット方式の方が好きですが、どちらの方法も、非常に長い(または長期的だが分割された)トピックに関心のあるユーザーを支援する手段となり得ます。

「いいね!」 3

WPとDiscourseを使用して音声教育とグループリフレクションを行っていますが、WPプラグインがDiscourseで新しいトピックを作成したときに、そのメイントピックの反映トピックとしてリンクされたトピックを作成するイベントがトリガーされると、どれほど役立つか考えていました。そうすれば、元のトピックを読み取り専用に保つことができ、人々がオーディオを聴く前に反映を見ることがなくなり、リンクされたトピックで反映できるようになります。

これに似ています:

これを新しいプラグインで実現するために、ここのコードを少し調整するだけで済むと仮定してもよろしいでしょうか?

      if SiteSetting.auto_close_topics_create_linked_topic?
        # リンクされたトピックを作成するジョブをエンキューします
        Jobs.enqueue_in(5.seconds, :create_linked_topic, post_id: @post.id)
      end

また、リンクされたトピックを自動的に作成するためのアプリケーションが十分にあり、 Discourse Automation に含めることが理にかなっているかどうか興味がありますか?

「いいね!」 1