Skip to content

PloneControlpanel should use extended expression context provided by PloneBaseTool #3288

@thomasmassmann

Description

@thomasmassmann

PROBLEM REPORT

The PloneControlpanel uses the standard expression context provided by Products.CMFCore.Expression.createExprContext. The available keys are:

    data = {
        'object_url':   object_url,
        'folder_url':   folder.absolute_url(),
        'portal_url':   portal.absolute_url(),
        'object':       object,
        'folder':       folder,
        'portal':       portal,
        'nothing':      None,
        'request':      getattr(portal, 'REQUEST', None),
        'modules':      SecureModuleImporter,
        'member':       member,
        'here':         object,
        }

This is limiting the available actions and conditions in situations where a different navigation root other than the Plone site is used (e.g. multi-lingual sites, sub sites using lineage).

The PloneBaseTool already extends the expression context with new keys:

  • plone_portal_state
  • plone_context_state
  • plone_tools
  • checkPermission
  • context

Other tools, such as the ActionsTool, use the extended expression context.

What I did:

Change the “Action” for the site control panel configlet from string:${portal_url}/@@site-controlpanel to string:${plone_portal_state/navigation_root_url}/@@site-controlpanel

What I expect to happen:

The @@overview-controlpanel view renders the site configlet with the portal url.

What actually happened:

A traceback with:

KeyError: 'plone_portal_state'

What version of Plone/ Addons I am using:

Plone 5.2.4 without any add-ons.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions