跳转到主要内容

在Plone中实现灵活的计划通知:为主题中的项目触发'Topic Item Events'

项目描述

简介

本产品旨在为以下用例提供解决方案:发送即将过期的物品的通知电子邮件(例如,在接下来的24小时内)。

本产品提供的解决方案使您能够

  1. 选择和预览需要采取行动的物品

  2. 选择不同的操作

    1. 发送电子邮件通知

      1. 配置消息文本

      2. 配置收件人

    2. 修改工作流状态

    3. 将项目移至其他位置

所有这些都可以通过Plone的控制面板由网站管理员完成,无需编程技能。

实现

提供的解决方案需要以下部分

  1. 在主题中选择项目。主题允许您定义相对日期,例如“下下周”。它们还允许您根据许多其他标准过滤项目。

  2. 我们创建了一个视图,当调用该视图时,它会为主题中的每个项目触发一个事件。这就是本产品的范围。

  3. 添加了一个由触发的事件触发的内容规则。内容规则可能有不同的操作:发送电子邮件、更改工作流状态、移动对象。

  4. 视图定期调用。您可以使用Cron4Plone或cron作业来完成此操作。

入门指南

1. 选择项目

创建一个主题,收集所有您想要执行某些操作的内容。

在未来,我们可能也会使用plone.app.collection的新样式集合来完成此操作,但是目前这些似乎不支持相对日期标准。

示例

如果您想发送有关前一天修改的内容的电子邮件

  • 转到标准标签

  • 为字段名“修改日期”添加“新的搜索标准”

  • 将“标准类型”设置为“相对日期”,然后单击“添加标准”

  • 在“修改日期”标准中

    • 对于“哪一天”,选择“现在”

    • 对于“过去或未来”,选择“过去”

    • 对于“更多或更少”,选择“少于”

2. 安装视图 @@fire-topicitems-events

使用buildout安装此产品

buildout.cfg

eggs +=
    collective.topicitemsevent

之后,使用Plone的“附加产品”控制面板安装产品。

检查它是否工作

转到您新创建的主题,并调用其上的 @@fire-topicitems-events 视图。您应该有管理员权限才能这样做。如果一切顺利,您应该被重定向到主题的默认视图,并且您将看到一条状态消息,该消息说“触发主题项目事件:”,后面跟着项目标题及其url的列表。

3. 配置内容规则

创建内容规则

  1. 通过Plone的控制面板,转到“内容规则控制面板”(/@@rules-controlpanel)。

  2. 添加内容规则。将“触发事件”选为“主题项目事件”。给它一个有意义的标题。现在,我们将使用“发送关于修改的电子邮件通知”。

  3. 新规则将显示在规则控制面板中。单击它以添加操作。在“执行以下操作”标题下,您可以选择任何内容规则操作。

  4. 现在,仅选择“发送电子邮件”,单击“添加”并配置电子邮件。(使用 ${title}${url} 变量,这样收件人就会知道邮件的内容。)

  5. 您可能还想添加一个“通知用户”操作。当测试内容规则时,这很有用:您会在使用 @@fire-topicitems-events 视图后看到状态消息。

添加内容规则

  1. 转到Plone站点的根目录,单击“规则”并添加站点的规则。

  2. 之后,选择规则并单击“应用到子文件夹”。

测试内容规则

现在转到您的主题,并再次调用 @@fire-topicitems-events

4. 定期调用视图

我们将假设您使用 Cron4Plone 来完成此操作,但您也可以使用cron作业。您需要以管理员身份调用视图,Cron4Plone文档将告诉您如何操作。

在Cron4Plone配置屏幕上,您应该有一行如下

30 2 * * portal/test-topic/@@fire-topicitems-events

“test-topic”指的是您主题的ID。这将每晚凌晨2:30调用视图。

问题

  1. 此解决方案不会跟踪已发送的哪些电子邮件。当更改主题的日期范围或cron间隔时,通知可能会多次发送或根本不发送。这个问题可能永远无法解决。

  2. 您可能无法在“主题项事件”上有多个contentrules监听。如果您在“主题项事件”上有多个contentrules监听,将无法知道内容规则的哪个事件是从哪个主题触发的。

    1. 解决这个问题的一种方法是在特定文件夹上激活内容规则。但是,您需要小心,这可能会很快变得很复杂。

    2. 您还可以使用额外的过滤条件来保护内容规则。例如,如果您有一个使过期内容私有化的规则,并且您担心此规则将由于与主题无关的主题(不幸的是,该主题列出了不应私有化的项目)触发的TopicItemEvent而执行,那么您可以添加 python: DateTime() > here.getExpirationDate() 作为TALES表达式条件。这将确保规则仅在项目过期时执行。

变更日志

1.0 (2012-06-13)

  • 稳定版本

0.1.1 (2011-11-28)

  • 文档更新:如何在Plone内容规则中使用TALES表达式检查日期(到期日期,生效日期)。

0.1 (2011-11-21)

  • 包信息更改(setup.py)

0.1dvl(2011-10-26)

  • 首次发布

项目详情


下载文件

下载适合您平台的应用程序。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

collective.topicitemsevent-1.0.zip (26.0 kB 查看哈希值)

上传时间

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面