他のカテゴリでのトピック移動をユーザーに防止する

この機能は、カテゴリごとに異なるモデレーターチームがあり、突然、事前の通知なしに大きな、または論争の的となるスレッドが自分のカテゴリに入ってくる場合に、スレッドの管理に複雑さをもたらす可能性があるため、無効にするオプションを探しています。

Access rights for moving a topic to another category を読みましたが、これはトラストレベル3のみができることだと書かれています。テスト環境では、トラストレベル2のユーザーがそれを実行できました。

「スタッフが投稿を編集した後の編集を無効にする」を有効にしてみましたが、スレッドのカテゴリを変更する能力には影響しないようです。

何か見落としていることはありますか?おそらく見落としています :smiley:

「いいね!」 2

テストが必要になるでしょう。カテゴリグループのMODは、編集や移動コマンドでトピックを移動できる可能性があります。

また、Plugin Custom Trust Levelsについても調べることをお勧めします。

それを確認し、考慮に入れますが、まずは編集用のその選択肢を非表示にするシンプルなコンポーネントを作成してみます。スタッフ以外は非表示になります。
シンプルなことをするプラグインが好きです :slight_smile:

「いいね!」 1

@Canapin が、指定されたグループ以外のグループで「いいね」ボタンを非表示にするコードを提供してくれました。

これをベースに作業を進めると良いかもしれません。

リンクを修正しました。

「いいね!」 2

@Heliosurge(そして、どこにでもいる @Canapin :stuck_out_tongue: )本当にありがとう。ちょうど例として同様のプラグインを探せる場所を考えていました :slight_smile:

「いいね!」 2

どういたしまして!チームとこのコミュニティは私の経験上素晴らしいです。:clinking_beer_mugs::smiling_face_with_sunglasses::+1:

「いいね!」 2

見てみましたが、良いMVPだと思います。しかし、私が探しているコミュニティはかなり技術に精通しているので、コンポーネントを単に非表示にするのではなく、DOMがそのコンポーネントを描画しないようにする方が良いでしょう。

プラグインが必要ですか、それともコンポーネントで達成できることですか?

大まかに言うと、ロールに基づいて、そのセレクトのHTMLが生成されているかどうかを判断する必要があります。

「いいね!」 1

コンポーネントで十分だと思います。

「いいね!」 1

コーダーではありません。

最初の投稿を編集する際に(編集投稿アクションから、編集タイトルからではなく)カテゴリセレクターを非表示にするには、次のようにします。

<script type="text/discourse-plugin" version="1.6.0">
    let currentUser = api.getCurrentUser();
    api.modifyClass("component:composer-title", {
      pluginId: "PreventCategoryChange",
      didInsertElement: function() {
        if(currentUser.trust_level == 1) {
            let categoryInput = document.getElementsByClassName('category-input')[0];
            let miniTagChoser = document.getElementsByClassName('mini-tag-chooser')[0];
            if(categoryInput != null) {
                categoryInput.remove();
                if(miniTagChoser != null) {
                    miniTagChoser.style.marginLeft = '0';
                }
            }
        }
      }
    });
</script>

chrome_NTAAc37JXB

トラストレベルを使用しましたが、currentUserオブジェクトにすべて含まれているため、代わりにユーザーグループを管理できると思います。

タイトルを編集する際にカテゴリセレクターを動的に削除する方法がわかりません。
関連していると思われるファイルから推測できるかもしれません。

「いいね!」 2

@Canapin様、本当にありがとうございます。

タイトルからの編集についても追加する必要がありそうですが、これはすでに大変役立ちます :slight_smile:

完了したら、テーマコンポーネントセクションに投稿しますので、他の人も利用できるようになります :wink:

「いいね!」 2

This discourse/app/assets/javascripts/discourse/app/templates/topic.hbs at 53695e7d29e718041fa53bf4fef21e02354a4088 · discourse/discourse · GitHub

seems to be the right handle to access, now if someone knows how to interact with it via theme component… :stuck_out_tongue:
これはアクセスするのに適したハンドルツールのようですが、テーマコンポーネント経由で操作する方法を知っている人はいますか… :stuck_out_tongue:

「いいね!」 1

神々よ、タイトルの編集がトリガーされたことを検出するフックが見つかりません。何を聞けばよいか、どなたかご存知ですか?

トピックの最初のメッセージを編集する際にカテゴリの変更を非表示にすることは機能しており、編集モードの時だけを検出しています。

「いいね!」 1

親愛なる友人が不眠症に悩んでいたおかげで、適切なフックを見つけることができました :stuck_out_tongue:

こちらがそのフックです。フォームのビジュアルも調整し、アクセスを許可する最小トラストレベルを選択できるようになります(デフォルトでは、デフォルトのDiscourse設定に合わせるためにトラストレベル0です)。

今から#pluginセクションに新しいトピックを作成します。

最初に正しい方向を示してくれた@Canapinさんに本当に感謝します :heart_eyes:

「いいね!」 3

コードを見ました、素晴らしい出来です :+1:

むしろ、私があなたから多くを学んだと思います!

一点だけ、あなたが作成したのは Plugin ではなく、Theme component です :slight_smile:

「いいね!」 2

補足ですが、トラストレベル3および4のユーザーは、trusted users can edit others が有効になっている限り、任意のトピックを再分類できます。トラストレベル0/1/2のユーザーは、自分のトピックに対してのみ、編集期間内(post edit time limit で設定されたTL0およびTL1の編集期間、およびTL2およびTL3の tl2 post edit time limit)にのみ実行できるはずです。最初の投稿を投稿レンチでロックすると、カテゴリ(およびタイトルとタグ)の編集も停止されるはずです。

あなたのユースケースを100%理解しているか確信はありませんが、解決策が見つかったことを嬉しく思います。:slightly_smiling_face::+1:

「いいね!」 3

ああ、はい、このオプションがあることを知りませんでした。

これにより、カテゴリモデレーターによるものであっても、それ以上の変更(削除を除く)ができなくなります。

しかし、最初の投稿のロックは、トピックタイマーや自動タスクから自動化することはできません。

「いいね!」 1

はい、承知していました。

しかし、私の意図は、モデレーターが複数のカテゴリホッピングの発生に対処しなければならないのを防ぐことでした。これにより、トピックが最初にカテゴリにあり、その後別のカテゴリに移動するなどの場合に、モデレーションが複雑になる可能性があります。

「いいね!」 1

テーマコンポーネントであるため、ユーザーはJavaScriptを注入するか(おそらく)、利用可能な場合はセーフモードを有効にすることで(**セーフモードを有効にする**設定を参照)、これらの制限を回避できる可能性があるため、追加することが重要だと思います。

より安全な方法で実行するには、プラグインが必要です。

「いいね!」 2

はい、そのためプラグインも検討していましたが、最初のバージョンとしてはコンポーネントで十分です。

「いいね!」 1

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.