Utilizzando il documentation su plone.org e alcuni nel forum, sono riuscito a ottenere un gestore di portlet personalizzato sotto il mio contenuto in Plone 4.0.8. L'obiettivo, in realtà, è avere 4 gestori personalizzati sotto il contenuto disposti come il dashboard.Come aggiungere portlet stock (da plone.app.portlets) al mio gestore portlet personalizzato?
In ogni caso, il mio gestore mi consente solo di aggiungere portlet statici e di raccolta. Dopo aver cercato nel codice, ho scoperto che quando il sistema va a popolare il menu a discesa "Aggiungi nuovo portlet", scorre su tutti i portlet. Quindi, esegue il ciclo di controllo degli attributi 'for_' di ogni portlet per verificare se le interfacce sono fornite da self-my portlet manager.
def getAddablePortletTypes(self):
addable = []
for p in getUtilitiesFor(IPortletType):
# BBB - first condition, because starting with Plone 3.1
#every p[1].for_ should be a list
if not isinstance(p[1].for_, list):
logger.warning("Deprecation Warning ..." % p[1].addview)
if p[1].for_ is None or p[1].for_.providedBy(self):
addable.append(p[1])
elif [i for i in p[1].for_ if i.providedBy(self)]:
addable.append(p[1])
return addable
Come si aggiunge l'interfaccia del mio gestore all'elenco di interfacce 'for_' di ogni portlet?
ho cambiato l'interfaccia di mio manager da classe 'IBottomPortletManager (IPortletManager)' a classe 'IBottomPortletManager (IPortletManager, iColumn)' iColumn è definito in plone.app.portlets, così quei portlet è già registrato per manager che forniscono IColumn. Ora, questo è il modo ideale per farlo? – Travv15