[有偿任务] Discourse 插件主题视图序列化器的要求

您希望完成什么工作?

回复:https://community.unix.com/

我们刚刚完成了向 Discourse 的迁移,但会保留旧论坛的访问权限直到 2021 年,因为我们拥有二十年的遗留代码,每位成员都为此感到自豪(并投入了大量工作)。

为了让我们的工作人员能够随时检查迁移代码的完整性,我们希望开发一个小插件,从 topic_custom_fields 中提取 value 字段,并仅将整数部分(即旧论坛的线程 ID)添加到 TopicViewSerializer 中。这样,JSON 序列化器将包含额外的键值对:

"import_id" : <旧论坛的线程 ID>

以下是一个查询示例,添加到 TopicViewSerializer(针对此 Discourse topic_id)的值将为:

"import_id": 284071
postgres=# \c discourse
您现在已连接到数据库 "discourse",用户为 "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}}

因为我们需要一个小的 <span> 模板组件,用于 topic-categoryplugin-outlet,其外观如下(仅对指定的信任级别可见):

<span class='import-id'>旧论坛线程 <a class='import-id-link' href='https://www.unix.com/showthread.php?t={{import_id}}'>{{import_id}}</a></span>

您希望何时完成?

未来几周内任何时间都可以,不急。

您能为此任务提供的预算(以美元计)是多少?

欢迎所有针对此小型插件的合理报价。

附加信息

我们计划将此代码免费提供给所有进行过类似迁移的人。然而,其他遗留论坛可能不像我们这样高度关注遗留代码的“数据完整性”,因此我们的论坛可能是唯一使用此插件的论坛。

我昨天撰写了一份关于此需求的“过于复杂”且可能“不准确”的说明,因此我认为上面的描述更简单易懂(希望如此):

附注

我自己尝试开发了这个小型插件,花了好几天时间。这是我第一次尝试编写 Discourse 插件,但在 TopicViewSerializer 中一直得到 import_idnull 值。

更新

感谢一些善意和指导,我现在已经使此任务的序列化器部分正常工作了。

3 个赞

更新:

感谢 @spirobel 的悉心指导、鼓励和支持,本插件的开发工作正在稳步推进。

目前仍在逐步完善代码,稍后将对其进行优化,以便未来有类似迁移需求的用户参考使用。

@spirobel 的合作非常愉快。他让我独立完成大部分工作和调试,同时在我遇到瓶颈时提供提示、代码示例、初步的拉取请求(PR)草案以及关键线索。

感谢 @spirobel

6 个赞

更新:

刚刚完成(alpha 版本)并开始对我第一个插件进行实时测试。

https://github.com/unixneo/legacy-info

状态:

  • 实时测试中

待办事项

  • 这是我的第一个 Discourse 插件。链接到旧版论坛的 URL 被硬编码在组件中。需要将其改为可配置的选项。
  • 随着时间的推移改进插件,使其代码符合“Discourse 标准”,因为目前还远未达到该标准。
  • 测试完成后在 #plugin 分类中发布相关内容。

致谢

特别感谢 @spirobel 昨天对我的指导,帮助我让序列化器和基本组件结构正常工作。

免责声明

所有“非标准或不良”的编码实践均由我本人负责。

说明

此旧版论坛信息仅对信任等级为 4 的论坛成员可见(可配置);

7 个赞

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