トピックの返信は、トピックの所有者が公開するまで表示されないのですか?

私のパートナーは古代ギリシア語と古典ラテン語の教師で、何年も前から授業で Discourse を使っています。主に課題を配布し、その後について学生と議論するために活用しています。しかし、これまでのところ、すべての課題は授業中に紙で提出されていました。

ところが、コロナ騒動で学校が閉鎖されたため、彼女は課題を含めて 100% オンライン授業に移行しています。そのため、現在、学生たちは皆、自分の作品をメールで送っています。これは非常に非効率的で、彼女にかなりの事務作業を強いることになります(正直なところ、彼女はそういうことが得意ではないのです ;))。

いくつかの選択肢について話し合ったところ、彼女はこう言いました。「なぜ、トピックの作成者の投稿(つまり、トピックの立ち上げ者が行った投稿)と、自分自身の投稿しか見られないようなトピックを作れないのでしょうか?これなら、課題をトピックとして投稿し、各学生がその下に自分の答えを投稿できますが、他の学生の答えは見えません。そして、全員が作品を投稿し、議論のタイミングが来たら、ボタン一つでその覆いを外して、トピック内のすべての投稿を全員が見られるようにしたいのです。そうすれば、互いの作品を見て議論できます」

素晴らしいアイデアですね!(だから彼女を愛しているのです)。

私はこの機能を実現するプラグインを作成しようと考えています。おそらく、トピックが解決された瞬間にすべてが見えるようにする「solved」プラグインのマジックスイッチを活用するでしょう。しかし、着手する前に皆さんの意見やフィードバックを伺い、さらに改善するアイデアを得たいと考えています。

また、これを効率的に実装するためのヒントや指針も大歓迎です。トピックへのアクセスには多くの方法があり、もし一人の学生がこれを回避する方法を見つけてしまったら、すべてが無駄になってしまうからです。

トピックに関するすべての処理は TopicView を通じて行われているのでしょうか?username_filters を活用できるでしょうか?それともそれに似た仕組みを構築すべきでしょうか?あるいは、guardian の方が適しているでしょうか?

皆さんのご意見をお聞かせください!

「いいね!」 18

これは必要なセキュリティ保証に大きく依存しますが、学生は相当に有能であると想定されるため、CSS のみの解決策では機能しないでしょう。

もし CSS の解決策が機能せず、これらの子供たちがいたずら好きで、抜け穴をすべて見つけて不正を働く可能性があるとすれば、

バックドアとなる [quote] の展開や、あらゆる種類の不正行為が発生する可能性があります。「投稿を閲覧可能にする」という単純な修正では不十分かもしれません。

これを実現する非常に安全な方法は、プライベートメッセージ(PM)を利用することです。学生が PM を通じて提出物を送り、完了したら…「クリック」一つでその PM すべてをトピックに移動させます。クリーンで…シンプルで…安全です。

「いいね!」 18

ソリューションはアップロードですか、それとも Composer のテキストですか?

アップロードの場合、新しい Secure Media Uploads を使い、さらにプラグインを追加してユーザーのダウンロード用一時 URL の生成方法を変更し、スタッフのみが「適切な」URL を生成できるようにすることで、最小限の変更で対応できる可能性があります。トピックが解決・タグ付け・クローズされると、一時 URL は通常の状態に戻り、誰もがすべての内容を閲覧できるようになります。

また、投稿内容を閲覧せずに、ユーザーが投稿している様子を確認できるのも興味深いです。

「いいね!」 8

フィードバックとアイデアをいただき、ありがとうございます!

問題は、彼女が同時に 6 つのクラスを持ち、それぞれに 2〜3 つの課題が進行しているため、管理する課題は合計で約 15 件にもなることです。そのため、それほど簡単にはいかないでしょう。

いいえ、CSS のみの対応では確実に機能しません。他方、これが数回破られても、毎日問題の修正を繰り返さなければ大きな問題にはなりません。

それは本当に素晴らしいアイデアですね。ただし、内容の多くはコンポーザーのテキストであり、全てをアップロードに強制したくはないようです。

「いいね!」 2

これがリクエストですので、タイトルを編集します。
私の直感的な感覚では、これはスパイラープラグインのようなものです。スパイラーはトピックの作成者によってのみ公開されます。

「いいね!」 4

ネタバレは少し厄介ですね。/raw ルートも保護する必要があります。

