jdinunzio
jdinunzio

Reputation: 1608

How to Remove Configlet from "Site Setup - Add-on Configuration"

I'm deprecating a Site Setup add-on configlet. The procedure I'm following is add the remove="true" property to controlpanel.xml

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

and then execute an upgradeStep. I tried with

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

But after executing the upgrade step, I still can see the configlet in /@@overview-controlpanel.

What am I missing? What do I need to remove the configlet from the control panel?

Thanks.

Upvotes: 1

Views: 289

Answers (1)

hvelarde
hvelarde

Reputation: 2876

The process of removing something from Plone involves more or less the same steps you used to add it; in this specific case you have two ways of doing it: programmatically or using Generic Setup.

programmatically

I think this is easier as involves no more than a few lines of code and you can debug in case of problems.

just use the following code on your upgrade step:

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

using Generic Setup

create a controlpanel.xml file inside the profile you're registering for your upgrade step; this file should contain exactly the same stuff used to add the configlet plus the remove="True" attribute.

you can find a working example of this on the upgrade_10_to_11 profile of 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')

in case of doubts take a look at Luca Fabbri's excelent blog post on How to make your Plone add-on products uninstall cleanly.

Upvotes: 3

Related Questions