3

在当前的 Plone 5 coredev buildout 中,我正在尝试为在 cssregistry.xml 中注册一些 css 的附加组件编写 GenericSetup 卸载配置文件。在 Plone 5 中,portal_css 和 portal_javascripts 是空的,所有这些资源现在都自动加载到资源注册表中。但是没有相应的卸载。如果我有一个 css 资源,我会在资源注册表中获得以下记录:

  <record name="plone.resources/resource-myaddon-stylesheets.conf">...</record>
  <record name="plone.resources/resource-myaddon-stylesheets.css">...</record>
  <record name="plone.resources/resource-myaddon-stylesheets.deps">...</record>
  <record name="plone.resources/resource-myaddon-stylesheets.export">...</record>
  <record name="plone.resources/resource-myaddon-stylesheets.init">...</record>
  <record name="plone.resources/resource-myaddon-stylesheets.js">...</record>
  <record name="plone.resources/resource-myaddon-stylesheets.url">...</record>

(即使我没有 js 资源,我也得到了所有这些,并且它们都有一个空值,除了 css 记录。)

此外,<element>以下记录中还有一个新的:

<record name="plone.bundles/plone-legacy.resources" interface="Products.CMFPlone.interfaces.resources.IBundleRegistry" field="resources">

    ...

    <value>
      ...
      <element>resource-myaddon-stylesheets</element>
    </value>
</record>

当我创建我的 GS 卸载配置文件时,删除 registry.xml 中的前 7 条记录非常简单。但是如何<element>从后一张唱片中删除单曲?我查看了 plone.app.registry 中的测试,但似乎没有涵盖删除元素。

最终,如果可以像安装一样自动处理卸载,那就太好了。

4

2 回答 2

3

似乎解决方法是将这样的内容添加到 Extensions/Install.py:

def _removeBundleFromRegistry():
    logger.info('Removing bundle reference from registry')

    record = 'plone.bundles/plone-legacy.resources'
    resources = api.portal.get_registry_record(record)
    if u'resource-myaddon-stylesheets' in resources:
        resources.remove(u'resource-myaddon-stylesheets')

def uninstall(portal, reinstall=False):
    if not reinstall:
        ...
        _removeBundleFromRegistry()
        ...

太糟糕了。

于 2014-11-16T21:22:45.887 回答
0

你必须使用这样的东西:

<record name="plone.bundles/plone-legacy.resources" interface="Products.CMFPlone.interfaces.resources.IBundleRegistry" field="resources">
  <value purge="false">
    <element remove="true">resource-myaddon-stylesheets</element>
  </value>
</record>

您可以在brasil.gov.paginadestaque包的卸载配置文件中看到一个工作示例。

于 2014-11-15T22:10:12.903 回答