【问题标题】:Blocking contextual portlet by default in plone在 plone 中默认阻止上下文 portlet
【发布时间】:2011-04-03 07:07:51
【问题描述】:

我有一个自定义的 Portlet 管理器,我想默认将(又名块)上下文(又名父级)Portlet 列入黑名单。我找到了几种方法,但它们要么需要特定的位置(因此不是整个站点),要么仅在我位于与定义 portlet 管理器的位置不同的包中时才有效(setuphanders.py 在 portlets.xml 之前运行)导入,因此 portlet 管理器还不存在),它不是运行器。

我真正想做的是在 portlets.xml 中使用 genericSetup 黑名单语法,并在如下位置使用“*”:

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

但是,唉,这似乎行不通。有什么建议吗?

【问题讨论】:

    标签: portlet plone


    【解决方案1】:

    迟到总比没有好,也许:在 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)
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2015-08-18
        • 1970-01-01
        • 1970-01-01
        • 2015-06-20
        • 1970-01-01
        • 1970-01-01
        • 2019-10-01
        • 2013-12-07
        • 2011-08-01
        相关资源
        最近更新 更多