def refreshPortlet(self, portlethash, **kw): # put parameters on the request, by saving the original context self.request.form, orig_form = kw, self.request.form # Prepare the portlet and render the data info = unhashPortletInfo(portlethash) manager = getUtility(IPortletManager, info['manager']) assignment = assignment_from_key(context = self.context, manager_name = info['manager'], category = info['category'], key = info['key'], name = info['name']) renderer = getMultiAdapter( (self.context, self.request, self.view, manager, assignment.data), IPortletRenderer ) renderer = renderer.__of__(self.context) renderer.update() if IDeferredPortletRenderer.providedBy(renderer): # if this is a deferred load, prepare now the data renderer.deferred_update() result = renderer.render() # Revert the original request self.request.form = orig_form # Command the replacement wrapper_id = 'portletwrapper-%s' % portlethash ksscore = self.getCommandSet('core') ksscore.replaceInnerHTML(ksscore.getHtmlIdSelector(wrapper_id), result)
def __call__(self): """Return the rendered contents of the portlet specified.""" # portletHash is built into plone.portlets.utils.hashPortletInfo # like this: # concat_txt = '%(manager)s\n%(category)s\n%(key)s\n%(name)s' % info portlethash = self.data.get('portlet_hash') # Prepare the portlet and render the data info = unhashPortletInfo(portlethash) manager = getUtility(IPortletManager, info['manager']) assignment = assignment_from_key(context=self.context, manager_name=info['manager'], category=info['category'], key=info['key'], name=info['name']) renderer = getMultiAdapter( (self.context, self.request, self, manager, assignment.data), IPortletRenderer) renderer = renderer.__of__(self.context) # This is required by some portlets and not set by # the 'portlet-renderer' helper view: renderer.__portlet_metadata__ = info renderer.update() if IDeferredPortletRenderer.providedBy(renderer): # if this is a deferred load, prepare now the data renderer.deferred_update() return u"<html><body>%s</body></html>" % renderer.render()
def reloadPortletByInfo(self, info): renderer = info['renderer'] renderer.update() if IDeferredPortletRenderer.providedBy(renderer): # if this is a deferred load, prepare now the data renderer.deferred_update() portlethash = info['hash'] wrapper_id = 'portletwrapper-%s' % portlethash ksscore = self.view.getCommandSet('core') if info['available']: result = renderer.render() ksscore.replaceInnerHTML(ksscore.getHtmlIdSelector(wrapper_id), result, withKssSetup='False') else: # unavailable portlets are removed # manage case portlet lose its availability during kss action ksscore.deleteNode(ksscore.getHtmlIdSelector(wrapper_id))
def render_portlet(self, portlethash, **kw): # Prepare the portlet and render the data info = unhashPortletInfo(portlethash) manager = getUtility(IPortletManager, info['manager']) assignment = assignment_from_key(context=self.context, manager_name=info['manager'], category=info['category'], key=info['key'], name=info['name']) renderer = getMultiAdapter( (self.context, self.request, self, manager, assignment.data), IPortletRenderer) renderer = renderer.__of__(self.context) renderer.update() if IDeferredPortletRenderer.providedBy(renderer): # if this is a deferred load, prepare now the data renderer.deferred_update() return renderer.render()
def render_portlet(self, portlethash, **kw): # Prepare the portlet and render the data info = unhashPortletInfo(portlethash) manager = getUtility(IPortletManager, info["manager"]) assignment = assignment_from_key( context=self.context, manager_name=info["manager"], category=info["category"], key=info["key"], name=info["name"], ) renderer = getMultiAdapter((self.context, self.request, self, manager, assignment.data), IPortletRenderer) renderer = renderer.__of__(self.context) renderer.update() if IDeferredPortletRenderer.providedBy(renderer): # if this is a deferred load, prepare now the data renderer.deferred_update() return renderer.render()