Discourse Retort

谢谢,是的,这是 Popper 的一个怪癖,它是表情选择器用于定位的库。我已经更新了 Popper 的使用方式以解决该问题。

4 个赞

首先,要非常感谢 @angus :pray: 接手这个插件,它一直以来都是我们的最爱。

我更新到了最新版本,但似乎导致私信(PM)功能出错了。

Uncaught TypeError: Cannot read property 'map' of undefined
    at _retort-2c5f89abb14744b92588a2ea05689cf5f5fe97d5b9094543abfacf0b1281182f.js:57
    at _application-95c62ce5b40d9a86771813c87729bec8a97a85040e9142c1de823499c05122ad.js:82147
    at Array.map (<anonymous>)
    at h (_application-95c62ce5b40d9a86771813c87729bec8a97a85040e9142c1de823499c05122ad.js:82146)
    at i.html (_application-95c62ce5b40d9a86771813c87729bec8a97a85040e9142c1de823499c05122ad.js:78359)
    at i.value (_application-95c62ce5b40d9a86771813c87729bec8a97a85040e9142c1de823499c05122ad.js:82625)
    at i.value (_application-95c62ce5b40d9a86771813c87729bec8a97a85040e9142c1de823499c05122ad.js:82345)
    at s (_vendor-66c7c54e4c3d88ab9a314688832cc04210ab4ae3401f48fb186a7134473d0d0a.js:20534)
    at t.exports (_vendor-66c7c54e4c3d88ab9a314688832cc04210ab4ae3401f48fb186a7134473d0d0a.js:20521)
    at e (_vendor-66c7c54e4c3d88ab9a314688832cc04210ab4ae3401f48fb186a7134473d0d0a.js:19890)
_retort-2c5f89abb14744b92588a2ea05689cf5f5fe97d5b9094543abfacf0b1281182f.js:368 Uncaught TypeError: Cannot read property 'toString' of undefined
    at t.disabledFor (_retort-2c5f89abb14744b92588a2ea05689cf5f5fe97d5b9094543abfacf0b1281182f.js:368)
    at _retort-2c5f89abb14744b92588a2ea05689cf5f5fe97d5b9094543abfacf0b1281182f.js:51
    at _application-95c62ce5b40d9a86771813c87729bec8a97a85040e9142c1de823499c05122ad.js:82147
    at Array.map (<anonymous>)
    at h (_application-95c62ce5b40d9a86771813c87729bec8a97a85040e9142c1de823499c05122ad.js:82146)
    at i.html (_application-95c62ce5b40d9a86771813c87729bec8a97a85040e9142c1de823499c05122ad.js:78359)
    at i.value (_application-95c62ce5b40d9a86771813c87729bec8a97a85040e9142c1de823499c05122ad.js:82625)
    at i.value (_application-95c62ce5b40d9a86771813c87729bec8a97a85040e9142c1de823499c05122ad.js:82345)
    at s (_vendor-66c7c54e4c3d88ab9a314688832cc04210ab4ae3401f48fb186a7134473d0d0a.js:20534)
    at t.exports (_vendor-66c7c54e4c3d88ab9a314688832cc04210ab4ae3401f48fb186a7134473d0d0a.js:20521)
1 个赞

谢谢,我们今天提交了一个移除 lodash 的 PR,这又是一个弃用项。

现已解决:

请更新并告知进展。

8 个赞

看起来现在运行正常了,非常感谢!:smile:

我们应用了以下 CSS 来让界面看起来更美观一些

桌面端

.emoji-picker.has-limited-set img.emoji {
    width: 40px !important;
    height: 40px !important;
}

.post-retort {
    margin: 0px 2px;
}

.emoji-picker.has-limited-set .limited-emoji-set {
    flex-wrap: wrap;
}

.emoji-picker {
    min-height: 80px;
    max-width: 400px;
}

移动端

.emoji-picker.has-limited-set .limited-emoji-set {
    flex-wrap: wrap !important;
}

.emoji-picker {
    min-width: 100% !important;
}

4 个赞

我刚刚重新构建了 Discourse 以更新插件。但现在,插件图标消失了,我所有的主题组件也不见了。我不知道这是否有关联,但在浏览器控制台中出现了以下消息:

