# Collude - 用于 Discourse 的协作文本编辑器

**URL:** https://meta.discourse.org/t/collude-a-collaborative-text-editor-for-discourse/96474
**Category:** Plugin
**Tags:** broken
**Created:** [2018年九月6日 05:20 UTC](https://meta.discourse.org/t/collude-a-collaborative-text-editor-for-discourse/96474 "2018-09-06T05:20:01Z")
**Posts on this page:** 20
**Page:** 2

<div class="post-metadata">

### Author: ![gdpelican](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gdpelican/32/81308_2.png) [@gdpelican](https://meta.discourse.org/u/gdpelican)
#### Post date: [2018年九月15日 16:41 UTC](https://meta.discourse.org/t/collude-a-collaborative-text-editor-for-discourse/96474/21 "2018-09-15T16:41:42Z")

</div>

Cool, it seems to be working alright on that instance with a cursory test; yes I’ve pushed the changes to the plugin repo. 🙂

If you encounter an issue with the text disappearing again, would you mind PMing me the output of the following command in the rails console?

```plaintext
Topic.find(<topic_id>).posts.first.collusions

```

---

<div class="post-metadata">

### Author: ![hellekin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/hellekin/32/51636_2.png) [@hellekin](https://meta.discourse.org/u/hellekin)
#### Post date: [2018年九月15日 17:03 UTC](https://meta.discourse.org/t/collude-a-collaborative-text-editor-for-discourse/96474/22 "2018-09-15T17:03:30Z")

</div>

I rebuilt the container and now all instances in the Multisite setup have a working Collude!  
Kudos @gdpelican.

---

<div class="post-metadata">

### Author: ![hellekin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/hellekin/32/51636_2.png) [@hellekin](https://meta.discourse.org/u/hellekin)
#### Post date: [2019年三月6日 16:19 UTC](https://meta.discourse.org/t/collude-a-collaborative-text-editor-for-discourse/96474/23 "2019-03-06T16:19:59Z")

</div>

Somehow something is wrong. I started to edit, then another person came to see the topic, and the machine load started to run through the roof: all editing was lost. I cannot debug now, probably better next month as I’m rushing towards a hard deadline, but I’d appreciate other reports (of success or failure) with this plugin since I really like the principle. Otherwise I will have to consider running an external CodiMD instance which is also great.

---

<div class="post-metadata">

### Author: ![pihentagy](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pihentagy/32/131067_2.png) [@pihentagy](https://meta.discourse.org/u/pihentagy)
#### Post date: [2019年七月11日 09:54 UTC](https://meta.discourse.org/t/collude-a-collaborative-text-editor-for-discourse/96474/24 "2019-07-11T09:54:22Z")

</div>

使用 collude 时我遇到了以下错误：

> ****
>
> ```plaintext
> Recent
> Message
> 
> Uncaught TypeError: Cannot read property 'get' of undefined
> Url: http://mercury/assets/plugin-third-party-5d2db6ac05f499c3b3bf48f1732b98542795b2cfffccd977a712385207df13c9.js
> Line: 11
> Column: 24050
> Window Location: http://mercury/t/integralas-a-masterre-rfc/149/6
> 
> Backtrace
> 
> TypeError: Cannot read property 'get' of undefined
> at i.disabledFor (http://mercury/assets/plugin-third-party-5d2db6ac05f499c3b3bf48f1732b98542795b2cfffccd977a712385207df13c9.js:11:24050)
> at http://mercury/assets/plugin-third-party-5d2db6ac05f499c3b3bf48f1732b98542795b2cfffccd977a712385207df13c9.js:11:24958
> at http://mercury/assets/application-854cd242b33a3d81896cdc71e1e8b74d7af66cb0eb20c47894a900f5854ad957.js:74:1148
> at Array.map (<anonymous>)
> at c (http://mercury/assets/application-854cd242b33a3d81896cdc71e1e8b74d7af66cb0eb20c47894a900f5854ad957.js:74:1125)
> at t.html (http://mercury/assets/application-854cd242b33a3d81896cdc71e1e8b74d7af66cb0eb20c47894a900f5854ad957.js:72:14939)
> at t.m [as draw] (http://mercury/assets/application-854cd242b33a3d81896cdc71e1e8b74d7af66cb0eb20c47894a900f5854ad957.js:74:2198)
> at t.value (http://mercury/assets/application-854cd242b33a3d81896cdc71e1e8b74d7af66cb0eb20c47894a900f5854ad957.js:74:5263)
> at i (http://mercury/assets/vendor-25f91d66eba869fbd399d751711e74544b6d60bf034a5350b61c6c12caad0e2a.js:5:16906)
> at r (http://mercury/assets/vendor-25f91d66eba869fbd399d751711e74544b6d60bf034a5350b61c6c12caad0e2a.js:5:16819)
> 
> Env
> hostname	mercury-discourse
> process_id	9576
> application_version	6fec4982d903cbb088f95b5dcae7b67f52a90e99
> HTTP_HOST	mercury
> REQUEST_URI	/logs/report_js_error
> REQUEST_METHOD	POST
> HTTP_USER_AGENT	Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36
> HTTP_ACCEPT	*/*
> HTTP_REFERER	http://mercury/t/integralas-a-masterre-rfc/149/6
> HTTP_X_FORWARDED_FOR	192.168.2.234
> HTTP_X_REAL_IP	192.168.2.234
> 	
> params	
> message	Uncaught TypeError: Cannot read property 'get' of undefined Url: http://mercury/assets/plugin-third-p
> url	http://mercury/assets/plugin-third-party-5d2db6ac05f499c3b3bf48f1732b98542795b2cfffccd977a712385207df
> line	11
> column	24050
> window_location	http://mercury/t/integralas-a-masterre-rfc/149/6
> stacktrace	TypeError: Cannot read property 'get' of undefined at i.disabledFor (http://mercury/assets/plugin
> 
> ```

以及

> ****
>
> ```plaintext
> 
> Recent
> Message
> 
> TypeError: t is undefined
> Url: http://mercury/assets/plugin-third-party-5d2db6ac05f499c3b3bf48f1732b98542795b2cfffccd977a712385207df13c9.js
> Line: 11
> Column: 24021
> Window Location: http://mercury/t/egyseges-lehetoleg-cegesen-egyseges-gitlab-workflow/177
> 
> Backtrace
> 
> disabledFor@http://mercury/assets/plugin-third-party-5d2db6ac05f499c3b3bf48f1732b98542795b2cfffccd977a712385207df13c9.js:11:24021
> s/<@http://mercury/assets/plugin-third-party-5d2db6ac05f499c3b3bf48f1732b98542795b2cfffccd977a712385207df13c9.js:11:24958
> c/<@http://mercury/assets/application-854cd242b33a3d81896cdc71e1e8b74d7af66cb0eb20c47894a900f5854ad957.js:74:1148
> c@http://mercury/assets/application-854cd242b33a3d81896cdc71e1e8b74d7af66cb0eb20c47894a900f5854ad957.js:74:1125
> html@http://mercury/assets/application-854cd242b33a3d81896cdc71e1e8b74d7af66cb0eb20c47894a900f5854ad957.js:72:14939
> m@http://mercury/assets/application-854cd242b33a3d81896cdc71e1e8b74d7af66cb0eb20c47894a900f5854ad957.js:74:2198
> value@http://mercury/assets/application-854cd242b33a3d81896cdc71e1e8b74d7af66cb0eb20c47894a900f5854ad957.js:74:5263
> i@http://mercury/assets/vendor-25f91d66eba869fbd399d751711e74544b6d60bf034a5350b61c6c12caad0e2a.js:5:16906
> r@http://mercury/assets/vendor-25f91d66eba869fbd399d751711e74544b6d60bf034a5350b61c6c12caad0e2a.js:5:16836
> r@http://mercury/assets/vendor-25f91d66eba869fbd399d751711e74544b6d60bf034a5350b61c6c12caad0e2a.js:5:10297
> r@http://mercury/assets/vendor-25f91d66eba869fbd399d751711e74544b6d60bf034a5350b61c6c12caad0e2a.js:5:10595
> r@http://mercury/assets/vendor-25f91d66eba869fbd399d751711e74544b6d60bf034a5350b61c6c12caad0e2a.js:5:10595
> r@http://mercury/assets/vendor-25f91d66eba869fbd399d751711e74544b6d60bf034a5350b61c6c12caad0e2a.js:5:10595
> r@http://mercury/assets/vendor-25f91d66eba869fbd399d751711e74544b6d60bf034a5350b61c6c12caad0e2a.js:5:10595
> o@http://mercury/assets/vendor-25f91d66eba869fbd399d751711e74544b6d60bf034a5350b61c6c12caad0e2a.js:5:11969
> r@http://mercury/assets/vendor-25f91d66eba869fbd399d751711e74544b6d60bf034a5350b61c6c12caad0e2a.js:5:11637
> o@http://mercury/assets/vendor-25f91d66eba869fbd399d751711e74544b6d60bf034a5350b61c6c12caad0e2a.js:5:13452
> i@http://mercury/assets/vendor-25f91d66eba869fbd399d751711e74544b6d60bf034a5350b61c6c12caad0e2a.js:5:13316
> r@http://mercury/assets/vendor-25f91d66eba869fbd399d751711e74544b6d60bf034a5350b61c6c12caad0e2a.js:5:11837
> o@http://mercury/assets/vendor-25f91d66eba869fbd399d751711e74544b6d60bf034a5350b61c6c12caad0e2a.js:5:13452
> i@http://mercury/assets/vendor-25f91d66eba869fbd399d751711e74544b6d60bf034a5350b61c6c12caad0e2a.js:5:13316
> r@http://mercury/assets/vendor-25f91d66eba869fbd399d751711e74544b6d60bf034a5350b61c6c12caad0e2a.js:5:13139
> rerenderWidget@http://mercury/assets/application-854cd242b33a3d81896cdc71e1e8b74d7af66cb0eb20c47894a900f5854ad957.js:33:8368
> g</t.invoke@http://mercury/assets/ember_jquery-0ae86c6a7527a99c2b9b8a11521273bd9cb4f7d41bc546df081b7ee94f26d9c3.js:16:6927
> g</t.flush@http://mercury/assets/ember_jquery-0ae86c6a7527a99c2b9b8a11521273bd9cb4f7d41bc546df081b7ee94f26d9c3.js:16:5930
> y</t.flush@http://mercury/assets/ember_jquery-0ae86c6a7527a99c2b9b8a11521273bd9cb4f7d41bc546df081b7ee94f26d9c3.js:16:7980
> z</r._end@http://mercury/assets/ember_jquery-0ae86c6a7527a99c2b9b8a11521273bd9cb4f7d41bc546df081b7ee94f26d9c3.js:16:12654
> z</r.end@http://mercury/assets/ember_jquery-0ae86c6a7527a99c2b9b8a11521273bd9cb4f7d41bc546df081b7ee94f26d9c3.js:16:9317
> z</r._run@http://mercury/assets/ember_jquery-0ae86c6a7527a99c2b9b8a11521273bd9cb4f7d41bc546df081b7ee94f26d9c3.js:16:13143
> z</r.run@http://mercury/assets/ember_jquery-0ae86c6a7527a99c2b9b8a11521273bd9cb4f7d41bc546df081b7ee94f26d9c3.js:16:9925
> l@http://mercury/assets/ember_jquery-0ae86c6a7527a99c2b9b8a11521273bd9cb4f7d41bc546df081b7ee94f26d9c3.js:12:447
> bootbox</c.dialog/<@http://mercury/assets/vendor-25f91d66eba869fbd399d751711e74544b6d60bf034a5350b61c6c12caad0e2a.js:2:515
> dispatch@http://mercury/assets/ember_jquery-0ae86c6a7527a99c2b9b8a11521273bd9cb4f7d41bc546df081b7ee94f26d9c3.js:2:19650
> add/v.handle@http://mercury/assets/ember_jquery-0ae86c6a7527a99c2b9b8a11521273bd9cb4f7d41bc546df081b7ee94f26d9c3.js:2:17641
> 
> Env
> hostname	mercury-discourse
> process_id	9547
> application_version	6fec4982d903cbb088f95b5dcae7b67f52a90e99
> HTTP_HOST	mercury
> REQUEST_URI	/logs/report_js_error
> REQUEST_METHOD	POST
> HTTP_USER_AGENT	Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:67.0) Gecko/20100101 Firefox/67.0
> HTTP_ACCEPT	*/*
> HTTP_REFERER	http://mercury/t/egyseges-lehetoleg-cegesen-egyseges-gitlab-workflow/177
> HTTP_X_FORWARDED_FOR	192.168.2.206
> HTTP_X_REAL_IP	192.168.2.206
> 	
> params	
> message	TypeError: t is undefined Url: http://mercury/assets/plugin-third-party-5d2db6ac05f499c3b3bf48f1732b9
> url	http://mercury/assets/plugin-third-party-5d2db6ac05f499c3b3bf48f1732b98542795b2cfffccd977a712385207df
> line	11
> column	24021
> window_location	http://mercury/t/egyseges-lehetoleg-cegesen-egyseges-gitlab-workflow/177
> stacktrace	disabledFor@http://mercury/assets/plugin-third-party-5d2db6ac05f499c3b3bf48f1732b98542795b2cfffccd977
> 
> ```

有什么建议吗？

谢谢

---

<div class="post-metadata">

### Author: ![flyingdojo](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/flyingdojo/32/157723_2.png) [@flyingdojo](https://meta.discourse.org/u/flyingdojo)
#### Post date: [2019年十月3日 10:25 UTC](https://meta.discourse.org/t/collude-a-collaborative-text-editor-for-discourse/96474/25 "2019-10-03T10:25:17Z")

</div>

同样的问题，我认为：

> **详细信息**
>
> 未捕获的（在 Promise 中）TypeError: \_.contains 不是函数  
> 位于 t.menuItems (\_collude-8cf680b8d5b8b353d07c7a93fc15aa0adf31757fcafde3c597cc540ffb076eb2.js:87)  
> 位于 t.n. [as menuItems] (\_application-f091afbd42ff5aa3c8221ab59e2618145b4275299b034c729a5f616d84fb4852.js:75808)  
> 位于 t.html (\_application-f091afbd42ff5aa3c8221ab59e2618145b4275299b034c729a5f616d84fb4852.js:71464)  
> 位于 t.value (\_application-f091afbd42ff5aa3c8221ab59e2618145b4275299b034c729a5f616d84fb4852.js:76137)  
> 位于 t.value (\_application-f091afbd42ff5aa3c8221ab59e2618145b4275299b034c729a5f616d84fb4852.js:75910)  
> 位于 i (\_vendor-fae393575cd14697b31e9fdbeb8c016d165a8a3af765ec8ca719a454585aedf4.js:18308)  
> 位于 r (\_vendor-fae393575cd14697b31e9fdbeb8c016d165a8a3af765ec8ca719a454585aedf4.js:18291)  
> 位于 u (\_vendor-fae393575cd14697b31e9fdbeb8c016d165a8a3af765ec8ca719a454585aedf4.js:18695)  
> 位于 i (\_vendor-fae393575cd14697b31e9fdbeb8c016d165a8a3af765ec8ca719a454585aedf4.js:18563)  
> 位于 o (\_vendor-fae393575cd14697b31e9fdbeb8c016d165a8a3af765ec8ca719a454585aedf4.js:18639)

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [2019年十一月26日 00:35 UTC](https://meta.discourse.org/t/collude-a-collaborative-text-editor-for-discourse/96474/26 "2019-11-26T00:35:50Z")

</div>

@gdpelican 目前这个功能已损坏。你是打算长期支持这个插件，还是打算将其移交？

另外，我注意到没有许可证文件，这是否意味着打算采用 MIT 许可证？

---

<div class="post-metadata">

### Author: ![fabien](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/fabien/32/174244_2.png) [@fabien](https://meta.discourse.org/u/fabien)
#### Post date: [2020年三月25日 21:46 UTC](https://meta.discourse.org/t/collude-a-collaborative-text-editor-for-discourse/96474/27 "2020-03-25T21:46:38Z")

</div>

那个协作编辑插件看起来非常酷。它非常适合我使用的 Discourse 实例。  
有什么最新消息吗？有人打算修复它让它重新工作吗？  
谢谢。

---

<div class="post-metadata">

### Author: ![sunjam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sunjam/32/175682_2.png) [@sunjam](https://meta.discourse.org/u/sunjam)
#### Post date: [2020年四月11日 16:40 UTC](https://meta.discourse.org/t/collude-a-collaborative-text-editor-for-discourse/96474/28 "2020-04-11T16:40:53Z")

</div>

@sam 这是 [Collude 的 GitHub 插件](https://github.com/gdpelican/collude/) 项目中的 [MIT 许可证](https://github.com/gdpelican/collude/blob/master/LICENSE.md)。感谢分享 @fabien。看起来这是一个非常有用的插件！结合 [Babble Chat - #334 by jrgong](https://meta.discourse.org/t/babble-a-chat-plugin/87297/334?u=sunjam%EF%BC%8C%E8%BF%99%E4%BC%BC%E4%B9%8E%E5%8F%AF%E4%BB%A5%E5%9C%A8) Discourse 中基于信任级别完全复制 Etherpad 的体验。非常酷。

---

<div class="post-metadata">

### Author: ![thomas\_xr](https://avatars.discourse-cdn.com/v4/letter/t/b487fb/32.png) [@thomas\_xr](https://meta.discourse.org/u/thomas_xr)
#### Post date: [2020年五月1日 17:59 UTC](https://meta.discourse.org/t/collude-a-collaborative-text-editor-for-discourse/96474/29 "2020-05-01T17:59:44Z")

</div>

本来很想试试这个，但既然它被标记为“broken-plugin”（损坏的插件），现在尝试似乎也没什么意义了…… ☹

---

<div class="post-metadata">

### Author: ![JQ331](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@JQ331](https://meta.discourse.org/u/JQ331)
#### Post date: [2020年五月20日 22:15 UTC](https://meta.discourse.org/t/collude-a-collaborative-text-editor-for-discourse/96474/30 "2020-05-20T22:15:17Z")

</div>

关于这个插件的问题是否有最新进展？看起来它尚未准备好投入生产使用，但了解插件的状态会有所帮助。

---

<div class="post-metadata">

### Author: ![hellekin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/hellekin/32/51636_2.png) [@hellekin](https://meta.discourse.org/u/hellekin)
#### Post date: [2020年五月22日 08:24 UTC](https://meta.discourse.org/t/collude-a-collaborative-text-editor-for-discourse/96474/31 "2020-05-22T08:24:10Z")

</div>

去年编辑过程中出现了一些不稳定的情况，导致一位编辑者会丢失其他编辑者的修改，且当时无人能够调试该问题。此后，Discourse 插件 API 有所更新，该插件因此被搁置。也许@gdpelican 能提供更多信息，甚至有意愿重新实现这个很棒的想法。拥有一个支持实时多人协作、类似维基的嵌入式编辑区仍然非常有价值。

---

<div class="post-metadata">

### Author: ![Tim\_Jefferies](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tim_jefferies/32/113296_2.png) [@Tim\_Jefferies](https://meta.discourse.org/u/Tim_Jefferies)
#### Post date: [2020年五月25日 07:31 UTC](https://meta.discourse.org/t/collude-a-collaborative-text-editor-for-discourse/96474/32 "2020-05-25T07:31:32Z")

</div>

请参见此处：

2020 年 3 月 8 日：

> [@codinghorror](#):
>
> 我相信我们肯定会修复该插件并将其作为官方插件推出……但我个人仍然认为它相当具有实验性。@sam 可以进一步说明，因为这由他决定。

2020 年 3 月 9 日：

> [@sam](#):
>
> 是的，我们资助了 collude 的一些开发工作。我们需要通过官方验证，确保其功能符合预期，然后根据市场需求，将其作为官方插件提供给我们的企业客户。
> 
> 我同意它确实相当具有实验性，但对于这种非常具体的使用场景，类似 Etherpad 的功能可能非常实用。
> 
> 敬请关注我们的后续进展。

---

<div class="post-metadata">

### Author: ![nathank](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nathank/32/290039_2.png) [@nathank](https://meta.discourse.org/u/nathank)
#### Post date: [2020年五月25日 07:48 UTC](https://meta.discourse.org/t/collude-a-collaborative-text-editor-for-discourse/96474/33 "2020-05-25T07:48:42Z")

</div>

这对我们的医学论坛来说无疑非常出色，我们需要在这些论坛上共同制定国家指南等文件——而许多医疗机构屏蔽了 Google Docs，因此我们无法使用它。

如果能在 COVID-19 混乱之初就部署并投入使用，那将非常棒；这确实会成为一个真正的亮点。

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [2020年五月25日 07:57 UTC](https://meta.discourse.org/t/collude-a-collaborative-text-editor-for-discourse/96474/34 "2020-05-25T07:57:53Z")

</div>

我们有一个由 @tshenry 测试、@mbcahyono 开发的分支版本。

我们非常接近将其作为新的 Collude 版本，并_可能_在企业版中提供官方支持。这是一个相当复杂的问题，需要大量测试才能对该插件充满信心。

---

<div class="post-metadata">

### Author: ![riking](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/riking/32/170938_2.png) [@riking](https://meta.discourse.org/u/riking)
#### Post date: [2020年五月25日 17:21 UTC](https://meta.discourse.org/t/collude-a-collaborative-text-editor-for-discourse/96474/35 "2020-05-25T17:21:45Z")

</div>

另一个你可以用来应急的选项，我自己也在用，就是 [https://hackmd.io](https://hackmd.io) —— 它最终还能生成 Markdown，这样你就可以直接复制到 Discourse 上 😁

---

<div class="post-metadata">

### Author: ![nathank](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nathank/32/290039_2.png) [@nathank](https://meta.discourse.org/u/nathank)
#### Post date: [2020年五月26日 01:23 UTC](https://meta.discourse.org/t/collude-a-collaborative-text-editor-for-discourse/96474/36 "2020-05-26T01:23:43Z")

</div>

看起来真的很酷——谢谢。不过我觉得这对不太懂 IT 的团队成员来说有点过于极客了；我会满怀期待地等待这个插件。如果能直接在 Discourse 中原生实现，那就太棒了。

---

<div class="post-metadata">

### Author: ![hellekin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/hellekin/32/51636_2.png) [@hellekin](https://meta.discourse.org/u/hellekin)
#### Post date: [2020年五月26日 15:06 UTC](https://meta.discourse.org/t/collude-a-collaborative-text-editor-for-discourse/96474/37 "2020-05-26T15:06:32Z")

</div>

实际上，Librehosters 分叉了 [GitHub - fuerst/embed-etherpad-lite: Embed Etherpad Lite pads into Discourse posts using Onebox. · GitHub](https://github.com/fuerst/embed-etherpad-lite) 以支持 CodiMD（HackMD 的“社区分叉版”）——该项目正在再次更名……

使用非常简单，你可以分叉 [librehosters / embed-codimd · GitLab](https://lab.libreho.st/librehosters/embed-codimd) 来搭建自己的环境。如果能提供一个设置项用于指定 Pad 主机将会更实用，但这需要更多工作量。Librehosters 在 CodiMD 和 Discourse 之间使用了 SAML SSO，因此只有成员才能编辑 Pad。

---

<div class="post-metadata">

### Author: ![riking](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/riking/32/170938_2.png) [@riking](https://meta.discourse.org/u/riking)
#### Post date: [2020年五月26日 15:16 UTC](https://meta.discourse.org/t/collude-a-collaborative-text-editor-for-discourse/96474/38 "2020-05-26T15:16:46Z")

</div>

阅读 plugin.rb 后，感觉这非常简单——难道你不能通过在 `allowed iframes` 中添加一项，配合某个生成器或 oEmbed 标签来实现吗？

---

<div class="post-metadata">

### Author: ![hellekin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/hellekin/32/51636_2.png) [@hellekin](https://meta.discourse.org/u/hellekin)
#### Post date: [2020年五月26日 20:35 UTC](https://meta.discourse.org/t/collude-a-collaborative-text-editor-for-discourse/96474/39 "2020-05-26T20:35:52Z")

</div>

老实说，我不清楚，也没试过。如果你能找到无需插件就能实现此功能的方法，请分享出来！🙂

---

<div class="post-metadata">

### Author: ![hellekin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/hellekin/32/51636_2.png) [@hellekin](https://meta.discourse.org/u/hellekin)
#### Post date: [2020年六月7日 07:39 UTC](https://meta.discourse.org/t/collude-a-collaborative-text-editor-for-discourse/96474/40 "2020-06-07T07:39:13Z")

</div>

话虽如此，@riking，你让我开始思考了。你打算如何“在某个地方创建一个生成器”？

我认为为此专门重新安装一个特定的 onebox 插件有些大材小用。相反，应该可以通过使用无需重新构建容器的主题组件来实现。是否有人已经开发过（通用的）onebox 主题组件？

当然，最佳方案是上游以兼容的方式修复他们的 oEmbed 标签，这样我们只需粘贴链接即可。

[上一頁](https://meta.discourse.org/t/collude-a-collaborative-text-editor-for-discourse/96474.md?page=1)

[下一頁](https://meta.discourse.org/t/collude-a-collaborative-text-editor-for-discourse/96474.md?page=3)
