silverstripe / content-notifier
通知管理员有关新用户生成的内容
Requires
- silverstripe/framework: ^4.0@dev
This package is auto-updated.
Last update: 2024-09-15 12:39:36 UTC
README
维护者
Aaron Carlino (aaron at silverstripe dot com)
描述
内容通知器模块用于允许在运行SilverStripe的网站上对用户生成的内容进行审核。当内容被创建或更新时,管理员会收到通知并可以批准更改。审核过程有多严格,以及谁会被通知以及频率,都是可配置的。
用法
- 使用composer安装:
composer require silverstripe/content-notifier
- 构建和刷新:
/dev/build?flush=1
- 将扩展
ContentNotifierExtension
添加到您希望使用通知器的任何DataObjects中。接收扩展的DataObject类必须实现SilverStripe\ContentNotifier\ContentNotifier
接口。
要求
根据ContentNotfifer
接口的定义,您必须将以下方法添加到您的DataObject中
getContentNotifierExcerpt()
:将在通知电子邮件中显示的内容摘要。getContentNotifierLink()
:在CMS中编辑此记录的链接。getContentNotifierHeadline()
:将在通知电子邮件中出现的DataObject的标题。
示例
<?php use SilverStripe\ContentNotifier\ContentNotifier; use SilverStripe\ORM\DataObject; class Comment extends DataObject implements ContentNotifier { private static $db = array( 'Comment' => 'Text', 'Author' => 'Varchar' ); public function getContentNotifierExcerpt() { return $this->obj('Comment')->LimitWordCount(50); } public function getContentNotifierLink() { return "/admin/comments/edit/{$this->ID}"; } public function getContentNotifierHeadLine() { return "/admin/comments/Comment/EditForm/field/Comment/item/{$this->ID}/edit"; } }
配置
在您的_config/
目录中,首先定义一些全局设置
SilverStripe\ContentNotifier\Model\ContentNotifierEmail: to: "me@example.com" from: notifications@example.com subject: Content has been updated on your site headline: New Content
然后,您可以指定内容通知器扩展的每个实现者的行为。
Comment: ContentNotifier: batch_email: true delete_on_resolve: true auto_approve: UPDATED JobListing: ContentNotifier: batch_email: true delete_on_resolve: true auto_approve: '*'
以下设置是可用的
- batch_email:不要立即通知更改。使用
ContentNotifierTask
发送更新批处理电子邮件。(需要设置cron作业) - delete_on_resolve:一旦内容被批准或拒绝,删除
ContentNotifierQueue
记录。(推荐用于整理) - auto_approve:根据事件,内容可以自动批准。内容的管理员仍会收到一封电子邮件,详细说明更新,但内容会提前乐观地批准,而不是等待手动批准。可能的值:
*
(总是批准)、UPDATED
(自动批准更新)、CREATED
(自动批准创建)。
ContentNotifierQueue
这是一个多态对象,它只为管理员显示所指向记录的只读字段以供审查。当查看队列记录时,可以执行批准和拒绝操作。这些记录打算是一次性的,不应该有大量的此类记录。
ContentNotifierTask
运行/dev/tasks/ContentNotifierTask
以发送所有需要批准的内容的批处理电子邮件。
ContentNotifierCleanTask
运行/dev/tasks/ContentNotifierCleanTask
以批量删除不再需要的任何ContentNotifierQueue记录。您必须在请求中包含一个action
参数,该参数包含以下值之一
all
(删除所有队列记录)approved
(删除所有已批准的队列记录)denied
(删除所有被拒绝的队列记录)orphaned
(删除所有不再指向现有记录的队列记录)
关闭过滤器
默认情况下,除非用户是管理员(请参阅admin_permission
设置以自定义),否则使用ContentNotifierExtension的任何内容都将从结果集中隐藏。有时您可能希望允许记录被看到,例如,当用户正在编辑他的未批准内容时。在这种情况下,您可以通过调用ContentNotifierExtension::disable_filtering()
来实现。
这与高级工作流模块有何不同?
最重要的是,它几乎不包含那么多功能,更重要的是,这个模块旨在与用户生成的内容一起使用,或者通过第三方服务(如Meetup活动)传入的内容。它提供了一种非常简单的方法来确保您的网站不会受到您可能不希望显示的内容的污染。