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.
I'm not sure what you mean by webLibs but I am guessing that you are generating links without invoking Tapestry's Link generation API's. If this is the case then yes, you will need to refactor these. 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/page to >> 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 is a way >> >> ofdetermining which "mode" your pages/components need to include styles >> >> for. >> >> >> >> From what you have said, it seems that you currently only know the >> "mode" >> >> clientside in javascript. >> >> >> >> I get the feeling that you may need to re-think your design slightly so >> >> that the "mode" is known on the serverside. This can be done by >> activation >> >> context, request parameter, URL, cookie, session attribute etc. >> >> >> >> On Tuesday, 27 March 2012, Juan Alba <juan.a...@condortech.com.ar> >> wrote: >> >> > Thanks for your help guys, now I am realizing that my real problem is >> >> > another one. It concerns more with the logic to know what style to >> load. >> >> > >> >> > My app can be used in the browser (regular way) or also as a Facebook >> >> App. >> >> > This means an iframe where everything is smaller, and the backgrounds >> >> need >> >> > to be similar to the one in Facebook (so it looks nicer). >> >> > I have done something in javascript to realize if the app is being >> used >> >> > embebed or used "regular way". But this is reloading all the styles so >> I >> >> > have a first sight of the default tapestry styles and then the new >> ones >> >> > (not nice at all), and there are some problems with the components >> >> styles, >> >> > so the solution is not really a good one. >> >> > >> >> > I am wondering if there is a css strategy or some way to load the >> style >> >> > according to where from I am visiting the app, regular way or >> facebook. >> >> > >> >> > >> >> > Thanks in advance for all your help. >> >> > >> >> > >> >> > >> >> > >> >> > On Tue, Mar 27, 2012 at 4:52 AM, Lance Java < >> lance.j...@googlemail.com >> >> >wrote: >> >> > >> >> >> Tapestry uses the ImportWorker to process @Import annotations >> >> >> >> >> >> >> >> >> >> >> >> http://tapestry.apache.org/5.3/apidocs/src-html/org/apache/tapestry5/internal/transform/ImportWorker.html >> >> >> >> >> >> You could quite easily write your own annotation (and worker) to do a >> >> >> similar job with your custom logic >> >> >