Discourse 标记解决方案插件


(Erick Guan) #1

关于

Discourse 标记解决方案插件能让用户在指定分类的主题中标记一个解决方案。

要求

Discourse 版本 v1.4.0.beta2 +65 及以后

安装

目录位于:https://github.com/discourse/discourse-solved

在你的 app.yml 中增加:

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - mkdir -p plugins
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-solved.git

然后重建容器:

./launcher rebuild app

配置

编辑你想要启用该功能的分类启用标记解决方案:

作为楼主,你将被允许标记一个解决方案

有解决方案的帖子将在主题列表中被高亮:

被标记为解决方案的帖子将在主题开始高亮:

徽章

由于插件系统没有办法在增加或删除插件时添加或删除徽章,所以你只能自己手动在徽章页更改。

第一个被接受的解决方案徽章:

SELECT p.user_id, p.id post_id, p.updated_at granted_at
FROM badge_posts p
WHERE p.post_number > 1 AND 
    p.id IN (
      SELECT post_id FROM (
       SELECT pc.post_id, row_number() 
       OVER (PARTITION BY p1.user_id ORDER BY pc.created_at) as rnum
       FROM post_custom_fields pc
       JOIN badge_posts p1 ON p1.id = pc.post_id
       JOIN topics t1 ON p1.topic_id = t1.id
       WHERE name = 'is_accepted_answer' AND
                    p1.user_id <> t1.user_id AND 
        (
          :backfill OR 
           p1.user_id IN (
                   select user_id from posts where p1.id IN (:post_ids)
           )
       )
) X  WHERE rnum = 1)

10个解决方案徽章

SELECT id user_id, current_timestamp granted_at
FROM users
WHERE id  IN (
       SELECT p1.user_id 
       FROM post_custom_fields pc
       JOIN badge_posts p1 ON p1.id = pc.post_id
       JOIN topics t1 ON p1.topic_id = t1.id
       WHERE p1.user_id <> t1.user_id AND 
                    name = 'is_accepted_answer' AND 
            p1.user_id IN (
                   SELECT user_id 
                   FROM posts 
                   WHERE :backfill OR  p1.id IN (:post_ids)
            )
        GROUP BY p1.user_id
        HAVING COUNT(*) > 9
)

升级 1.3 后分享插件失效
想问下下面效果是什么插件实现的呢?
“已解决”这个怎么实现的?
咨询一下,本站这种“贴子问题得到解决的效果“是怎么实现的?
(scavin) #2

这个 acceptd answer 是新功能么?貌似翻译还没有


(Erick Guan) #3

一个插件,还没上传翻译~


(scavin) #5

竟然要 1.4…


(scavin) #6

这个在哪里输入呢?


(Erick Guan) #7

创建徽章之后能看到放 SQL 数据库语句的区域。


(scavin) #8

创建后什么都没发现


(Erick Guan) #9

刚看到了 1.6 之后因为 1.安全性 2.管理员写的SQL运行的速度问题默认禁止了 SQL 的编辑。

手动开启

./launcher enter app
rails c
> SiteSetting.enable_badge_sql = true

(雪莱鸟) #10

似乎这个插件已经失效了吧,安装后未变化。