marionnewlevant / snitch
报告当两个人可能正在编辑相同的元素(例如条目、类别或全局)或字段时
3.0.4.1
2020-12-24 19:00 UTC
Requires
- craftcms/cms: ^3.5.0
README
Snitch 监控元素编辑器(条目、类别、全局设置、用户等)和字段编辑器,并在有人可能同时编辑同一内容时通知您。
安装
要安装 Snitch,请按照以下步骤操作
- 使用 Composer 在项目目录下通过
composer require marionnewlevant/snitch
安装 - 在 Craft 控制面板的“设置”>“插件”下安装插件
或者
- 通过插件商店安装
Snitch 在 Craft 3.x 上工作。
Snitch 概述
Snitch 通过向后台页面注入一个 JavaScript 文件来工作。该 JavaScript 寻找元素编辑窗口或模态元素编辑窗口,并在检测到时要求服务器报告任何冲突。
当有人可能正在编辑相同的元素时,警告横幅将在编辑器面板顶部显示
警告横幅也将在编辑器模态窗口顶部显示
点击 X
将关闭横幅。
配置 Snitch
可以通过 craft/config/snitch.php
中的配置文件覆盖默认配置。这是一个标准的 Craft 配置文件,具有常规的多环境支持。可配置的值包括
serverPollInterval
:轮询服务器以查找新到达冲突的时间间隔(以秒为单位)。默认值:2
。最小值 1,最大值 5。messageTemplate
:警告横幅的文本。这是作为 twig 解析的,其中user
是可能存在冲突的用户。默认值是:可能被以下用户编辑:<a href="mailto:{{user.email}}">{{user.username}}</a>。
这将生成指向用户的mailto
链接。您可以将此更改为启用 Slack 消息等。elementInputIdSelector
:用于识别表示元素编辑窗口或模态元素编辑窗口的隐藏输入的 CSS 选择器。fieldInputIdSelector
:用于识别表示字段编辑窗口的隐藏输入的 CSS 选择器。
可以使用 cpcss 插件修改警告横幅的视觉样式。
工作原理。
JavaScript(和 CSS)被添加到每个后台页面。该 JavaScript 获取配置值,然后开始轮询。每 2 秒,它会在页面上查找任何编辑表单,如果找到这样的表单,则通过 AJAX 报告正在编辑的元素的类型和 ID。作为回报,它将传递可能发生冲突的用户列表。
在服务器上,一个数据库表(snitch_collisions)记录
- 用户
- 正在编辑的元素的类型
- 正在编辑的元素的 ID
- 元素上次被此用户报告编辑的时间。
当 AJAX 调用报告元素正在被编辑时,会发生以下情况
- 10 次轮询间隔内未更新的任何报告都将从 snitch_collisions 表中删除。它不再被编辑。
- 为用户/元素类型/元素 ID 创建新的报告,或更新现有报告的时间
- 查找其他用户对元素的任何编辑报告。
- 从这些报告中返回用户数据。这些将是可能正在编辑元素的其他人。
问题
当一个人正在编辑一个商业产品时,而另一个人通过模态窗口编辑该产品的变体,Snitch 将无法察觉。
由 Marion Newlevant 提供