Ticket #7703 (closed Bug: fixed)
easy use of plone:portletRenderer with implicit attributes
| Reported by: | alexg | Owned by: | optilude |
|---|---|---|---|
| Priority: | minor | Milestone: | 3.1 |
| Component: | Infrastructure | Keywords: | portletRenderer portlet renderer |
| Cc: |
Description
When using plone:portletRenderer mandatory attributes are portlet, and one of template / class.
So one except to overrides login portlet renderer using eg. :
<plone:portletRenderer
portlet="plone.app.portlets.portlets.login.ILoginPortlet"
class=".plone_overrides.LoginRenderer"/>
but as it is done for the moment, you have to write :
<plone:portletRenderer
portlet="plone.app.portlets.portlets.login.ILoginPortlet"
class=".plone_overrides.LoginRenderer"
for="zope.interface.Interface"
layer="zope.publisher.interfaces.browser.IDefaultBrowserLayer"
view="zope.publisher.interfaces.browser.IBrowserView"
manager="plone.portlets.interfaces.IPortletManager"
/>
because values which are not implicit are set to None in the created adapter.
To solve this problem in plone/app/portlets/metaconfigure.py
def portletRendererDirective(_context, portlet, class_=None, template=None,
for_=None, layer=None, view=None, manager=None):
should be
def portletRendererDirective(_context, portlet, class_=None, template=None,
for_=Interface, layer=IDefaultBrowserLayer, view=IBrowserView, manager=IPortletManager,):
Change History
comment:1 Changed 4 years ago by optilude
- Status changed from new to closed
- Resolution set to invalid
comment:2 Changed 4 years ago by alexg
- Status changed from closed to reopened
- Resolution invalid deleted
I retest it and it is as I said, even adding the layer (zope.publisher.interfaces.browser.IDefaultBrowserLayer)
In my case what I want to do is overide plone login portlet.
If the created adapter is created with None values it is less specific than the adapter of Plone login portlet, that may be why plone get the original plone login portlet and not mine.
In the case you show me, a different layer is declared, so adaptation won't confuse.

Are you absolutely sure about this? The values of None should just filter through and work, as far as I can tell. This code works, at least: https://dev.plone.org/collective/browser/examples/example.customization/trunk/example/customization/browser/configure.zcml#L66.
Please re-open if you can give me a case where it definitely fails.