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()
Exemple #3
0
    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))
Exemple #4
0
    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()
Exemple #5
0
    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()