[有料案件] トピック表示シリアライザー用 Discourse プラグインの要件

何をしてほしいですか?

RE: https://community.unix.com/

Discourse への移行は完了しましたが、2021 年まで旧フォーラムへのアクセスを残しています。私たちは 20 年にもわたるレガシーコードを所有しており、各メンバーはそのコードを誇りに思い、多大な労力を注いできました。

移行されたコードの整合性を時々確認したいスタッフのために、topic_custom_fieldsvalue を分割し、整数(レガシーフォーラムのスレッド ID)のみを TopicViewSerializer に追加する小さなプラグインを作成したいと考えています。これにより、JSON シリアライザーに以下のキーと値のペアが追加されます。

"import_id" : <レガシーフォーラムのスレッド ID>

例として以下のクエリをご覧ください。この Discourse の topic_id に対して TopicViewSerializer に追加される値は以下のようになります。

"import_id": 284071
postgres=# \c discourse
You are now connected to database "discourse" as user "postgres".
discourse=# select * from topic_custom_fields where name like '%import_id%' and topic_id = 377947;
   id   | topic_id |   name    |     value     |         created_at         |         updated_at         
--------+----------+-----------+---------------+----------------------------+----------------------------
 239520 |   377947 | import_id | thread-284071 | 2020-04-22 03:20:03.968513 | 2020-04-22 03:20:03.968513
(1 row)

このプロパティをテンプレートコンポーネントで以下のように使用したいと考えています。

{{import_id}}

topic-categoryplugin-outlet に対して、以下のような小さな <span> テンプレートコンポーネントを作成したいと考えています(特定の信頼レベルのユーザーにのみ表示されます)。

<span class='import-id'>Legacy Forum Thread <a class='import-id-link' href='https://www.unix.com/showthread.php?t={{import_id}}'>{{import_id}}</a></span>

完了までの期限はいつですか?

今後数週間以内であればいつでも構いません。急ぐ必要はありません。

このタスクに対する予算(米ドル)はどのくらいですか?

この小さなプラグインに対する妥当な見積もりを歓迎します。

追加情報

このコードは、同様の移行を行ったすべての人に対して自由に公開する予定です。ただし、他のレガシーフォーラムではレガシーコードに対する「データの整合性」への関心がそれほど高くない可能性があり、このプラグインを使用するのは当フォーラムだけになる可能性もあります。

昨日、この要件について「過度に複雑で、おそらく不正確な」説明を書きました。そのため、上記の説明の方がシンプルで理解しやすいと思います(願わくば)。

付記

この小さなプラグインを自分自身で数日間開発しました。これは Discourse プラグインの初めての試みでしたが、TopicViewSerializer 内の import_id の値が常に null になってしまいました。

更新

親切なサポートと指導のおかげで、このタスクのシリアライザー部分は現在動作するようになりました。

「いいね!」 3

更新:

@spirobel による丁寧なコーチング、励まし、そして手厚いサポートのおかげで、このプラグインの開発が進んでいます。

現在、コードを段階的に作成中であり、将来的に同様の要件を持つ移行者向けに、完成させて公開する予定です。

@spirobel とは非常に良い協働ができました。作業やデバッグの大部分を私に任せてもらいつつ、行き詰まった際にはヒントやコード、ドラフトの PR、手がかりを提供してくれました。

@spirobel さん、ありがとうございます!

「いいね!」 6

アップデート:

アルファバージョンを完了し、最初のプラグインの実テストを開始しました。

状況:

  • 実テスト中

今後の課題

  • これは私の初めての Discourse プラグインです。レガシーフォーラムへのリンクがコンポーネントにハードコードされています。これを設定可能なオプションにする必要があります。
  • プラグインを時間とともに改善し、コーディングを「Discourse の標準」に近づける必要があります。現状ではまだ遠く及んでいません。
  • テストが完了したら、#plugin カテゴリに投稿します。

謝辞

昨日のコーチングと、シリアライザーおよび基本的なコンポーネント構造の動作確認にご協力いただいた @spirobel に心から感謝いたします。

注意点

すべての「非標準的または不適切なコーディング」の責任は私にあります。

補足

このレガシーフォーラムの情報は、当フォーラムの信頼レベル 4 のメンバーにのみ表示されます(設定可能)。

「いいね!」 7

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