我正在弃用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需要什么?
感谢。
答案 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)
在您为升级步骤注册的个人资料中创建一个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的优秀博客文章。