Hello Developers,

Just got back from the mmcf weekend and I have a component block which shows up in a portlet. The only thing I have to solve is the urls in the component block. It did sound easy: jsut implement the Framework interface. I tried to do that, but I turns out that I don't have any control over the argumenta of the Framework.getBlockUrl(). The componentName is "core" which has JspRenderers. My code in the Portlet to start render the block.

Component component = ComponentRepository.getInstance().getComponent(componentName);
           String blockname = req.getParameter(BLOCK);
           Block block;
           if (!StringUtil.isEmpty(blockname)) {
               block = component.getDefaultBlock();
           }
           else {
               block = component.getBlock(blockname);
           }

               Renderer.WindowState state;
               if (req.getWindowState() == WindowState.MAXIMIZED) {
                   state = Renderer.WindowState.MAXIMIZED;
               }
               else {
                   if (req.getWindowState() == WindowState.MINIMIZED) {
                       state = Renderer.WindowState.MINIMIZED;
                   }
                   else {
                       state = Renderer.WindowState.NORMAL;
                   }
               }

               Parameters blockParameters = block.createParameters();
blockParameters.set(Parameter.REQUEST, (javax.servlet.http.HttpServletRequest)req); blockParameters.set(Parameter.RESPONSE, (javax.servlet.http.HttpServletResponse)res);

Parameters frameworkParameters = MMBase.getMMBase().getFramework().createFrameworkParameters(); frameworkParameters.set(MMBaseFramework.PORTLETREQUEST, req); frameworkParameters.set(MMBaseFramework.PORTLETRESPONSE, res);
               frameworkParameters.set("component", componentName);
               frameworkParameters.set("block", blockname);
try { Renderer renderer = block.getRenderer(Renderer.Type.BODY);
                   req.setAttribute(Renderer.KEY, renderer);
// None of these parameters are passed into Framework.getBlockUrl() renderer.render(blockParameters, frameworkParameters, res.getWriter(), state);
               }
               catch (FrameworkException e) {
                   throw new PortletException(e);
               }

Regards,

Nico
_______________________________________________
Developers mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/developers

Reply via email to