cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alex Romayev <roma...@yahoo.com>
Subject RE: [portal] Tab navigation
Date Fri, 30 Jan 2004 15:08:19 GMT
OK, I'll take a look, see if I can figure it out.

So is the intention to be able to use store="request"
in the future?

Also, what about the back button?  Clicking the back
button breaks tab navigation.  Is this a bug?

Thanks,
-Alex

--- Carsten Ziegeler <cziegeler@s-und-n.de> wrote:
> Ok, my fault, sorry - I was wrong, it doesn't work
> this way :(
> 
> I currently don't have the time to give you much
> more details, but
> I guess, you have to do it in a different way, like
> this:
> 
> Every change in the portal is notified by an event.
> You can subscribe
> for events and "listen" what is going on.
> Now, you can register your own event listener for
> tab changes. This
> listener knows all your tabs and resets the state of
> all sub tabs
> if the main tab selection changes.
> 
> If someone else has a better idea, let us know.
> 
> HTH
> Carsten
> 
> > -----Original Message-----
> > From: Alex Romayev [mailto:romayev@yahoo.com]
> > Sent: Thursday, January 29, 2004 6:23 PM
> > To: dev@cocoon.apache.org
> > Subject: RE: [portal] Tab navigation
> > 
> > 
> > I also tried changing the "store" parameter in
> "tab"
> > configuration itself -- one word change, less room
> for
> > error.  I then tested the sample portal -- it
> still
> > did not work.
> > 
> > Hope this helps,
> > -Alex
> > 
> > --- Alex Romayev <romayev@yahoo.com> wrote:
> > > Hi Carsten,
> > > 
> > > Unfortunately none of them worked :-(
> > > 
> > > I first tried fixing the back button, which
> seems
> > > like
> > > a simple change, however it still behaved the
> same
> > > way.  Is there anything wrong with my syntax?
> > > 
> > > With the tab I followed your steps, however it
> > > appears
> > > that they don't have any effect on the portal. 
> Any
> > > other ideas?
> > > 
> > > Thanks,
> > > -Alex
> > > 
> > > --- Carsten Ziegeler <cziegeler@s-und-n.de>
> wrote:
> > > > Alex Romayev wrote:
> > > > >
> > > > > Hi Carsten,
> > > > >
> > > > > I'm ready for the "portal configuration
> hell",
> > > if
> > > > you
> > > > > can lead me through it ;-)
> > > > >
> > > > To be honest, I don't know if it works, but
> it's
> > > > worth a try :)
> > > > 
> > > > Ok, here is a brief description:
> > > > Creating a different tab (stateless), means
> > > creating
> > > > a new renderer
> > > > for a tab. You will find this somewhere in the
> > > > cocoon.xconf:
> > > >      <renderer
> > > >
> > >
> >
>
class="org.apache.cocoon.portal.layout.renderer.impl.AspectRenderer"
> > > > logger="portal" name="tab">
> > > >          <aspects>
> > > >              <aspect type="xslt">
> > > >                  <parameter name="style"
> > > > value="{global:skin}styles/tab.xsl"/>
> > > >              </aspect>
> > > >              <aspect type="parameter">
> > > >                  <parameter name="tag-name"
> > > > value="tab-layout"/>
> > > >              </aspect>
> > > >              <aspect type="history"/>
> > > >              <aspect type="tab-content">
> > > >                  <parameter name="root-tag"
> > > > value="false"/>
> > > >                  <parameter name="store"
> > > > value="session"/>
> > > >              </aspect>
> > > >          </aspects>
> > > >      </renderer>
> > > > Copy this and change the name "tab" in the
> first
> > > > line to whatever you want.
> > > > Change the "store" configuration for the
> > > > "tab-content" to "request".
> > > > Now, you have to register this renderer in the
> > > > layout factory:
> > > >         <layout
> > > >
> > >
> >
>
class="org.apache.cocoon.portal.layout.impl.CompositeLayout"
> > > > name="tab">
> > > >             <renderers default="tab">
> > > >                 <renderer name="tab"/>
> > > >             </renderers>
> > > >         </layout>
> > > > Add a new entry
> > > > <renderer name="YOUR NEW TAB NAME"/> inside
> the
> > > > renderers section.
> > > > 
> > > > Now, you have an alternative renderer for a
> tab
> > > > layout object.
> > > > 
> > > > Last thing is to use this renderer. Go into
> your
> > > > layout.xml, to the
> > > > stateless
> > > > tab definition and configure the stateless tab
> to
> > > > use the new renderer:
> > > > <composite-layout name="tab" id="stateless"
> > > > default-renderer-name="YOUR NEW
> > > > TAB NAME">
> > > > 
> > > > So, in theory, this is it - if I didn't forget
> > > > anything.
> > > > Now the basic idea is to say, the main tab
> > > > (stateful) uses a session to
> > > > store the
> > > > state of a tab. The stateless instead uses the
> > > > request (one req-res cycle)
> > > > to store
> > > > the state.
> > > > If this doesn't work, well we have to find a
> > > better
> > > > solution :(
> > > > 
> > > > > I think stateful + stateless tab solution
> should
> > > > work
> > > > > for me.  There is also another problem I'm
> > > having,
> > > > > which I hope will be fixed by this (but I'd
> like
> > > > to
> > > > > check with you to make sure):
> > > > >
> > > > > On my "news" sub-tab I have "Latest News"
> page
> > > > with
> > > > > callouts to news items, which open "News
> Item"
> > > > page,
> > > > > by passing "news-item" coplet news-id:
> > > > >
> > > > > <cl:links>
> > > > >   "News" is the 4th tab on "maintab"
> > > > >   <cl:link layout="maintab" value="3"
> > > > > path="aspectDatas/tab"/>
> > > > >   "News Item" page is the 3rd page on
> "newstab"
> > > > >   <cl:link layout="newstab" value="2"
> > > > > path="aspectDatas/tab"/>
> > > > >   <cl:link coplet="news-item-1"
> value="{@id}"
> > > > > path="attributes/news-id"/>
> > > > >   <cl:content><xsl:value-of
> > > > > select="title"/></cl:content>
> > > > > </cl:links>
> > > > >
> > > > > This works correctly, however if I press
> brower
> > > > "Back"
> > > > > button when on "News Item" page and click to
> > > view
> > > > > another news item on the "Latest News" page,
> I
> > > get
> > > > the
> > > > > same news item.  However, if I navigate to
> > > "Latest
> > > > > News" page by clicking on tabs, everything
> works
> > > > > correctly.
> > > > >
> > > > No, this is a different issue :) The portal
> has a
> > > > built-in
> > > > mechanism to "disable" the back button. By
> this
> > > the
> > > > user
> > > > can't get into an undefined state.
> > > > This means, that if you use back and to any
> > > action,
> > > > this
> > > > action is ignored. If you want to enabled the
> > > > back-button
> > > > you simple have to remove the
> > > >         <aspect type="action-counter"/>
> > > > from the <event-aspects> configuration in the
> > > > cocoon.xconf.
> > > > 
> > > > HTH
> > > > Carsten
> > > > 
> > > 
> > > 
> > > =====
> > > Alex Romayev
> > > Software Architect
> > > http://www.romayev.com
> > > romayev@yahoo.com
> > 
> > 
> > =====
> > Alex Romayev
> > Software Architect
> > http://www.romayev.com
> > romayev@yahoo.com
> > 


=====
Alex Romayev
Software Architect
http://www.romayev.com
romayev@yahoo.com

Mime
View raw message