[有料案件] トピック表示シリアライザー用 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

更新情報:

最初のプラグイン(アルファ版)の開発が完了し、ライブテストを開始しました。

現在のステータス:

  • ライブテスト中

TODO

  • これは私が作成した初めての Discourse プラグインです。レガシーフォーラムへのリンクがコンポーネント内にハードコードされています。これは設定可能な項目にする必要があります。
  • 現在は「Discourse の標準」から程遠いコードとなっているため、今後の改善を通じてコーディングを「Discourse の標準」に近づける。
  • テストが完了次第、Customization > Plugin カテゴリに投稿する。

謝辞

昨日、私にアドバイスしてくださり、シリアライザーと基本的なコンポーネント構造の動作を可能にしていただいた @spirobel に特別なお礼を申し上げます。

免責事項

すべての「標準的ではないまたは悪いコーディング」慣行は私の責任です。

注釈

このレガシーフォーラムの情報は、フォーラムにおいて信頼レベル 4 のメンバーに対してのみ表示可能(かつ設定可能)です。

「いいね!」 7

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