> Alex Romayev wrote: >> >> I've posted this on the users list a few days ago, but >> got no replies, so I'm re-posing it here, especially >> hoping to get Carsten's attention. > :) Must have missed it...
me toooo, sorry I am not reading the users list in the moment, not enough time :-( <snip /> >> >> 2. Layout >> >> I've noticed that you are changing the layout >> configuration, which is definitely a welcome change. >> The column layout worked fine, but was even behind >> WebLogic/WebSpere portals, which at least allow >> spanning columns. However, I find even the spanning >> design very limiting. > It's only a demo and can be improved/customized :) The current design of the existing layout/renderer objects allows to model the portal as descibed in the current XFrames spec. http://www.w3.org/TR/xframes/ the current impl. allows spanning of columns, ok not as a colspan parameter of the layout element. But you can do something like. <composite-layout name="column"> <item> <parameter name="colSpan" value="2" /> <content of the item ...> </item> </composite-layout> the parameter colSpan is automatic add as an attribute to the item element, so you can use this information in the column-stylesheet to render the column. Another solution is to plugin additional Layout/Renderer Objects with the functionality you want. You can write your own renderer or configure your own renderer using the existing AspectRenderer implementation as an composition of different rendering aspects. In the following example (copied from cocoon.xconf) you can see the configuration of the current window Renderer. The Renderer itself is split into different rendering aspects. If you remove the "<aspect type="coplet-removing"/>" the remove-image is removed from the coplet-window, now the coplet cannot be removed any longer..... same for sizing/full-screen. <renderer class ="org.apache.cocoon.portal.layout.renderer.impl.AspectRenderer" logger="portal" name="window"> <aspects> <aspect type="xslt"> <parameter name="style" value="{global:skin}styles/window.xsl"/> </aspect> <aspect type="window"> <parameter name="tag-name" value="window"/> </aspect> <aspect type="coplet-removing"/> <aspect type="coplet-full-screen"/> <aspect type="coplet-sizing"/> <aspect type="coplet-cinclude"/> </aspects> </renderer> As you can see in the current example portal, the row and column renderer uses the same AspectRenderer implementation using a diffent xslt-aspect configuration. So you can add additional renderer-functionality by configure different AspectRenderers, writing your own renderer aspect (org.apache.cocoon.portal.layout.renderer.aspect.RendererAspector Interface) or a new renderer object (see org.apache.cocoon.portal.layout.renderer.Renderer Interface). Our major design goal of the new engine was, that everything is pluggable and expandable. This includes layout objects, renderering and event handling. You are welcome extending the current functionality ;-) Volker
