如何从"站点设置 - 附加配置"中删除Configlet。

时间:2014-03-26 20:34:28

标签: plone

我正在弃用Site Setup附加组件。我正在遵循的过程是将remove =“true”属性添加到controlpanel.xml

<!-- profiles/default/controlpanel.xml -->
<configlet
    title="MyConfiglet" ...
    remove="true">
        <permission>Manage portal</permission>
</configlet>

然后执行upgradeStep。我试过

<!-- upgrades/configure.zcml -->
<genericsetup:upgradeSteps ...>
  <genericsetup:upgradeDepends
      title="Remove Configlet"
      import_steps="plone.app.registry controlpanel"
      />
</genericsetup:upgradeSteps>

但是在执行升级步骤后,我仍然可以在/@@ overview-controlpanel中看到configlet。

我错过了什么?从控制面板中删除configlet需要什么?

感谢。

1 个答案:

答案 0 :(得分:3)

从Plone中删除某些内容的过程或多或少与您添加它的步骤相同;在这种特定情况下,您有两种方法:以编程方式或使用Generic Setup。

编程

我认为这更容易,因为只涉及几行代码,您可以在出现问题时进行调试。

在升级步骤中使用以下代码:

def remove_configlet(self):
    from plone import api
    config_tool = api.portal.get_tool('portal_controlpanel')
    configlet_id = 'MyConfigletId'
    config_tool.unregisterConfiglet(configlet_id)

使用Generic Setup

在您为升级步骤注册的个人资料中创建一个controlpanel.xml文件;此文件应包含与添加configlet 加上 remove="True"属性完全相同的内容。

您可以在Products.TinyMCE的upgrade_10_to_11个人资料中找到相关的工作示例:

<?xml version="1.0"?>
<object name="portal_controlpanel" meta_type="Plone Control Panel Tool"
    xmlns:i18n="http://xml.zope.org/namespaces/i18n" i18n:domain="plone.tinymce">

    <configlet title="TinyMCE"
        action_id="tinymce" appId="TinyMCE"
        category="Products"
        condition_expr=""
        url_expr="string:${portal_url}/portal_tinymce/@@tinymce-controlpanel"
        visible="True"
        i18n:attributes="title"
        remove="True">
        <permission>Manage portal</permission>
    </configlet>
    ...    
</object>
def upgrade_10_to_11(setuptool):
    """Upgrade TinyMCE from 1.0 to 1.1"""
    ...
    # Unregister old js and register new js
    setuptool.runAllImportStepsFromProfile('profile-Products.TinyMCE:upgrade_10_to_11')

如有疑问,请查看Luca Fabbri关于How to make your Plone add-on products uninstall cleanly的优秀博客文章。