cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From volker.schm...@basf-it-services.com
Subject Antwort: RE: The new portal framework: questions and thoughts
Date Wed, 02 Jul 2003 20:37:10 GMT


> 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








Mime
View raw message