Thanks Lance Again. I have just been being reading the article you share with me and I realized that is for tapestry 5.2.0. I am using 5.1.0.5, so I will have to use the * URLRewriter* service (Can't update to 5.2.0). I have no idea how this work either, do you think that I will be able to do something similar with this service?
Thanks in advance. On Wed, Mar 28, 2012 at 1:08 PM, Lance Java <lance.j...@googlemail.com>wrote: > Great, if Tapestry is the only thing rendering your links then it will all > work. > > By overriding the PageRenderLinkTransformer you are intercepting both link > creation and URL decoding so you are covering the whole flow. > > On Wednesday, 28 March 2012, Juan Alba <juan.a...@condortech.com.ar> > wrote: > > Thanks Again Lance. > > > > On Wed, Mar 28, 2012 at 12:10 PM, Lance Java <lance.j...@googlemail.com > >wrote: > > > >> I was assuming that all of your links were rendered by Tapestry (eg > >> EventLink and ActionLink). If this was the case then it *should* just > work. > >> > > > > You are assuming well. I am using ActionLinks. > > Right now, When you click a link I am doing: > > "return Page.class;" > > But as far as I understood, now I will have to do something like: > > *@Inject Enviroment* > > > > and instead of return do some stuff like: > > > > *return(pageRender.createPageRenderLink(FBAssociationPage.class)+ > > ".facebookloginlink");* > > > > adding the getMode() somewhere in there... > > > > So it seems I am not understanding very well how to use the @Enviroment. > Or > > this is what I have to do? > > > > Thanks. > > > > > >> On Wednesday, 28 March 2012, Juan Alba <juan.a...@condortech.com.ar> > >> wrote: > >> > First of all, thanks again Lance! > >> > > >> > > >> > > >> > On Wed, Mar 28, 2012 at 11:25 AM, Lance Java < > lance.j...@googlemail.com > >> >wrote: > >> > > >> >> Perhaps this would work > >> >> > >> >> Create an environmental object called Mode > >> >> > >> >> public interface Mode { > >> >> public String getMode(); // facebook or normal > >> >> } > >> >> > >> >> Use tapestry's URL rewriting to rewrite http://myapp/facebook/pageto > >> >> http://myapp/page (see > >> >> http://blog.tapestry5.de/index.php/2010/09/06/new-url-rewriting-api/ > ) > >> >> > >> >> As the URL is rewritten, it pushes a mode onto the environment > (either > >> >> "facebook" or "normal") > >> >> > >> >> @Inject > >> >> Environment environment > >> >> > >> >> String mode = getModeFromURL(); > >> >> environment.push(Mode.class, new ModeImpl(mode)); > >> >> > >> > > >> > This is great and I think that I'd got it. > >> > > >> > The problem is with this second part: > >> > > >> >> When rendering links, use Environment.peek() to get the Mode from the > >> >> environment and add the mode to each link URL if necessary. > >> >> > >> >> Components and Pages can then use the @Environmental annotation to > >> inject > >> >> the mode to determine which styles to include > >> >> > >> >> Then you get normal browsers to access http://myapp/page and > facebook > >> to > >> >> access http://myapp/facebook/page > >> >> > >> >> > >> > My web app is using a lot of webLibs (almost one per section). If I do > >> > this, I will have to change all the web app, and all the web libs to > >> > build the links correctly? It seems to be a huge re-factoring. > >> > > >> > I am getting the idea right? > >> > > >> > Thanks. > >> > > >> > > >> > > >> > > >> >> On Wednesday, 28 March 2012, Juan Alba <juan.a...@condortech.com.ar> > >> >> wrote: > >> >> > Thanks Bob and Lance for the ideas and recomendations. > >> >> > I think that Lance understood better my problem. The mode to change > >> the > >> >> css > >> >> > I have it already solved with Thiago's suggestion. > >> >> > Now my problem is that I can't define which stylesheet to use from > >> >> server's > >> >> > side because the only way to define it is knowing if the app is > >> running > >> >> on > >> >> > an iframe or not. > >> >> > > >> >> > Before sending the mail with my problems I tried to use either > >> >> suggestions > >> >> > "Parameter" and "Cookies or Session". > >> >> > > >> >> > *Parameter:* > >> >> > If I have the parameter I have to change every class in the webapp > to > >> add > >> >> > the parameter if is set and don't loose it after the first link > hit. > >> >> > > >> >> > *Cookies or Session:* > >> >> > If they are set, It seems to work fine until I close the > application > >> >> > running in the iframe and open it in a new browser. It keeps all > the > >> >> > session or cookies and will use the wrong stylesheet. > >> >> > > >> >> > Any other idea? > >> >> > > >> >> > Thanks guys. > >> >> > > >> >> > On Wed, Mar 28, 2012 at 4:31 AM, Lance Java < > >> lance.j...@googlemail.com > >> >> >wrote: > >> >> > > >> >> >> All of the solutions mentioned on this thread assume that there i >