编辑:停用 Retort 后,所有主题组件都回来了,所以看起来确实存在关联。

2 个赞

我的网站上经常看到这个错误,过一会儿整个网站对我来说就会变得缓慢/卡顿。

在安全模式下一切正常,网站运行快速且响应灵敏。

使用 Google Chrome:版本 85.0.4183.83(官方构建版)(64 位)

错误信息:

Uncaught TypeError: Cannot read property 'map' of undefined
    at retort-11c49191cf3e1f7f570d8808ade67b5d7fcfdfe612b792c49f064baacdebadc7.js:1
    at application-acabe31b416e73071c4f82b77bdadcf4a5fc525109638830baeeacd14e3a3656.js:1
    at Array.map (<anonymous>)
    at h (application-acabe31b416e73071c4f82b77bdadcf4a5fc525109638830baeeacd14e3a3656.js:1)
    at i.html (application-acabe31b416e73071c4f82b77bdadcf4a5fc525109638830baeeacd14e3a3656.js:1)
    at i.value (application-acabe31b416e73071c4f82b77bdadcf4a5fc525109638830baeeacd14e3a3656.js:1)
    at i.value (application-acabe31b416e73071c4f82b77bdadcf4a5fc525109638830baeeacd14e3a3656.js:1)
    at s (vendor-bf8061112a1b547c1b596d16d89c9a42af976a43984f9eacd40a8c690c0f30b2.js:1)
    at t.exports (vendor-bf8061112a1b547c1b596d16d89c9a42af976a43984f9eacd40a8c690c0f30b2.js:1)
    at e (vendor-bf8061112a1b547c1b596d16d89c9a42af976a43984f9eacd40a8c690c0f30b2.js:1)



 if (!v.default.disabledFor(e))
                    return v.default.storeWidget(r),
                    o.retorts.map(function(e) {   <<<<< 错误发生在此处
                        var t = e.usernames
                          , i = e.emoji;
                        return r.attach("retort-toggle", {
                            post: o,
                            usernames: t,
                            emoji: i
                        })

一些 CSS 问题及其在我们个人使用中的解决方案

桌面端

第一个问题算不上严重,但可能会发生。我们很少在一个帖子下收到这么多回复,但您需要注意:如果回复数超过 8 条,帖子控制区域就会显示异常。
screenshot-vapingcommunity.co.uk-2020.09.08-20_46_47

这里是 8 条回复时的效果,看起来很好。
screenshot-vapingcommunity.co.uk-2020.09.08-20_47_53

桌面端使用的 CSS

.post-retort {
	margin: 0px 2px;
	border: 1px solid #333;
	border-radius: 5px;
	padding: 3px;
	background-color: #666;
}

手机:iPhone SE 第一代

移动端

目前,在移动端(至少在使用较小屏幕时),不破坏帖子控制区域的回复数上限为 1 条。

如果回复数超过 1 条,帖子控制区域就会被移出屏幕。

以下是应用我们的 CSS 修改后的效果。

移动端 CSS

.post-retort {
	border: 1px solid #333;
	border-radius: 5px;
	padding: 3px;
	background-color: #666;
	margin: 2px 2px;
	float: none;
}

您可以使用上述移动端 CSS 在桌面端实现与移动端相同的布局效果,这会将回复按钮放置在帖子控制区域的上方。

screenshot-vapingcommunity.co.uk-2020.09.08-21_03_13

我们非常喜欢这个插件,它在我们的论坛中得到了广泛应用。感谢 @angus 接手这个项目 :+1:

5 个赞

我也遇到了这个错误。不过我的主题组件仍然正常工作,但回复选择器完全不可见(因为 JavaScript 出错了)。

我们将 Discourse 更新到了 2.5.1,然后首次安装了此插件。

4 个赞

我无法使用 wait load

2 个赞

我今天通过重新构建应用,意外地解决了我的问题。
你可以试试这个方法吗?

我也在使用稳定版(2.5.1)。

1 个赞

是的,我在他们的 GitHub 问题追踪器上报告了该问题,第二天就修复了,非常棒 :slight_smile:

2 个赞

大家好,我们非常喜欢这个插件,但在上次更新后,在我们的 社区论坛 中看到的表情符号变成了白色皮肤,而不是中性的黄色。

我们没有更改任何设置。这是当前的配置:

这是预期的行为吗?可以更改吗?

谢谢!!

3 个赞

大家好,
我是 Discourse 的新手。我已通过 GitHub 上的源代码安装了 Discourse,并且它已经在线运行。
今天,我安装了 Retort 插件,在“管理 - 插件”中可以看到新安装的 Retort 已存在并处于激活状态。

当我发布一个新话题,并用另一个账号查看时,原本希望能使用新的 Retort 插件,但却看不到预期的按钮……

我回到管理后台,确认了插件选项已按照手册中的说明进行了设置。请见下图:

由于这里只能发布一张图片,我将三张图片合并在一起。

所以,请帮帮我,看看问题出在哪里。任何建议都将不胜感激。提前非常感谢!

1 个赞

这并不在预期之内。我会在本周末查看一下。

@kchang 能否打开网页控制台(https://kb.mailster.co/how-can-i-open-the-browsers-console/),看看是否有来自此插件或其他插件或主题的任何异常?(将控制台中出现的任何红色行复制并粘贴到这里,如果内容较长,可以将其隐藏在“隐藏详情”标签中)。

2 个赞

@angus
非常感谢你的回复。我注意到控制台中有几条红色报错信息,请查看下方我在 Opera 浏览器中进入帖子时截取的图片。

看起来我的安装中“import”部分存在问题。我是通过源代码安装 Discourse 的,而非使用 Docker,因此我一直将新插件放入 discourse/plugins 目录中,并已成功通过这种方式安装了另外两个插件。我不确定以同样的方式安装 retort 是否正确。

另外,我之前确实已通过 npm 安装了 @popperjs/core,但不知为何仍遇到此错误……

谢谢。

1 个赞

该导入是在 emoji-picker 重构过程中添加的,此次重构促使该插件不久前进行了更新(见上文)。它大约一个月前被添加到 Discourse 中。如果您遇到该错误,说明您正在运行较旧版本的 Discourse。我猜您正在使用 stable 分支。

该插件也通过 .discourse_compatibility 文件支持 stable 分支,但如果您未使用 Docker,则需要通过 rake 任务 plugin:pull_compatible_all 安装插件,该任务会为您的 stable 分支拉取正确版本的插件。

如果这是生产环境,且您对 Discourse 还不太熟悉,我强烈建议您使用 Docker。Docker 能够处理 Discourse 环境管理的多个方面,例如为您的环境拉取正确的插件版本,从而避免可能让您陷入困境的问题。

4 个赞

您好,我之前限制了表情符号。之前的一次更新中,为了让插件正常工作,我不得不允许无限制的表情符号。

1 个赞

非常感谢 @angus,你说得对,我现在处于 Discourse 的稳定分支上。我会运行 rake 任务来拉取兼容版本的 retort。在获取域名后,我会改用 Docker 镜像,这样更方便。:grinning:

更新:
我运行了 rake plugin:pull_compatible_all,但看起来我的 Discourse 稳定版本太旧了。所以我拉取了最新版本的 Discourse。现在一切运行顺畅 :grin:

再次感谢你的热心帮助 :smiley:

2 个赞

在 Discourse 的默认主题中,移动视图下的回复按钮与底部工具栏的其他图标(如点赞、分享等)分离,导致反击图标被挤到下方,视觉效果非常难看。
我通过在主题中添加以下 CSS 代码来修正这一设计问题。或许您也会觉得它有用:

.mobile-view {
    
    .topic-post nav.post-controls .actions button.reply {
        margin: inherit;
        margin-left: 10px;
    }
    
    nav.post-controls .actions {
        text-align: right;
        float: right;
        display: inline-block;
    }
    
    .topic-post nav.post-controls .actions .double-button {
        display: inline-flex;
    }
    
    .post-menu-area {
        margin: 0;
        padding-top: 15px;
    }
}
3 个赞

太棒了,谢谢 :slightly_smiling_face:

如果你需要帮助调试这个问题,或者对可能的问题原因有任何线索,请告诉我。

1 个赞