icap/notification-bundle

此软件包的最新版本(v6.1.0)没有可用的许可证信息。

Claroline Connect 的通知包。请参阅 https://github.com/claroline/Claroline

安装数: 2,664

依赖项: 6

建议者: 0

安全性: 0

星级: 4

关注者: 6

分支: 6

开放问题: 0

类型:claroline-core

v6.1.0 2016-02-17 15:39 UTC

README

警告

开发已迁移到 claroline/Distribution。此存储库不再维护。

Claroline Connect 的通知包。请参阅 https://github.com/claroline/Claroline

这里 是对通知系统功能的分析。

Notification dropdown

安装

此包完成核心包的功能。它是必需的,以便系统能够生成通知。

通过 composer

composer require icap/notification-bundle "dev-master"

配置

  • 安装后,已添加一个通知配置管理工具,允许设置以下内容
    • 通知列表页面每页的最大通知数(默认 50)
    • 下拉列表中的通知数(默认 10)
    • 激活自动清理通知项,在 x 天后
    • 通知删除后的天数

在插件中使用

为了在 Claroline connect 插件中集成和启用通知,您需要遵循以下步骤

  1. 在您的界面中添加 {% render controller('IcapNotificationBundle:FollowerResource:renderForm', {'resourceId': _resource.resourceNode.id, 'resourceClass': _resource.resourceNode.class}) %} 以渲染允许用户启用和禁用资源通知的按钮。如您所见,需要两个参数,即资源节点 ID 和资源节点类。

    enable notification button

  2. 您想要生成通知的任何事件都需要实现 NotifiableInterface。此接口有 9 个方法。

    • getSendToFollowers() : 返回布尔值,表示事件是否可以通知资源的关注者
    • getIncludeUserIds() : 返回将收到通知的用户 ID 列表(额外用户,不一定在关注者列表中)
    • getExcludeUserIds() : 返回不应收到通知的用户 ID 列表(这些用户可以是关注者列表或 includeUsers 列表中的)
    • getDoer() : 返回触发通知的用户(此方法已存在于 LogGenericEvent 类中)
    • getActionKey() : 返回包含执行动作名称/键的字符串
    • getIconKey() : 返回字符串,通常是资源类型的名称,例如 "wiki",并用于为具有相同图标名称的每个通知生成颜色。此颜色是迷你图标的背景颜色,而文本内容用于此图标则是图标键的首字母。
    • getResource() : 返回执行动作的资源(此方法已存在于 LogGenericEvent 类中)
    • getNotificationDetails() : 返回包含有关资源名称、ID 和类型以及其他信息的数组(数据库中的 JsonArray),这些信息对于渲染通知文本是必要的。有关 "doer" 的所有信息都由通知插件自动添加。其余(资源等)需要手动添加。
    • isAllowedToNotify() : 返回 true 或 false,并通知 CoreBundle 该事件是否引发通知。它可以测试一个条件,如果这个条件失败,则不会创建或发送通知;否则,如果条件满足,则会创建并发送通知给用户。

    您可以使用 WikiBundle 中的 LogContributionCreateEvent 示例来指导您。

  3. 在 translations 文件夹下创建一个翻译域,命名格式为 notification.lang.yml

  4. 在 views 文件夹下创建一个 Notification 文件夹,并将所有与通知显示/渲染相关的视图存储在其中。建议创建一个通用的 twig 文件,例如 notification_item.html.twig,它将扩展 IcapNotificationBundle:Templates:notification.html.twig 模板,将渲染所有公共元素,并根据操作类型包含任何其他必要的模板。示例 在这里

  5. 创建监听器,例如 NotificationListener,以及服务 e.g. listeners.yml 是 WikiBundle 的示例

  6. *new 创建监听器,NotificationUserParametersListener 以启用用户激活和停用通知的显示

您可以在 iCAPLyon1/WikiBundle 中找到这些步骤的完整示例

请只为通知内容创建/添加的事件启用通知。不要为内容删除启用。否则,用户可能会陷入“通知过载”。

在插件中集成用户标记

如果您想允许用户标记和通知其他用户,则应遵循以下步骤

  1. 对于您的插件中包含文本的每个实体,由 tinymce 编辑器实现(例如博客中的帖子、维基中的贡献等),您需要创建

    • 一个受保护的变量来存储用户选择器对象(包含有关原始文本、最终文本以及标记用户列表的信息)

          protected $userPicker = null;
      
    • 开发一个 @ORM\PrePersist 方法,实例化用户选择器并将原始文本与最终文本交换。

      /**
      * @ORM\PrePersist
      */
       public function createUserPicker(LifecycleEventArgs $event){
           if ($this->getText() != null) {
               $userPicker = new UserPickerContent($this->getText());
               $this->setUserPicker($userPicker);
               $this->setText($userPicker->getFinalText());
           }
       }
      
    • 创建一个实体监听器类并将其与您的实体关联。以下是一个示例(对于 WikiBundle 中的贡献实体)

          @ORM\EntityListeners({"Icap\WikiBundle\Listener\ContributionListener"})
      

      此实体监听器负责在实体的 postPersist 事件上创建通知并通知每个标记的用户。这里 是贡献监听器的示例。

  2. listeners.yml 文件中添加一行用于新事件。示例

        - { name: kernel.event_listener, event: create_notification_item_resource-icap_wiki-user_tagged, method: onCreateNotificationItem }
    
  3. 处理新通知事件的渲染。(创建专用视图等。)这里 是维基包的此视图,这里 是修改后的 notification_item 视图,以包含新事件。