跳转到主要内容

Plone内容的已读/未读状态

项目描述

collective.readunread

简介

此软件包为Plone对象提供已读/未读状态。

它为标记了IReadByProvider接口的任何对象添加了一个“readBy”字段和适当的索引。

如何使用它

为了激活已读/未读功能,目标对象必须实现

collective.readunread.interfaces.IReadByProvider

您可以在您的包中添加一个ZCML别名,如下所示

<five:implements
  class="Products.ATContentTypes.content.document.ATDocument"
  interface="collective.readunread.interfaces.IReadByProvider"
  />

工作原理

为了测试目的,我们将它分配给文档内容类型

>>> from zope import interface
>>> from Products.ATContentTypes.content.document import ATDocument
>>> from collective.readunread.interfaces import IReadByProvider
>>> interface.classImplements(ATDocument,IReadByProvider)

并创建一个文档

>>> self.setRoles(('Manager',))
>>> docid = self.folder.invokeFactory('Document', 'document')
>>> doc = self.folder[docid]

我们必须触发IObjectInitializedEvent,因为我们有一个订阅者将负责将创建者的用户ID推入“readBy”字段

>>> from Products.Archetypes.event import ObjectInitializedEvent
>>> from zope.event import notify
>>> notify(ObjectInitializedEvent(doc))

我们可以使用管理适配器来处理readby状态

>>> from collective.readunread.interfaces import IReadByManager
>>> manager = IReadByManager(doc)

由于文档是新的,我们应该只获取创建者的ID

>>> len(manager.get_readby()) == 1
True
>>> manager.get_readby()
('test_user_1_',)

让我们以其他用户的身份阅读文档。以下将创建3个新用户

>>> from collective.readunread.tests.tests import setupMembers
>>> setupMembers(self.portal, n=3)

我们有两种方法将文档设置为用户已读。首先,我们可以通过用户(模拟查看文档)触发PostValidationHook事件

>>> from collective.readunread.tests.tests import fireViewEvent
>>> fireViewEvent(doc,'user1')
>>> fireViewEvent(doc,'user2')

让我们看看谁阅读了文档

>>> 'user1' in manager.get_readby()
True
>>> 'user2' in manager.get_readby()
True
>>> 'user3' in manager.get_readby()
False

第二种方法是通过管理器进行设置

>>> manager.set_readby(['user3',])
>>> 'user3' in manager.get_readby()
True

我们可以检查用户的状态

>>> manager.get_status('user3')
'read'

我们也可以将用户设置为未读

>>> manager.set_unreadby(['user3',])
>>> 'user3' not in manager.get_readby()
True
>>> manager.get_status('user3')
'unread'

待办事项

  • 文档和测试按钮宏

  • 文档和测试辅助视图

变更日志

1.0b6

  • 修复缺少导入浏览器包的问题

1.0b5

  • 更新文档

  • 为管理器添加了doctest

  • 修复了适配器

  • 改进了工具

1.0b4

  • 修复配置文件名称

  • 添加 .gitignore

1.0b3

  • 缺少HISTORY更新(尝试使用jarn.mkrelease)

1.0b2

  • 更新文档

1.0b1dev(未发布)

  • 初始版本

鸣谢

国际劳工组织培训中心的支持下开发。

ITCILO - Logo

作者

本产品由Domsense开发。

Domsense Website

项目详情


下载文件

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

源分布

collective.readunread-1.0b6.zip (42.1 kB 查看散列值)

上传时间

支持