报告当两个人可能正在编辑相同的元素(例如条目、类别或全局)或字段时

安装数: 82,075

依赖项: 2

建议者: 0

安全性: 0

星标: 35

关注者: 5

分支: 15

开放问题: 6

类型:craft-plugin

3.0.4.1 2020-12-24 19:00 UTC

This package is auto-updated.

Last update: 2024-09-25 03:22:36 UTC


README

Snitch 监控元素编辑器(条目、类别、全局设置、用户等)和字段编辑器,并在有人可能同时编辑同一内容时通知您。

安装

要安装 Snitch,请按照以下步骤操作

  1. 使用 Composer 在项目目录下通过 composer require marionnewlevant/snitch 安装
  2. 在 Craft 控制面板的“设置”>“插件”下安装插件

或者

  1. 通过插件商店安装

Snitch 在 Craft 3.x 上工作。

Snitch 概述

Snitch 通过向后台页面注入一个 JavaScript 文件来工作。该 JavaScript 寻找元素编辑窗口或模态元素编辑窗口,并在检测到时要求服务器报告任何冲突。

当有人可能正在编辑相同的元素时,警告横幅将在编辑器面板顶部显示

Screenshot

警告横幅也将在编辑器模态窗口顶部显示

Screenshot

点击 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 调用报告元素正在被编辑时,会发生以下情况

  1. 10 次轮询间隔内未更新的任何报告都将从 snitch_collisions 表中删除。它不再被编辑。
  2. 为用户/元素类型/元素 ID 创建新的报告,或更新现有报告的时间
  3. 查找其他用户对元素的任何编辑报告。
  4. 从这些报告中返回用户数据。这些将是可能正在编辑元素的其他人。

问题

当一个人正在编辑一个商业产品时,而另一个人通过模态窗口编辑该产品的变体,Snitch 将无法察觉。

Marion Newlevant 提供