2011-06-19 9 views
5

Próbuję naprawić nawigację w miesiącu dla portletu kalendarza przypisanego do niestandardowego menedżera portletów. Ten menedżer jest wywoływana z określonego szablonu strony przeglądarka z:Jak uzyskać klasę css dla mieszania portletów dla portletu kalendarza przypisanego do niestandardowego menedżera portletów?

<div id="calendar" 
    tal:content="structure provider:my.custom.portletmanager" /> 

Niestety kierownik nie czyni owijkę z hash dla mnie, więc staram się ręcznie dołączyć kssattr-portlethash css klasa do powyższego tagu <div>, aby nawigacja w miesiącu działała (refreshPortlet() tego potrzebuje). Próbowałem to:

from plone.portlets.utils import hashPortletInfo 
class SectionHomeView(BrowserView): 
    """SectionHome browser view 
    """ 
    implements(ISectionHomeView) 

    def __init__(self, context, request): 
     self.context = context 
     self.request = request 

    @property 
    def getHash(self): 
     info = dict(manager = 'my.custom.portletmanager', 
        category = 'context', 
        key = '/my-section', 
        name = 'mycalendar', 
        ) 
     return hashPortletInfo(info) 

Za pomocą tego kodu Ja rozumiem hash, ale nawigacja kalendarz nadal nie działa. Jak uzyskać dostęp do informacji o portlecie, takich jak menedżer, kategoria, klucz i nazwisko w celu ich obliczenia w prawo?

Chciałbym mieć zachowanie opisane przez column.pt z plone.app.portlets.browser.templates i swojej klasie ColumnPortletManagerRenderer (portletom/manager.py), ale nie wiem wiem, jak sprawić, by mój menedżer niestandardowy zapewniał takie (tj. jak robią to domyślni menedżerowie).

+0

można zapewnić pewne kod, aby dać nam wskazówkę, gdzie możesz Ci pomóc? – marcosfromero

Odpowiedz

4

Musisz upewnić się, że masz PortletManagerRenderer i EditPortletManagerRenderer zainstalowane że wiem do renderowania skrótów, takich jak:

class MyCustomPortletManagerRenderer(ColumnPortletManagerRenderer) : 
    """ This custom version of ColumnPortletManagerRenderer points to a new 
    template so that HTML can be customised. 
    """ 
    adapts(Interface, IThemeSpecific, IBrowserView, IMyCustomPortletManager) 
    template = ViewPageTemplateFile('column.pt') 

    def can_manage_portlets(self): 
     context = self._context() 
     if not ILocalPortletAssignable.providedBy(context): 
      return False 
     mtool = getToolByName(context, 'portal_membership') 
     return mtool.checkPermission("Portlets: Manage portlets", context) 

class MyCustomEditPortletManagerRenderer(ContextualEditPortletManagerRenderer): 
    """To allow edit support of the above. 
    """ 
    adapts(Interface, IThemeSpecific, IManageContextualPortletsView, IMyCustomPortletManager) 
    template = ViewPageTemplateFile('edit-column.pt') 

Gdzie column.pt wygląda następująco:

<tal:block repeat="portlet options/portlets"> 
<div tal:attributes="class string:portletWrapper kssattr-portlethash-${portlet/hash};" 
    tal:content="structure python:view.safe_render(portlet['renderer'])" /> 
</tal:block> 
Powiązane problemy