例えば:

  • 教師が「インドシナ戦争はなぜ始まったのか」と投稿する

  • 生徒が自分宛てに PM を作成して課題に取り組み、完了したらトピックにリンクを投稿する。(利点:修正が容易で、教師を煩わせない)

  • 教師は PM 内で「直接フィードバック」を提供できる

  • 採点が完了したら、教師が「公開」をクリックし、PM の生内容をコピーして、課題トピック内の PM リンクを置き換える。

「いいね!」 7

この件について、年に数回問い合わせが寄せられますが、回答はいつも「トピック固有の権限は設定できません」というものです。もしこれを解決できれば、相当な関心が寄せられると思います。

「いいね!」 6

さて、これは少し厄介です。TopicViewPostGuardian を少しいじってみたところ、/raw や引用投稿番号の編集トリックを含めて、80% は比較的簡単に達成できました。しかし、現在でも本来見るべきではない投稿が以下の方法で表示されてしまいます:

  • 検索
  • ユーザーのアクティビティ
  • ダイジェストメール

そのため、さらに修正が必要です。現時点で思いつくのは上記のみですが、投稿にアクセスする他の方法についての提案も歓迎します。

「いいね!」 4

それがいまだに答えです。正直なところ、この質問をすること自体が、質問者が自分が達成しようとしていることを十分に考えていないことを示していると思います。
ただし、拡張されたスプォイラーモードには賛成です。それは理にかなっていると思います。

「いいね!」 4

これが「一般ユーザーによるウィスパー投稿の作成」として実装されたらどうでしょうか?

「いいね!」 2

誰に囁くのですか?トピックの所有者ですか?であれば、彼らを囁きから降格させる必要があります。

「いいね!」 4

いくつかの細かい仕上げは残っていますが、すでに動作するプラグインが完成しました。こちらをご覧ください:GitHub - communiteq/discourse-private-replies · GitHub

プラグインをインストールして有効化すると、トピックの作成者(およびスタッフ)が、各トピックの下部にPrivate Replies(非公開返信)という追加ボタンを取得します。

このボタンを使用すると、トピックの「非公開返信」モードを切り替えることができます。

非公開返信モードが有効になっている場合:

  • トピックの作成者はすべての投稿を閲覧できます。
  • 他のすべてのユーザーは、トピックの作成者、スタッフ、および自分自身の投稿のみを表示できます。

このようなトピックは、トピックの上部に表示されるバナーで識別できます。

image

トピックの作成者が投稿を公開する必要があると判断した場合、同じボタン(現在は「Public Replies」)をトピックの下部で使用して、非公開返信モードを無効にできます。バナーは消え、すべての投稿が全員に表示されるようになります(もちろん、カテゴリのセキュリティ設定は尊重されます)。

このプラグインは、投稿内容を取得する以下の方法を無効にします:

  • トピック表示(つまり、投稿を閲覧する通常の方法)
  • ユーザープロフィール - アクティビティ
  • 検索
  • 生データ(/raw/topic_id/post_id

免責事項 1:

このプラグインは、トピックに投稿したユーザーを完全に隠蔽するものではありません。トピック一覧に表示されるユーザーのアバターは変更されておらず、トピック自体もユーザープロフィールのサマリーに表示されます。ただし、これらはいずれも投稿の内容を明らかにするものではありません。

免責事項 2:

見落としている可能性のある投稿内容の取得方法があるかどうかはわかりません(例えば、ダイジェストで情報が漏れるかどうかは、まだテストしていません)。私の SO は今後数週間でこれをテストする予定ですが、彼女の学生たちがいくつかの巧妙な抜け道を見つけることができるだろうと確信しています。それらの抜け道が発見され次第、すぐに修正するつもりです。ヒントやアドバイスをお待ちしています!

今週中に、プラグインカテゴリ用の投稿と良い README.md を作成する予定です。それまで、皆さんのフィードバックをお待ちしています!

「いいね!」 9

これにはどのようなパフォーマンスへの影響がありますか?多くのサードパーティ製プラグインは、N+1、N²、N³、N の N 乗といったクエリを追加してしまっていますが、ここではそれを回避できることを願っています。

また、トピックごとにオン/オフを切り替えられ、オンにされたトピック以外にはパフォーマンスへの影響がゼロであることも望ましいですね。常に全体的なコストを支払う必要があるのではなく。

「いいね!」 7

できる限り効率的になるよう努めました。つまり、可能な限り遅延評価を行い、フィルタからはできるだけ早く脱出するようにしました。

スタッフのユーザーIDや保護されたトピックのIDをキャッシュするなど、小さな最適化の余地は確かにありますが、最初のバージョンとしてはよくできたと考えています。もし異論がある方がいれば、遠慮なくコードを批判してください。

「いいね!」 9