跳转到主要内容

管理和自动化Plone网站上的社会出版

项目描述

简介

为管理者提供一个视图小部件(以及底层的机制),允许将内容发布到社交网络(目前仅限Twitter)。可以通过为内容启用它来自动化社会发布。

要启用视图小部件,只需使用 collective.socialpublisher.interfaces.IPublishable 标记您想要的内容类型。您可以从ZMI或通过ZMCL进行操作。

<class class="Products.ATContentTypes.content.event.ATEvent">
    <implements interface="collectinve.socialpublisher.interfaces.IPublishable" />
</class>

NOTE: this is already done by the package in this alpha stage.

Twitter账户管理由 collective.twitter.accounts 完成。

您可以通过注册一个提供 collective.socialpublisher.interfaces.ISocialPublisherUtility 的实用工具来提供发布者。有关详细信息,请参阅 collective.socialpublisher.utility

要启用自动发布,您必须为每个内容启用它(等待全局配置),并创建一个调用 @@social-auto-publish 的cron。您可以使用 Products.cron4plone 或通过buildout进行操作,如下所示

[instance]
...
zope-conf-additional =
  <clock-server>
      method /plonesite/@@social-auto-publish
      period 1000
      user admin
      password admin
  </clock-server>

另请参阅 http://collective-docs.readthedocs.org/en/latest/misc/asyncronoustasks.html

在以下平台上测试

Plone 4.1 + 4.2rc1

发布管理器

让我们创建一个事件

>>> from plone.app.testing import setRoles
>>> from plone.app.testing import TEST_USER_ID
>>> portal = layer['portal']
>>> setRoles(portal, TEST_USER_ID, ['Manager'])
>>> evid = portal.invokeFactory('Event', 'event')
>>> event = portal[evid]

并检查它是否已启用发布

>>> from collective.socialpublisher.interfaces import IPublishable
>>> IPublishable.providedBy(event)
True

获取管理器

>>> from collective.socialpublisher.interfaces import IPublishStorageManager
>>> manager = IPublishStorageManager(event, None)
>>> manager is None
False

存储必须是 PersistentDict

>>> from persistent.dict import PersistentDict
>>> isinstance(manager.storage,PersistentDict)
True

账户必须是空字典,文本是空字符串。

>>> manager.get_accounts()
{}
>>> manager.get_text()
''

我们可以为给定的发布者保存账户

>>> publisher = 'twitter'
>>> account_id = 'simahawk'
>>> manager.set_account(publisher,account_id)
>>> manager.get_account(publisher)
'simahawk'
>>> manager.get_accounts()
{'twitter': 'simahawk'}

让我们添加另一个发布者/账户。

>>> publisher = 'facebook'
>>> account_id = 'simahawkfb'
>>> manager.set_account(publisher,account_id)
>>> manager.get_account(publisher)
'simahawkfb'
>>> manager.get_accounts()
{'twitter': 'simahawk', 'facebook': 'simahawkfb'}

我们还可以保存要发布的文本

>>> manager.set_text('foo bar')
>>> manager.get_text()
'foo bar'

然后我们可以像这样硬重置设置

>>> manager._reset_storage()
>>> manager.get_accounts()
{}
>>> manager.get_text()
''

待办事项

  • 测试 + 文档

  • 添加对linkedin和facebook的支持

  • 使自动发布内容的查询动态/可配置

更改日志

1.0a3

  • [添加] test buildout.cfg

  • [改进] 改进了测试

  • [改进] 改进了文档

  • [添加] 使用 p.a.registry + controlpanel 的全局配置

  • [改进] 您现在可以全局关闭自动发布

1.0a2

  • [修复] 旧的twitter导入

  • [改进] '更新'按钮,用于保存设置而不发布

  • 【重要】‘one-shot-text’ 标志,用于仅更改当前发布的文本,而不覆盖已存储的文本

  • 【重要】如果存在 cron4plone,则显示任何可用的 cron 调度

  • 【重要】略微改进了样式

1.0a1

  • 初始版本

鸣谢

本产品由 Domsense 开发。

Domsense Website

项目详情


下载文件

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

源代码分发

collective.socialpublisher-1.0a3.zip (40.5 kB 查看哈希值)

上传时间 源代码

由以下支持