无法激活关于Plone Dexterity类型的讨论(文件夹)

时间:2012-05-01 19:13:47

标签: plone dexterity

我一直致力于基于灵巧的plone应用程序。 我创建了几种新类型。这就是我激活对名为“activity_report”的特定敏捷内容类型的评论所做的:

在Plone控制面板中

讨论部分,我启用了以下内容:

  • 全球启用评论
  • 启用匿名评论

Types 部分 我从下拉列表中选择了“活动报告”类型,并启用了“允许评论”选项。

在文件系统上

在FTI文件activityreport.xml中:

<property name="allow_discussion">True</property>

我重新启动了实例,甚至重新安装了产品,但是我无法激活dexterity类型的评论部分。

值得一提的是,标准类型(例如Page)可以激活讨论模块。

我有什么遗失的吗?

4 个答案:

答案 0 :(得分:3)

plone.app.discussion目前禁用对所有容器的评论(请参阅https://dev.plone.org/ticket/11245进行讨论)。

我在一个项目中使用了类似下面的猴子补丁来缩短正常检查并确保为我的文件夹内容类型启用了评论:

from Acquisition import aq_inner
from Products.highcountrynews.content.interfaces import IHCNNewsArticle
from plone.app.discussion.conversation import Conversation
old_enabled = Conversation.enabled
def enabled(self):
    parent = aq_inner(self.__parent__)
    if parent.portal_type == 'my_portal_type':
        return True
    return old_enabled(self)
Conversation.enabled = enabled

其中'my_portal_type'当然是您要为其启用评论的portal_type。

答案 1 :(得分:2)

大卫的反应不准确。要进行monkeypatched的类是 plone.app.discussion.browser.conversation.ConversationView

from Acquisition import aq_inner
from plone.app.discussion.browser.conversation import ConversationView
old_enabled = ConversationView.enabled

def enabled(self):
    parent = aq_inner(self.__parent__)
    if parent.portal_type == 'My_type':
        return True
    return old_enabled(self)

至少适用于Plone 4.2。但是,感谢大卫提示。

答案 2 :(得分:2)

正如David和Victor已经指出的那样,你可以覆盖会话类的enable方法。我建议使用以下方法,比猴子修补会话类更清晰:

https://github.com/plone/plone.app.discussion/blob/master/docs/source/howtos/howto_override_enable_conversation.txt

我最近还为plone.app.discussion添加了对灵巧类型的支持,所以只要有新版本,你就不需要再自定义会话类了:

https://github.com/plone/plone.app.discussion/commit/0e587a7d8536125acdd3bd385e880b60d6aec28e

请注意,此方法支持对文件夹对象进行注释。没有支持在文件夹对象中启用/禁用对象的注释。

如果您希望能够使用行为字段/小部件打开/关闭评论:

https://github.com/plone/plone.app.dexterity/commit/0573df4f265a39da9efae44e605e3815729457d7

这有望进入下一个plone.app.dexterity版本。

答案 3 :(得分:1)

我在configure.zcml中解决了:

<interface interface="Products.CMFPlone.interfaces.INonStructuralFolder" />

<class class="Products.PloneHelpCenter.types.Definition.HelpCenterDefinition">
  <implements interface="Products.CMFPlone.interfaces.INonStructuralFolder" />
</class>

更新:这不是一个好主意。我遇到了缺少具有此修复程序的每种内容类型的“添加”菜单的问题。