我不推荐使用站点设置附加的configlet。我所遵循的过程是将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>但是,在执行升级步骤之后,我仍然可以在/@@概括-控制面板中看到configlet。
我遗漏了什么?从控制面板中删除configlet需要什么?
谢谢。
发布于 2014-03-26 22:33:44
从Plone中删除某物的过程或多或少涉及添加它的相同步骤;在这种特殊情况下,您有两种方法:以编程方式或使用泛型设置。
以编程方式
我认为这更容易,因为只涉及几行代码,您可以在出现问题时进行调试。
只需在升级步骤中使用以下代码:
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"属性完全相同的内容。
您可以在upgrade_10_to_11配置文件Products.TinyMCE上找到这方面的一个工作示例:
<?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')如果有疑问,请看一下卢卡·法布里在如何使您的Plone附加产品卸载干净上的精彩博客文章。
https://stackoverflow.com/questions/22672464
复制相似问题