横向/银色沙滩通知器

基于数据对象活动发送通知的可配置通知系统

安装: 391

依赖: 0

建议者: 0

安全: 0

星级: 0

观察者: 3

分支: 0

类型:silverstripe-vendormodule

1.0.5 2022-12-08 13:25 UTC

This package is auto-updated.

Last update: 2024-09-08 17:02:52 UTC


README

Scrutinizer Code Quality Build Status

模块,允许通过管理员创建自定义通知,以管理对象更改。

安装

通过 composer 安装此模块

composer require i-lateral/silverstripe-notifier

安装后运行 dev/build 以添加额外的数据库表

配置和设置

安装后,您需要使用 Notifier 注册要监视通知的数据对象。这可以通过相对简单的配置完成

---
Name: notificationsconfig
---
# allow configuring of notifications to users and a custom page type
ilateral\SilverStripe\Notifier\Notifier:
  registered_objects:
    - SilverStripe\Security\Member
    - App\Model\MyCustomPage

添加此配置后(并刷新缓存),请转到 SiteConfig(管理员中的“设置”)。

现在将有一个“通知”选项卡,允许您添加新的通知

添加通知

添加新通知时,您可以选择要监视的对象(从上面的已注册对象列表中选择)。然后您还可以选择

StateCreated:在对象创建时是否发送通知

StateUpdated:如果对象被更新,是否发送通知

StateDeleted:如果对象被删除,是否发送通知

添加规则(可选)

您还可以为每个通知添加更细致的规则。这些规则允许您指定

FieldName:将检查的对象上数据字段的名称

Value:如果设置,当对象具有设置为该值的字段时,发送通知

WasChanged:如果您留空 Value,则可以检查 WasChanged,然后任何对该字段的更改都会发送通知

禁止通知规则(可选)

您可以通过 disallow_rules 配置变量禁止特定通知的通知规则。这需要一个不允许此通知类型的规则类名列表。这可以在 YML 中设置如下

---
Name: notificationsconfig
---
# Disallow basic notification rule
ilateral\SilverStripe\Notifier\Model\Notification:
  disallow_rules:
    - ilateral\SilverStripe\Notifier\Model\Notification\NotificationRule

添加通知类型

一旦指定了要监视的对象和将触发通知的内容,您就需要指定这些通知如何发送。

默认情况下,此模块包含一个 EmailNotification,它将使用提供的主题和内容将电子邮件发送到指定的收件人。

您可以在同一个 Notification 中添加多个版本的 NotificationType(例如,如果您想在更改事件中发送电子邮件给多个人)。

禁止通知类型(可选)

您可以通过 disallow_types 配置变量在特定通知上禁止通知类型。这需要一个不允许此通知类型的规则类名列表。这可以在 YML 中设置如下

---
Name: notificationsconfig
---
# Disallow email notification type
ilateral\SilverStripe\Notifier\Model\Notification:
  disallow_types:
    - ilateral\SilverStripe\Notifier\Types\EmailNotification

内容渲染

通知内容(以及电子邮件主题)支持使用 SilverStripe 变量。当发送通知时,关于变量的上下文将是当前正在监视的对象。

示例 如果在创建新的 Member 时发送电子邮件,您可以在内容区域添加 {$FirstName}{$Surname}{$Email} 等,并将使用新创建的 Member 渲染这些内容。

新通知类型

该系统设计得可以相对容易地添加新的通知类型(例如 SMS 通知)。您只需扩展 NotificationType 并添加自己的 send 方法来处理发送通知。

动态发送者和接收者

您可以使用监控对象的字段来指定发送者和接收者,而不是使用预定义的发送者和接收者。

不过,在这样做之前,您需要通知 Notifier 您想要使用自定义字段。例如,如果您有以下对象

class MyMonitoredObject extends DataObject
{
  private static $db = [
    'Sender' => 'Email',
    'Recipient' => 'Email'
  ];

  private static $extensions = [
    'ilateral\SilverStripe\Notifier'
  ];
}

您可以添加自定义配置

ilateral\SilverStripe\Notifier\Types\NotificationType:
  alt_from_fields:
    MyMonitoredObject:
      - Sender
  alt_recipient_fields:
    MyMonitoredObject:
      - Recipient

现在,当您登录到您的管理员区域并访问:设置 > 通知设置新的通知时,您将看到不同的下拉菜单,允许您选择您想要使用的字段。