Plone条件 - 如果内容类型是可版本的

时间:2014-07-11 19:13:46

标签: plone plone-4.x

是否有一种简单的方法可以检查内容类型或特定对象是否在Plone(4.3.2)中启用/禁用了版本控制?

对于上下文,我正在围绕portal_actions创建一些独特的条件。因此,我需要先查看版本控制是否已启用,而不是检查path('object/@@iterate_control').checkout_allowed()。否则,对于禁用了版本控制的项目,不会显示有问题的操作,因为很明显它不是checkout_allowed。

我和好的谷歌没有任何运气,在这里找不到这个问题,所以我希望这不是一个骗局。谢谢!

2 个答案:

答案 0 :(得分:1)

我能够通过创建新脚本,导入getToolByName并针对portal_repository.getVersionableContentTypes()检查当前内容类型来实现此目的。然后只是在条件中包含该脚本。

我一直在寻找已经存在的类似东西,所以如果有人知道,那就让我知道。否则,我现在有了自己的。再次感谢!

答案 1 :(得分:0)

checkout_allowed做的第一件事就是检查有问题的对象是否支持版本控制:

if not interfaces.IIterateAware.providedBy(context):
        return False

(界面为plone.app.iterate.interfaces.IIterateAware

class IIterateAware( Interface ):
    """An object that can be used for check-in/check-out operations.
    """

在条件或TAL脚本中使用语义Interface.providedBy(instance)有点不幸,因为你需要导入接口,但是有一个反转助手:

context.portal_interface.objectImplements(context, 
                                          'plone.app.iterate.interfaces.IIterateAware')