Plone的全能型新闻通讯插件。
项目描述
唱歌与跳舞
这是什么?
唱歌与跳舞 是 Plone 的下一代通讯产品。它是一个即用即装的解决方案,无需修改即可适用于大多数用例。如果您发现唱歌与跳舞无法做到的事情,它通过使用 Zope 3 组件架构,可以轻松地通过插件进行扩展。
功能
- 现代且可扩展
唱歌与跳舞基于 Zope 和 Plone 世界中最最新、最好的努力。它大量使用优秀的 z3c.form 库和 Zope 3 组件架构。这使得您可以轻松地将其插入和扩展唱歌与跳舞以适应您的需求。
- 经过充分测试
一套广泛的自动化测试使唱歌与跳舞异常稳定可靠。我们目前有 200 多个测试。唱歌与跳舞不会让您陷入困境!
- 完全通过 Plone 界面管理
唱歌与跳舞完全即用即装。一组通过配置面板可访问的表单让您作为用户可以配置通讯的许多细节,例如 何时 发送(定期或手动),发送什么(通过使用 智能文件夹 界面或手动),以及发送给谁。
- 订阅
唱歌与跳舞使用 确认订阅,即订阅者会收到一封电子邮件以确认他们的订阅。用户可以通过列出网站上所有可用通讯的标准订阅表单进行订阅,或通过个人订阅表单进行订阅,例如在组件中。
- 个性化
唱歌与跳舞允许一个频道定义可选的收集器或 部分,用户可以选择订阅。计划每天或每周的通讯可以包含针对频道这些部分的额外个性化内容。
- 外部订阅者数据库
可选地,您可以使用其他产品,如 PloneFormGen 的 Plomino,而不是使用内置的订阅者数据库和订阅表单。只需配置一个脚本的路径来列出订阅者,即可将 S&D 集成到您的外部订阅者数据库中。
- 自动发送
任何 Plone 内容项目都可以使用“作为新闻通讯发送”功能在预定时间发送。这些可以发送给整个订阅者列表或特定部分。可以配置内容规则,在满足某些条件的情况下立即将项目作为新闻通讯发送,包括如果它匹配 Singing & Dancing 的基于 集合 的 收集器。
用户手册
Singing & Dancing 用户手册在此处可用:[链接](http://www.webtide.co.za/how-to/singing-dancing-user-manual)
安装
Singing & Dancing 的安装使用 buildout。如果您不知道 buildout 是什么或者如何创建 buildout,请首先[遵循此教程](http://plone.org/documentation/tutorial/buildout/creating-a-buildout-for-your-project)。
这些说明假设您已经有一个构建并准备好运行的 Plone buildout。
Singing & Dancing 作为 [Python eggs on PyPI](http://pypi.python.org/pypi/collective.dancing) 提供。
要安装 Singing & Dancing,请按照以下步骤将其添加到您的 buildout 中
Plone 3.x
编辑您的 buildout.cfg 文件并查找 [buildout] 部分。在该部分中添加一个 extends = 选项,如下所示
[buildout] extends = https://svn.plone.org/svn/collective/collective.dancing/buildout-extends/0.9.0.cfg parts = zope2 ... Should you already have an ``extends =`` line, add the new line at the end of the other extends files. For Plone 3.2.2, your ``[buildout]`` section might start like this:: [buildout] extends = http://dist.plone.org/release/3.2.2/versions.cfg https://svn.plone.org/svn/collective/collective.dancing/buildout-extends/0.9.0.cfg parts = zope2 ...
接下来,您需要将 collective.dancing 添加到您的 [instance] 部分的 eggs 和 zcml 选项中。它应该看起来像这样
[instance] ... eggs = ${buildout:eggs} ... collective.dancing zcml = ... collective.dancing
注意:当您使用 Plone > 3.3 时,可以跳过 zcml 部分,因为 z3c.autoinclude 默认包含在 Plone 3.3.x 中。
如果有的话,从您的 [zope2] 部分中删除所有 additional-fake-eggs 和 skip-fake-eggs 选项。(这样做是为了确保您不会覆盖我们在步骤 1 中添加的 S&D 扩展文件中定义的选项。)
Plone 4.x
在 Plone 4 中,您不需要使用 extends=…` 扩展您的 buildout 配置。您需要将 collective.dancing 添加到您的 [instance] 部分的 eggs 中。它应该看起来像这样
[instance] ... eggs = ${buildout:eggs} ... collective.dancing
如果您有包冲突或奇怪的错误,请使用包含在包中的 versions.cfg 文件中的版本标记。
编辑完您的 buildout 配置后,不要忘记在启动 Zope 之前再次运行您的 buildout。
$ ./bin/buildout -v
这就是全部!现在您可以通过访问 添加产品 网站控制面板来启动您的 Zope 实例,并在您的 Plone 网站中安装 Singing & Dancing。
故障排除
如果上述说明对您不起作用,请联系我们。
注意:如果您正在从包含 S&D 手动版本依赖性的旧版本升级 buildout,请删除您的 buildout 中的 develop-eggs 目录并重新运行 buildout。
以下是常见问题的列表
如果在启动时看到 ImportError: Module zope.app.component.metaconfigure has no global defaultLayer 错误,请确保您已安装 plone.recipe.zope2install >= 2.2。您可以使用 buildout 的 versions 功能来指定要使用的版本。
从 collective.singing 的 0.7.0 版本开始,我们默认不支持旧的 z3c.form 版本。单选按钮和复选框小部件的隐藏模板已包含在最新的 z3c.form 版本中。(> 2.3.3,如这里所述 http://pypi.python.org/pypi/z3c.form#id14)
如果您想使用旧版本(例如在旧的 buildout-extends 文件中固定的流行的 1.9.0),您必须手动包含位于 collective.singing.browser.widgets.zcml 的 zcml 文件,该文件为这些小部件注册缺失的模板。
<include package="collective.singing.browser" file="widgets.zcml" />这解决了 https://bugs.launchpad.net/singing-dancing/+bug/620608。
已经安装。下一步是什么?
现在控制面板中会有一个 Singing & Dancing 的入口。这将带您到 S&D 的高级配置面板。
请注意,已经为您方便地设置了一个默认的新闻通讯。您可以创建一个 邮件列表订阅面板 以启用用户订阅此频道,或者您可以指向 http://yoursite/portal_newsletters/channels/default-channel/subscribe.html
要发送新闻通讯,请转到任何门户对象,如 Plone 首页,然后点击 操作 -> 发送为新闻通讯。
S&D 的高级配置面板为您提供许多发送新闻通讯的方式,例如定期和从自动收集的内容中发送。
处理消息队列
请注意,S&D 通常在发送之前将其自己的消息队列中的消息进行排队。您可能已经注意到,当您发送新闻通讯时,S&D 会告诉您它已排队了消息。
在生产环境中,您通常会使用内置的 Zope ClockServer 定期处理消息队列。在测试时,您可以在 S&D 高级配置面板的 统计信息 屏幕中手动清空队列。如果您的 Plone 中的邮件配置设置正确,现在应该已经开始发送邮件。
要设置 ClockServer 以自动触发处理,请将此段落添加到您的 buildout 配置的 Zope 2 [instance] 部分,并重新运行 bin/buildout -v
zope-conf-additional = <clock-server> # plonesite is your plone path method /plonesite/@@dancing.utils/tick_and_dispatch period 300 user admin password admin # You need your *real* host here host www.mysite.com </clock-server>
或者,如果您的站点位于使用虚拟主机的 Apache 后面,zope.conf clock 服务器配置将是
zope-conf-additional = <clock-server> # plonesite is your plone path # www.mysite.com your site url method /VirtualHostBase/http/www.mysite.com:80/plonesite/VirtualHostRoot/@@dancing.utils/tick_and_dispatch period 300 user admin password admin </clock-server>
这将每五分钟处理一次消息队列。它假定您的 Plone 网站标识为 portal,用户名和密码为 admin,并且您的网站名为 www.mysite.com。
注意:您不得在多个实例上设置此 ClockServer。处理过程通过使用文件锁定来确保不会同时调用两次。如果在不同服务器上配置时钟服务器,则此文件锁定将不起作用。
配置 zope.sendmail 发送消息
Singing & Dancing 使用 zope.sendmail 来发送邮件。S&D 在其 collective/dancing/mail.zcml 文件中包含 zope.sendmail 的默认配置。此配置将从您的 Plone 网站读取 SMTP 参数。
但是请注意,此默认配置不适合大量新闻通讯。上述配置文件包含一个使用 mail:queuedDelivery 的示例配置,当处理大量邮件时工作得更可靠。
升级
如果您正在升级Singing & Dancing版本,可能需要运行数据库升级。在ZMI中的portal_setup工具中,访问升级选项卡,并运行collective.dancing:default配置文件的所有可用新升级。
联系我们
如果您有任何问题或评论,请与我们联系!请随意扩展S&D并在GitHub上发送pull-request。由于所有collective和plone包都已迁移到GitHub,我们也更倾向于在GitHub上报告问题。
如果您有较老的安装,还可以查看我们的邮件列表或Launchpad上的旧问题跟踪器。
我们在Freenode上有一个名为#singing-dancing的IRC频道。
捐赠
有时,作为开源软件的开发者是一项没有回报的任务。如果您是Singing & Dancing的满意用户,并想表达您的感激之情,您可能想通过PayPal捐赠。
如果您不是开发者,还有其他方式可以为项目做出贡献;一种是向邮件列表发布消息,描述您在使用软件时遇到的任何成功或问题。这是我们能知道S&D是否正常工作的唯一方法。
另一种是向使用S&D的网站添加一行。请fork S&D并在docs目录中更新SITES_USING_SINGING_AND_DANCING.rst。完成后,您可以发送pull request,我们将合并它。
开发者
Singing & Dancing是从头开始构建以支持扩展的。在collective.singing中的interfaces.py文件中描述的所有组件都是可插拔的。
开发者文档以源代码树中的doctests和Zope 3接口的形式存在。要检查开发版本,请在终端中输入以下内容
git clone https://github.com/collective/collective.dancing singing-dancing-dev
当检查完成时,您可以在src/collective.singing/collective/singing/和collective/dancing/目录中的*.txt文件中找到doctests。此外,在docs/中还有一个用于用例和手册的文档区域。
如果您需要帮助或有任何评论,请与我们联系。请参阅联系我们部分。
感谢
感谢以下人员对支持、代码、补丁等的支持
Alec Mitchell
Anton Stonor
Daniel Widerin
David Bain
David Pico
Giuseppe Zizza
Hanno Schlichting
Harald Friessnegger
Jakob Bartholdy Bruun
Jens W. Klein
Katja Suess
Malthe Borch
Mathieu Le Marec-Pasquet
Maurits van Rees
Maurizio Delmonte
Peter Holzer
Radim Novotny
Rok Garbas
Ross Patterson
Russ Ferriday
Sivan Greenberg
Sune Toft
Vincenzo Barone
Vincenzo Di Somma
Wim Boucquaert
Wouter Vanden Hove
变更日志
1.2 (2018-06-18)
通过(暂时)将Plone 4.3.x固定为4.3.11并放弃对Python2.6的支持(Plone 4.0和4.1)来解决测试问题
PreviewSubscription在打印没有默认值的字段时打印{variablename}而不是None。这使得用户更容易检查替换是否正常工作,以及当预览时事变量是否放置正确。
修复“订阅已成功删除”消息中的变量替换问题(德语翻译[fRiSi])
1.1 (2017-03-03)
在导出频道订阅时包含元数据
创建日期:此订阅的创建日期
待定
允许识别尚未验证的订阅(pending=True)(否则导入和导出将添加未确认订阅的用户)
- True
订阅尚未验证(将不会收到通讯稿)
- False
订阅已验证
- 导入
订阅已被导入或由管理员添加
提示
此订阅上次收到通讯稿的日期
秘密
用于在(取消)订阅和编辑个人偏好时进行验证
portal_newsletters/channels/my-channel/unsubscribe.html?secret=8a27d9c4fc2f8f0f031d654dc3172844
portal_newsletters/my-subscriptions.html?secret=8a27d9c4fc2f8f0f031d654dc3172844
未来版本可能支持导入秘密,以便在重新导入订阅后使取消订阅链接生效。
如果 channel.subscribeable == False,则在 channel/subscribe.html 上不显示订阅表单 [fRiSi]
1.0.2 (2015-11-03)
修复readme文件。 [ivanteoh]
1.0.1 (2015-11-03)
修复 preview.pt 中的HTML生成。现在它只生成1个 <body> 标签。这是plone.protect的transform的问题。 [cekk]
允许为多个频道确认订阅(修复#8) [fRiSi]
禁用 @@preview-newsletter.html 的diazo [fRiSi]
在 tick_and_dispatch 请求上禁用CSRF保护(修复#24) [ivanteoh]
1.0 (2015-05-11)
如果 plone.app.collection 可用,则不要尝试修补ATTopic。 [saily]
使所有测试通过。 [saily]
向composer添加一些辅助函数,允许 plone.z3cform 在频道编辑表单上渲染带有TinyMCE的wysiwyg-widget,该表单将composer作为上下文传递。 [saily]
更新buildout并添加plone 4.0、4.1、… 4.3的travis测试。 [saily]
将包结构调整为新的plone约定。 [saily]
修复 getSiteManager 的调用,因为导入从 import zope.component 更改为 from zope import component。
plone4.3兼容 [kiorky]
“单一订阅表单”现在在从所有频道取消订阅后清除秘密。电子邮件地址被保留,用户可以重新订阅或使用另一个地址订阅。 [tmog]
在统计页面上添加“清除待处理作业”按钮。 [tmog]
更新丹麦翻译。 [tmog]
在“单一订阅表单”上从所有频道取消订阅时,添加更好的状态消息。 [tmog]
如“电子邮件地址”这样的关键字段在查看现有订阅时在“单一表单订阅页面”上现在已禁用。这无论如何都是误导性的,因为它们实际上无法更改。 [tmog]
修复 #924124:在使用“单一表单订阅页面”时,用户电子邮件不再在用户管理订阅后的所有会话中泄漏到subscribe.html中默认的“电子邮件地址”文本。 [tmog]
修复与较新版本的zope.testbrowser的测试中断。在zope.testbrowser 3.10-3.11.1上测试。目前将zope.testbrowser-3.11.1锁定在测试buildout中。 [tmog]
修复通讯稿队列处理。现在获取通讯稿的键是UID,而不是路径。这样,即使通讯稿已经在队列中,也可以重命名/移动通讯稿,如果它们被删除,则不会中断分发。 [cekk]
添加了两个新的事件,当用户确认或删除他的订阅时引发。 [cekk]
修复意大利翻译 [cekk]
添加内容规则以允许自动将内容作为通讯稿发送。 [djay]
配置内容规则以作为通讯稿发送或仅发送链接和摘要。 [djay]
“作为通讯稿发送”现在可以发送到可选订阅的部分,而不是整个频道。 [arterrey]
导入/导出CSV文件包括部分值,并且与原始格式向后兼容。 [ivanteoh]
外部订阅者数据库和注册表单支持。 [ivanteoh]
0.9.10 (2012-02-25)
修复 #363127:在卸载S&D后,持久化工具将不再销毁站点。[nouri]
移除plone4.1上的弃用警告。[toutpt]
0.9.9 (2011-07-22)
通过更改我们自己的switch_on函数中的请求并移除更专业的IPloneFormLayer来解决与plone.app.z3cform的基本模板的不兼容性,从而回退到来自plone.z3cform及其基本模板的层。关闭https://bugs.launchpad.net/singing-dancing/+bug/697348。[hannosch]
0.9.8 (2011-07-21)
替换了几个无法翻译的字符串。[pfurman]
通过有条件地加载CMFCore的permissions.zcml来修复与Plone 4.1的兼容性。(仍在Plone 3.3和4.0上工作。)[maurits]
链接到新手册。[nouri]
0.9.7 (2011-02-23)
支持使用acquisition-wrapped通道;通道对象可能被包装,尤其是在订阅中很重要,因为five.intid实用程序用于跟踪它们,并具有避免acquisition“循环”的复杂代码。[malthe]
修复了一个问题,允许匿名用户确认一个随机订阅者,该订阅者所在的频道标准确认视图是公开的。[malthe]
0.9.6 (2011-02-10)
修复了一个关键问题,允许匿名用户从标准取消订阅视图公开的频道中取消随机订阅者的订阅。[malthe]
修复了包含隐藏密钥的未关闭的输入标签。[maurits]
0.9.5 (2010-12-26)
将集合类的queryCatalog方法更新为基准线的更改。[hannosch]
0.9.4 (2010-12-03)
修复了发布问题。
0.9.3 (2010-12-03)
添加了keep_sent_messages(在collective.singing 0.7.1中引入)的配置设置。[malthe]
修复了CSV下载视图,以防止在包含列表、布尔型和日期时间字段的作曲家中中断。[piv]
更新了文档。[saily]
添加了意大利语翻译,感谢Augusto Sosa。[saily]
更新法语翻译以反映频道到邮件列表的更改。[toutpt]
0.9.2 (2010-11-04)
更新了文档。[saily]
修复了stub mailer(编码问题)[malthe]
0.9.1 (2010-11-04)
修复了stub mailer(它如何能工作还不清楚)[malthe]
更新测试以通过Plone4 [toutpt] [pbauer]
重构发送/预览表单,因为formtabbing不起作用。[saily]
撤销了更改集119773,因为用户无法再发送文件夹内容类型(RichDocument是文件夹内容类型)[saily]
0.9.0 (2010-08-01)
发送表单现在分为两个子表单,一个用于发送,一个用于预览。注意!如果你有自定义表单,这将引入不兼容的更改(尽管所需更改很简单)。[regebro]
默认情况下,不再在文件夹上显示“作为新闻通讯发送”操作。[regebro]
已将“从CSV中批量删除”功能添加到频道管理页面。[kiorky]
已更新法语翻译[kiorky]
用户界面中的“频道”已重命名为“邮件列表”。[regebro]
挪威语翻译。[regebro]
0.8.17 (2010-06-11)
修复了订阅小部件破坏批量工作流程状态更改的问题。修复了https://bugs.launchpad.net/singing-dancing/+bug/475771 [maurits]
如果没有选择地址来发送预览,则通知用户,而不是将预览发送给所有订阅者。修复了https://bugs.launchpad.net/singing-dancing/+bug/509577 [maurits]
当使用stoneagehtml压缩发送的HTML时,捕获可能由于某些CSS代码而发生的错误,stoneagehtml尝试使用cssutils进行清理。修复了https://bugs.launchpad.net/singing-dancing/+bug/410238 [maurits]
将所有出现的site-title更改为site_title(在帮助字符串和翻译中)。修复了https://bugs.launchpad.net/singing-dancing/+bug/296759 [maurits]
现在我们避免包含来自 five.intid 的所有 zcml 文件(例如,与 plone.app.intid 类似)。这意味着我们避免注册 IPersistent 处理程序,这可能导致将持久项存储在临时存储中的包出现问题(以及其他问题)。相反,我们明确注册 ISubscription 处理程序。有关此问题,请参阅此处:http://www.mail-archive.com/zodb-dev@zope.org/msg04398.html,以及有关 getpaid 包的详细讨论,请参阅此处:http://code.google.com/p/getpaid/issues/detail?id=209。 [tmog]
已撤销更改集 113529,因为它破坏了订阅者搜索(以及测试)。撤销可能重新引入了删除订阅的问题,但我无法重现此问题。[tmog]
在导入电子邮件地址时,将所有地址转换为小写,而不是拒绝它们。[maurits]
更新法语翻译。[toutpt]
版本 0.8.16 - 2010-04-07
修复了导致 Zope 启动时编译错误的翻译,导致语言显示旧翻译(从过时的 .mo 文件中获取)或根本没有翻译。[maurits]
更新荷兰语翻译。[maurits]
修复了一个导致无法删除某些订阅的漏洞。[regebro]
版本 0.8.15 - 2010-02-01
将开发 buildout 和自动化测试运行器设置添加到包中。[hannosch]
在最后一个升级步骤中修复了 ConfigurationError: ('Missing parameter:’,'description')错误。[toutpt]
版本 0.8.14 - 2010-01-28
添加了所有最近版本的缺失升级步骤。这使得包符合 Plone 添加控件面板的升级逻辑。[hannosch]
遵循最佳实践,在 setup.py 中将配置文件元数据与软件版本解耦。[hannosch]
添加了一个 z3c.autoinclude 入口,将其标记为 Plone 扩展。[hannosch]
添加了我们自己的 overrides.zcml 以加载来自 plone.z3cform 的内容。您无法在配置阶段加载覆盖。[hannosch]
在 ATTopic 补丁上添加日志。[toutpt]
更新法语翻译。[toutpt]
通过转义引号修复 i18n pot 文件。[toutpt]
扩展了 HTML 编排器,以便您可以选择使用哪个编排器模板。您通过在代码中的某个位置实例化模板并注册它在 ZCML 中来注册新的编排器模板。
>>> mytemplate = ViewPageTemplateFile('browser/composer-html.pt')
并注册在 ZCML 中
<utility component=".module.mytemplate" name="My Custom Template" provides="collective.dancing.interfaces.IHTMLComposerTemplate" />
[regebro]
版本 0.8.13 - 2009-10-19
新创建的频道上的“可订阅”属性现在默认为 False。这意味着新创建的频道在从频道配置页面使其可订阅之前不会显示在我的订阅中。[tmog]
已禁用 stoneagehtml 样式属性黑名单,因为它从添加到频道的样式中去除了字体家族,这使几个用户感到困惑。这修复了http://tinyurl.com/ygmhv7a遗憾的是,由于 stoneagehtml 目前还不支持,因此无法指定类似于 stoneagehtml.compactify(html, filter_tags=['position'…]) 的自定义黑名单 - http://tinyurl.com/ykwca4p。[pelle]
修复了导致在“作为通讯录发送”预览中忽略“包含收集项目”选项的漏洞(即始终开启)。现在还有一个针对虚拟预览订阅者的默认提示。提示始终为“一周前”。[tmog]
版本 0.8.12 - 2009-09-15
更改了电子邮件地址验证。旧的验证允许一些不良地址通过 - 例如,以点结尾的地址。新的验证通常更严格。请注意,'simple' 本地地址,如 'admin@localhost,不再允许。对于需要此类特殊用例的情况,您必须更改验证 RegExp。然而,对于大多数用例,我相信这是一个很大的改进。[tmog]
版本 0.8.11 - 2009-09-03
添加了替代的“我的订阅”页面。它基于单个表单和子表单,而不是像旧版本那样多个表单。其主要特点是它只显示一次 ISubscriptionKey(电子邮件地址;-)和“订阅”按钮。它为每个频道提供了一个复选框。要尝试新版本,请从新的“全局设置”控制面板中选择它。[tmog]
为德语语言翻译了新的消息 ID 并更新了一些旧的。[saily]
版本 0.8.10 - 2009-06-11
修复了除“创建”和“有效”之外的其他收集排序标准会导致错误的漏洞。[nouri]
修复并添加了对新闻简报预览表单的测试。在频道页面上预览之前会失败,因为存在TypeError: eval() arg 1 must be a string or code object错误。[nouri]
版本 0.8.9 - 2009-03-11
修复了Doug发现的bug,收藏夹中的项目会完全渲染。[nouri]
更新安装说明,以适应Plone 3.2.x构建,它们有所不同。[nouri]
向Composer.render添加了可选关键字参数override_vars。现在override_vars可以覆盖来自例如send-newsletter.html表单的composer_vars。
我在browser.txt的“自定义发送新闻简报表单”部分(以及新的send-newsletter-custom-subject.html视图)中包含了这个示例。这是一个相当普遍的变更,因为它需要与异步发送、邮件预览、浏览器预览以及计划投递一起工作。
包括将TimedScheduler.items迁移到新格式的升级步骤。有关如何运行升级的详细信息,请参阅升级部分。[tmog]
版本 0.8.8 - 2009-02-01
修复了与collective.singing的依赖性问题。[nouri]
版本 0.8.7 - 2009-02-01
我们现在有更简单的安装说明。[nouri]
修复了#313044:在将相对链接转换为绝对链接时不要破坏javascript:链接。[nouri]
版本 0.8.6 - 2009-01-20
修复了#318725:在将相对链接转换为绝对链接时不要破坏mailto:链接。感谢Scribbles。[nouri]
在发送邮件时排除所有具有newsletterExclude类的标记。这允许您以一种低质量的方式标记模板中的部分以进行排除,如果您不想编写自己的IFormatItem,则可以这样做。[nouri]
向收集器模块添加了sort_criteria字典。它可以指定基于当前提示的不同排序标准的不同查询。[naro]
版本 0.8.5 - 2009-01-05
扩展了订阅者的CVS输入,允许将任意CVS字段存储为订阅的一部分,然后使用${composervariableFIELDNAME1}语法将其包含在作曲家输出中。[russf]
版本 0.8.4 - 2009-01-02
为collective.dancing.composer.plone_html_strip添加了一些合理的默认值,以便过滤掉关键的HTML。[pigeonflight]
添加了对zexp的实验性支持。[nouri]
添加了升级步骤以将现有的MessageQueues迁移到collective.singing.queue.CompositeQueue。这修复了大型队列上的慢速迭代和统计数据页面的极慢渲染。[tmog]
版本 0.8.3 - 2008-12-03
修复了由于不良的Job消息导致的统计数据页面上的unicodeerrors问题。在https://bugs.launchpad.net/singing-dancing/+bug/299950中进行了描述。[tmog]
部分捷克翻译。[naro]
改进了块结构,并添加了类和id。用div替换了段落。这些更改将影响现有的CSS。[russf]
在所有最近的新闻条目中,如果在未转义的地方出现$(例如)使用Template().substitute将会是致命的 - 在这些情况下,safe_substitute表现正常。[russf]
为了允许更定制的订阅表单,进行了一些重构。[nouri]
添加了法语翻译。
使新的作业视图browser/jobs.pt可翻译,重新构建了pot文件并更新了德语翻译。[saily]
版本 0.8.2 - 2008-11-17
修复了HTMLComposer中的bug,其中由于变量名称中的双重美元符号,无法通过模板引擎替换unsubscriber_url。[saily]
版本 0.8.1 - 2008-11-14
对测试进行了一些重构,以允许在第三方测试中重复使用测试基础设施。[nouri]
版本 0.8.0 - 2008-11-12
添加了弹跳支持:新的实用工具视图@@dancing.utils/handle_bounce接受一个地址列表,并在收到超过两个弹跳通知时将订阅标记为挂起。这导致不再向该订阅发送消息,同时该订阅仍然存在于数据库中。[nouri]
已添加到 composer 渲染的缓存。缓存基于 _vars 和收集的项目。请注意,composer._vars 已分为两个;_vars 和 _subscription_vars。后者包含可能是订阅特有的变量,而前者则是可能在多个订阅之间共享的变量。
渲染现在分为两步
渲染 composer-html 模板并使用 StoneAgeHTML 紧凑生成的 HTML。模板中可用 _vars 和收集的项目。此步骤在 _vars 和项目上缓存。
在 _subscription_vars 中的变量 HTML 上进行 string.Template 变量替换。在默认实现中,只有订阅管理 URL 中的订阅者秘密被替换。
[tmog]
版本 0.7.7 - 2008-11-05
为 SubscriptionsSearchForm 设置 ignoreContext = True。之前我遇到了 AttributeError: 'ManageSubscriptionsForm' object has no attribute 'fulltext' 错误,但奇怪的是,在测试中并没有出现,而且我只知道在一个安装中出现。 [nouri]
版本 0.7.6 - 2008-11-05
德语翻译已更新。 [saily]
使用 i18ndude 查找所有未翻译的 msgid。在 collective.dancing queue-button-naming 中有一些更新,所以请所有的人帮助更新 collective.dancing 的 po 文件。 [saily]
修复了一个问题,当我们发送预览时,我们错误地设置了发送预览的订阅的 cue。 [nouri]
修复 #264990:当手动从一个内容项目发送新闻通讯时,我们不再在浏览器请求过程中组装所有消息。相反,我们安排一个在 tick_and_dispatch 时间异步执行的任务。[nouri]
版本 0.7.5 - 2008-10-27
将文件锁定从队列调度移动到 tick_and_dispatch 浏览器视图。这是为了确保我们不会将重复的项目放入队列。这是因为底层的队列实现实际上会在这里与我们作对,允许并行 ZODB 写入时的同时添加。 [nouri]
修复 #289779:从电子邮件地址中删除空白。 [nouri]
在 HTMLComposer 类上添加了 encoding 属性,以便可以子类化并提供不同的默认编码,或者设置持久属性。[malthe]
修复 #280338:页眉和页脚文本中的图像发送时带有相对 URL。[nouri]
现在可以从发送新闻通讯视图中过滤频道。简单设置 channel.sendable=False。[tmog]
修复了从 python 安装 collective.dancing 的问题。创建新工具时注册 ISalt 的事件监听器不再依赖于请求。[tmog]
在文档中添加了 zope.conf 配置,包括虚拟主机。[macadames]
版本 0.7.4 - 2008-09-19
修复了通过访问“我的订阅”页面确认挂起的订阅的问题。如果订阅已被确认,则字典 subscription.metadata 中没有键 pending。[saily]
版本 0.7.3 - 2008-09-16
重新构建 collective.dancing.pot 并更新了德语翻译。[saily]
移除 ManageSubscriptionsForm.remove 中的错误。当添加搜索框时,我们还更改了 ManageSubscriptionsForm.get_items 方法,使其返回秘密而不是名称。移除方法未更新,删除订阅不起作用。[saily]
修复了 CSV 导出中的错误。导出必须具有与导入时预期相同的顺序字段或列。因为我们使用 composer 架构进行导入,所以我们也应该使用它进行导出。[saily]
使 CSV 导出和导入使用相同的分隔符。[saily]
版本 0.7.2 - 2008-09-15
修复了一个问题,即计划发送的项目会以简短形式发送,即只有标题和描述。[miziodel, nouri]
向订阅管理视图添加一个搜索框。
S&D的先前版本未能正确填充订阅者全文索引。此版本添加了一个升级步骤,您需要运行此步骤以重新索引所有订阅对象。
有关如何运行升级的详细信息,请参阅升级部分。[nouri]
通过访问“我的订阅”页面,允许待处理的订阅进行确认。这允许用户即使在丢失或从未收到确认消息的情况下也能确认他们的订阅。[nouri]
对PloneCallHTMLFormatter进行更多精细调整:以可配置的方式移除不需要的内容,例如审查历史。[nouri]
版本 0.7.1 - 2008-09-05
为作曲家中的错误添加了备用方案,其中header_text或footer_text为None。虽然不知道为什么它们是None,但这是一个备用方案。
版本 0.7.0 - 2008-09-05
为作曲家添加了新的subject字段。这允许用户使用字符串模板更精确地控制外出消息的主题。默认值为${site_title}: ${channel_title}。
从默认作曲家模板中移除了<h1>。现在您可以使用作曲家的header text达到相同的效果。默认的头部文本现在变成了<h1>${subject}</h1>,以模仿旧的行为。
在API方面,我更改了dancing.composer.HTMLComposer._vars的签名。由于重写这是提供您自己的变量的推荐方式,因此这需要0.7.0版本。我在考虑添加一个小型的变量提供器组件,作为子类化的替代方案。[nouri]
在composer-html-forgot.pt和composer-html-confirm.pt中添加了缺少的包含样式和标题标签的头部。[saily]
版本 0.6.5 - 2008-09-04
为作曲家及其表单添加了头部和尾部字段。这允许我们在消息的开始和结束处轻松且一致地添加文本。[nouri]
修复了#264694:在发送新闻稿的上下文标题中使用非ASCII字符会导致UnicodeEncodeError。[saily]
通过使用BeautifulSoup而不是str.find来解析内容,使PloneCallHTMLFormatter更稳健。[nouri]
版本 0.6.4 - 2008-09-03
为S&D添加了一个名为dancing.transform.URL的默认ITransform适配器。这将自动重写相对链接等。相对链接是外出消息中链接和图像损坏的原因。这修复了#262633。
此转换还允许定义一个或多个后端URL,将其替换为规范URL。有关详细信息,请参阅transform.txt。[tmog, nouri]
修复了#262612:回复到字段未作为消息头包含。
版本 0.6.3 - 2008-09-01
从zope.sendmail继承S&D SMTPMailer子类。这允许使用标准配置使用TLS,并修复了#263271。
版本 0.6.2 - 2008-08-28
更新了文档,其中包含有关如何配置zope.sendmail的mail:queuedDelivery的信息。[nouri]
使作为所有对象的备用格式器的PloneCallHTMLFormatter更稳健。[tmog]
通过新闻稿对象标题提高国际化。[tmog]
修复了在使用除电子邮件地址以外的更多作曲家数据时的csv-export错误。[saily]
有些人报告说S&D在高峰期发送了重复的邮件。我添加了一个名为StubSMTPMailer的实用工具,您可以在collective/dancing/mail.zcml中方便地注册。当配置为默认设置时,不会发送邮件。这允许您调试和微调设置,例如您配置的mail:queuedDelivery组件。 [nouri]
将browser/channel.py中的batch_size更改为30,以保持与Plone的默认值。 [saily]
更新了德语翻译。 [saily]
使用i18ndude重建collective.dancing.pot。需要一些翻译更新。 [saily]
版本 0.6.1 - 2008-08-22
在重新安装时,建议QuickInstaller不要删除我们安装期间设置的五个.intid工具。这解决了重新安装后订阅目录损坏的问题。您可能会看到的一个典型错误如下:
... Module collective.singing.subscribe, line 227, in subscription_modified Module collective.singing.subscribe, line 214, in _catalog_subscription Module five.intid.intid, line 36, in getId Module zope.app.intid, line 86, in getId KeyError: SimpleSubscription ...
目前没有可用的迁移。如果您需要帮助编写迁移,请联系我们。请注意,在Singing & Dancing中不需要使用QuickInstaller重新安装。有关如何从一个版本升级到下一个版本,请参阅升级部分。QuickInstaller重新安装不会为您运行这些升级。 [nouri]
版本 0.6.0 - 2008-08-21
更新以使用Singing的新IMessageAssemble API。 [nouri]
为订阅管理视图使用分批处理。此外,重新排列频道管理视图中标签的顺序。最值得注意的是:将“订阅”标签移到第一位,以便更方便地编辑。 [nouri]
版本 0.5.1 - 2008-08-15
修复了一个bug,其中收集器会有一个Title属性;这应该是一个方法。 [malthe]
添加了发送、预览和管理新闻通讯的权限。无需升级步骤 - 只需重新安装。默认情况下,发送和预览允许审稿人和管理员角色,只有管理员可以管理新闻通讯。 [saily]
版本 0.5.0 - 2008-07-29
当用户尝试添加重复的订阅时,显示更友好的错误消息。 [miziodel, nouri]
现在可以将订阅者列表以CSV格式上传和下载! [skatja]
依赖于0.3或更高版本的plone.app.z3cform。 [nouri]
版本 0.4.1 - 2008-07-23
修复了在显示在0.4b4之前创建的组件时出现的RuntimeError: maximum recursion depth exceeded错误。错误发生在Module collective.dancing.browser.portlets.channelsubscribe, line 253, in channel。 [nouri]
版本 0.4 - 2008-07-23
新功能
将主题、确认主题和忘记密码主题添加到作曲家的变量中,以便于自定义。默认值保持不变。 [tmog]
根据作曲家配置添加了发件人姓名、发件人地址和回复地址。作曲家配置现在可在频道编辑视图的新作曲家字段集中使用。 [tmog]
允许更容易地子类化HTMLComposer。现在_vars()方法更通用,并且容易覆盖。 [nouri]
使添加第三方频道成为可能。这与收集器的工作方式相同 - 您只需实现您自定义的频道并将其添加到collective.dancing.channel.channels列表中。预览和编辑表单现在是ManageChannelView上的类方法,这使得为您的自定义频道进行子类化更容易。 [tmog]
将来自收集器的原始项目作为收到的项目传递给作曲家(模板)。显然,使用此原始项目将绑定作曲家的实现与收集器的实现。然而,对于需要完全控制和知道将使用哪个收集器的自定义实现,这被认为是有用的。
这需要在IComposer.render()中更改API;现在items参数是2元组的列表,而不是格式化项的列表。 [nouri]
由Barbara Struk添加了波兰语翻译 [naro]
添加了另一种类型的调度程序:TimedScheduler。这个允许根据确切的日期时间安排一系列发送。它的主要用途是在我们想要指定未来发送日期的上下文中使用“发送新闻通讯”表单。 [nouri]
确认视图现在将确认任何频道的待定订阅。这使我们免去了为每个用户订阅的频道发送单独确认电子邮件的需要。此功能目前在S&D核心中未使用,但如果您正在编写自定义订阅表单,则很有用。[nouri]
添加了基于词汇的SubjectsCollectorBase模板类,您可以使用它创建一个收集器。这种词汇可能来自任何地方,例如来自ATVocabularyManager或来自您网站中所有主题/标签的列表。[nouri]
默认情况下,如果没有任何兄弟收集器生成项目,则文本字段将不会包含在生成的消息中。例如,如果您有一个标题文本和一个兄弟主题收集器,如果主题没有返回任何项目,则标题不会显示。[nouri]
错误修复
更新了安装说明,以使用plone.recipe.zope2install的
fake-zope-eggs
功能,而不是fakezope2eggs
。另外,还添加了skip-fake-eggs
以适应plone.z3cform的最新更改。使用
CompositeQueue
而不是简单的zc.queue.Queue进行队列和存档邮件。这应该有助于在队列中有大量消息时的内存膨胀。[nouri]不要尝试使用收集器中创建的ATTopic项进行任何工作流程转换;默认工作流程将很好,并且我们避免了在除默认工作流程之外的流程中使用错误。[nouri]
如果没有可用的项目可供预览,不要退出。[malthe]
版本 0.3 - 2008-06-03
新功能
添加了德语翻译。[saily]
还将预览添加到频道视图中。这之前仅适用于“作为时事通讯发送”操作。[malthe]
重构了频道管理视图和专用频道视图。对频道视图的可用性进行了重大改进。[malthe]
添加了将样式表嵌入到发出的邮件中的功能。目前,这是一个简单的文本字段,可以在频道的作曲家上设置。我们现在正在使用StoneAgeHTML库将样式嵌入到单个HTML元素中,而不是在HTML文档的
<head>
中提供样式。这使我们能够更好地支持那些奇特的电子邮件客户端。[malthe]将来,我们希望扩展此功能,允许管理员通过浏览并从注册样式的列表中选择来为单个频道选择主题。
添加了捷克语翻译。[naro]
重构了
mail.py
以创建基于MIMEMultipart
的消息。这使我们能够轻松地适应邮件发送过程以嵌入图像等。[naro]添加了“参考收集器”。这允许您选择要发送的个别门户项,而不是由智能文件夹等收集的项目。[malthe]
错误修复
S&D 0.3b2引入了与0.3b1及之前创建的频道不兼容的更改。我添加了一个GenericSetup升级步骤来修复此问题。相关代码位于
collective.dancing.upgrade
模块中。如果您正在使用在版本0.3b2之前创建的频道的老式数据库,则需要运行此升级步骤,否则您将看到此错误
TypeError: ('object.__new__(HTMLComposer) is not safe, use persistent.Persistent.__new__()', <function _reconstructor at ...>, (<class 'collective.dancing.composer.HTMLComposer'>, <type 'object'>, None))
有关如何运行升级的详细信息,请参阅升级部分。[nouri]
添加
metadata.xml
以使QuickInstaller对版本号满意。[naro]回到使用复选框进行多选,而不是
select
。[nouri]使HTMLComposer和channel.composers持久化,以便方便地持久化模板和作曲家更改。[nouri]
使用
zc.lockfile
锁定队列处理(发送邮件)而不是过度使用transaction.commit()
,这会导致ZODB在涉及大量消息时出现大量膨胀。[nouri]使用
email.Header
进行消息头格式化。这允许在发出的电子邮件的头中实现更好的国际化。[naro]浏览器预览现在显示将要真正发送的内容,即在收集器和转换完成其工作之后。之前,它仅显示作为邮件的上下文项。[malthe]
版本 0.2 - 2008-05-06
在“我的订阅”页面中添加“已经订阅?”部分以检索您的密码。[nouri]
添加了i18n:domain到browser/controlpanel-links.pt,从browser/channel.py中删除了多余的引号,更新了pot和丹麦翻译[bartholdy]
更新了.pot和丹麦翻译[bartholdy]
显然三重引号字符串不会被翻译..这解决了https://bugs.launchpad.net/singing-dancing/+bug/218448 [bartholdy]
在创建ISalt实用程序时不要使用依赖于地区的‘string.letters’。这解决了https://bugs.launchpad.net/singing-dancing/+bug/217823 [nouri]
扩展了带有可选页脚文本的组件[bartholdy]
添加了在浏览器中显示预览的功能[malthe]
项目详情
collective.dancing-1.2.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8a13320cf1f2b389c8389fdb9a5fc3576506f0925b110d8c9b40222b7d9ace58 |
|
MD5 | 57f63aa1a8573cdf24b90739b390b54a |
|
BLAKE2b-256 | 92cc05b7545ee1a559be158ba8023c212f0ceb2be50e80bc62d66a1d32fcc5d0 |