1

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

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

我对好的 ole Google 没有任何运气,在这里的任何地方都找不到这个问题,所以我希望这不是一个骗局。谢谢!

4

2 回答 2

1

我能够通过创建一个新脚本、导入getToolByName和检查当前内容类型来实现这个工作portal_repository.getVersionableContentTypes()。然后将该脚本包含在条件中。

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

于 2014-07-11T19:36:47.580 回答
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.
    """

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

context.portal_interface.objectImplements(context, 
                                          'plone.app.iterate.interfaces.IIterateAware')
于 2014-07-12T08:01:31.267 回答