Carsten Ziegeler wrote:

Ralph Goers wrote:
And how would this look with three nav levels and a portlet url and the fullscreen event?
http://my.great.portal.com/main/MAINTAB/sub1/SUBITEM/sub2/SUBITEM2/page/index.html?cocoon-portal-fs=X
FWIW, this is missing the PortletURLProviderEvent (I probably wasn't clear when I said portlet url).

With page labels this is http://my.great.portal.com/portal?pageLabel=MAINTAB.SUBITEM.SUBITEM2&javax.portlet.events=cocoon-portal-fs(X)&javax.portlet.events=url(portlet-data)

Also, I thought you were proposing adding the events to the url as well? If you are not, then I believe all we are discussing is whether nav items are in the url or in a request parameter. That just becomes a question of which we think is "prettier". Under the covers the implementation has to be pretty similar. IMO, which isn't worth much in this case, the url you provided above is kind of ugly. Also, what is the page/index.html about?


I still don't understand why you want to do this. All the plumbing is there now.
Not exactly :) All I want is that I'm able to add the information to the
path of the url
and not as request parameters - and this only for some events where it
makes sense.

Now, to be honest I don't know what the best approach is, but most of
the portal users I know want "nice" urls so they can link from outside
the portal to some content inside the portal. And they don't want to use
request parameters for that :(
Why? The folks I work with are pretty sharp (I admit, a lot more educated than me when it comes to designing web sites - I'm a framework guy), and they were quite happy with that.

We talked a while ago about getting rid off the cocoon-portal-event
parameter with the event number and use a "serialized" information (with
the factory approach you mentioned), perhaps we should first have a look
into that again?
My approach was to use convertable events. The issue is that we currently allow events to be created in one request and retrieved in another. This just isn't really possible with a fully "serialized" approach. You always have to "remember" something, which isn't a problem, and then delete it when it isn't needed any more (which we almost never know).

On a similar subject, can you please explain what the marshalling of the
events does? (I think you explained it already, but I can't remember; a
link would be fine as well).
Marshalling does exactly what we have been talking about. If marshalling is not enabled than the events show up in the request with request ids as you are used to. If marshalling is enabled then any convertable events appear in the request in their serialized form (see the example I gave above). To create new Convertable events you just need to implement the Convertable interface on an event, create a factory for the event and then add the factory class name and the event "name" to the list in the ConvertableEventAspectSelector. Events are always created as request parameters of the form "javax.portlet.events=name(event data)".

Thanks
Carsten
Ralph

Reply via email to