默认情况下,在plone中阻止上下文portlet

时间:2010-08-24 16:47:21

标签: portlet plone

我有一个自定义的portlet管理器,我希望默认情况下将黑名单(也称为块)上下文(也称为父)portlet。我发现了一些方法,但它们要么需要一个特定的位置(所以不是整个网站),要么只有当我在定义portlet管理器的不同包中时才能工作(在portlets.xml之前运行setuphanders.py)导入,因此portlet管理器还不存在),这不是跑步者。

我真正想做的是在portlets.xml中使用genericSetup黑名单语法,并使用'*'作为这样的位置:

<blacklist
  manager="custom.portletmanager"
  location="*"
  category="context"
  status="block"
  />

但是,唉,这似乎不起作用。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

也许您可以覆盖portlet的某些权限(可能在overrides.zcml中),需要不存在的权限?

或者,有一个z3c.unconfigure包可以完全取消注册portlet。

答案 1 :(得分:0)

迟到总比没有好,也许:在你的PortletManager的__init _ _中使用它将继承的默认值设置为false,但你仍然可以覆盖它TTW。 (这种方法没有扩展到其他两个东西,它们已经具有“块/显示/继承”的三元语​​义,所以我们无法区分默认值和用户设置值,并且每次调用__init _ _ 。)

def __init__(self, context, request, view, manager):

    ColumnPortletManagerRenderer.__init__(self, context, request, view, manager)
    assignable = getMultiAdapter((self.context, self.manager,), 
                                 ILocalPortletAssignmentManager)
    if assignable.getBlacklistStatus(CONTEXT_CATEGORY)==None:
        # hack: for CONTEXT, it's a binary flag.
        # Nevertheless, getBlacklistStatus returns ternary True/False/None.
        # None should be the creation default.
        assignable.setBlacklistStatus(CONTEXT_CATEGORY, True)