Dennis Sinelnikov wrote: > Ron, > > Since code speaks thousand words :), I would love to see some sample > code on what you're trying to do and how you did it. If you're busy, no > biggie, just trying to learn a new pattern...
:) yes, I am busy. I will try to demonstrate it: =============== INSTEAD of implementing the pager like this: <span jwcid="@For" ... value="ognl:currentPageNumber"> <a jwcid="@DirectLink" listener="listener:setPageNumber" disabled="ognl:pageNumber == currentPageNumber" > <span jwcid="@Insert" value="ognl:currentPageNumber"> </span></a> </span> and using it like: <div jwcid="@Pager" pageNumber="ognl:pageNumber" itemsPerPage="ognl:10" itemCount="ognl:itemCount"></div> ================ THE NEW WAY is: <span jwcid="@For" ... value="ognl:currentPageNumber"> <a jwcid="@DirectLink" listener="listener:setPageNumber" disabled="ognl:pageNumber == currentPageNumber" > <span jwcid="@InvokeListener" listener="listener:updateOutParameters" parameters="ognl: { currentPageNumberString , currentPageNumber }" > </span> <span jwcid="@RenderBody"/> </span> and using it: <div jwcid="@Pager" pageNumber="ognl:pageNumber" itemsPerPage="ognl:10" itemCount="ognl:itemCount"> <span jwcid="@RenderBlock" block="component:pagerLinkBlock"></span> </div> ... <div jwcid="[EMAIL PROTECTED]"> <a jwcid="@DirectLink" listener="listener:setPageNumber" disabled="ognl:linkSelected" parameters="ognl:linkPageNumber" > <span jwcid="@Insert" value="ognl:linkText"> </span></a> </div> to make this work I added to the pager: @Parameter public abstract String getLinkText(); @Parameter public abstract int getLinkPageNumber(); @Parameter public abstract boolean isLinkSelected(); and public void updateOutParameters(String text, int pageNum ) { setLinkText( text ); setLinkPageNumber( pageNum ); setLinkSelected( pageNum == getPageNumber(); } Note that the pager does not only generate 1 2 3 links but also << and >> links to move forward and back, so i need the linkText and can not just use the page number as link text. Further, an If was required inside the linkBlock because if the pageNum is 0, I need to generate another link which will be the default link to the page instead of a direct link, since page number 0 is probably visited once the page is first accessed... so it is: <div jwcid="[EMAIL PROTECTED]"> <span jwcid="@If" condition="ognl:linkPageNumber == 0"> ... generate a link to the page, which will be "visited" anywayz </span> <span jwcid="@Else"> <a jwcid="@DirectLink" listener="listener:setPageNumber" disabled="ognl:linkSelected" parameters="ognl:linkPageNumber" > <span jwcid="@Insert" value="ognl:linkText"> </span></a> </span> </div> > > Thanks, > Dennis > > RonPiterman wrote: >> andyhot wrote: >>> Do you have to use direct links? >>> They expose too much of the inner workings of tapestry - that's why >>> they're not got for bookmarks as well... >> >> how is this possible if my component should be dropped in different >> pages ? >> >> I found finally another solution: >> >> What I did is removed the link rendering from the pager, and delegated >> it to its body. >> >> Added 3 out parameters: link text, link page and if selected. >> >> in the page I added as a body a renderBlog, in both pages the same >> block, which contains the desired link. So both pagers render the same >> link, thus do the same URls... >> >> Cheers, >> Ron >> >> >>> >>> Anyway, can you code around this using ExternalLinks ? >>> >>> >>> RonPiterman wrote: >>>> I have a nice usability problem with direct links nested inside >>>> components: >>>> >>>> I have a pager component, which takes an in-out "page" parameter. >>>> >>>> The pager component generates direct links, which invoke a listener in >>>> the component with the page number as parameter. >>>> >>>> The listener calls the set method of the "page" parameter, thus >>>> changing the page number. >>>> >>>> Now if I drop two instances of the pager component in a page, they >>>> both generate different links, so visited pages can not be traced: >>>> >>>> if the user clicks "2" on the one pager, the url is: >>>> >>>> http://localhost:8080/bardtke/reg/Forum,$Pager.$DirectLink_1.sdirect?sp=1 >>>> >>>> >>>> on the other pager, the url is: >>>> >>>> http://localhost:8080/bardtke/reg/Forum,$Pager_0.$DirectLink_1.sdirect?sp=1 >>>> >>>> >>>> >>>> >>>> >>>> so if on pager 1 page 2 is marked as visited, on pager 1 it isn't :( >>>> >>>> Now thats a fine problem... >>>> >>>> Any idees ? >>>> >>>> Cheers, >>>> >>>> Ron >>>> >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>>> For additional commands, e-mail: [EMAIL PROTECTED] >>>> >>>> >>> >>> >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]