Używając documentation na plone.org wraz z niektórymi na forum, udało mi się uzyskać niestandardowy menedżer portletów poniżej moich treści w Plone 4.0.8. Celem jest posiadanie 4 niestandardowych menedżerów poniżej zawartości ułożonej tak, jak na desce rozdzielczej.Jak dodać portlety giełdowe (z pliku plone.app.portlets) do mojego niestandardowego menedżera portletów?
W każdym razie mój menedżer pozwala mi tylko dodawać portlety statyczne i kolekcji. Po rozejrzeniu się w kodzie, stwierdziłem, że kiedy system zapełni menu rozwijane "Dodaj nowy portlet", przejdzie przez wszystkie portlety. Następnie przechodzi przez atrybuty "for_" każdego portletu, sprawdzając, czy interfejsy są dostarczane przez 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
Jak dodać interfejs mojego menedżera do listy "for_" każdego portletu?
Zmieniłem interfejs mojego menedżera z 'klasa IBottomPortletManager (IPortletManager)' do 'klasa IBottomPortletManager (IPortletManager, iColumn)' iColumn jest zdefiniowana w plone.app.portlets, więc te portletów już zarejestrowany menedżerów, którzy zapewniają IColumn. Czy to jest idealny sposób na zrobienie tego? – Travv15