6

我一直在研究基于灵巧的克隆应用程序。我创建了几个新类型。这是我为激活对名为“activity_report”的特定敏捷内容类型的评论所做的:

在克隆控制面板中

讨论部分,我启用了以下功能:

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

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

在文件系统上

在 FTI 文件 activityreport.xml 中:

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

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

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

有什么我想念的吗?

4

4 回答 4

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。

于 2012-05-02T00:19:33.580 回答
2

大卫的反应是不准确的。要猴子补丁的类是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。但是,感谢大卫的提示。

于 2012-07-04T10:44:55.850 回答
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 版本。

于 2012-07-05T10:44:15.757 回答
1

我在configure.zcml中解决了:

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

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

更新:这不是一个好主意。对于具有此修复的每种内容类型,我都缺少添加菜单的问题。

于 2015-06-24T08:32:26.143 回答