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
> >> >>
> >> >> On Monday, 26 March 2012, Thiago H. de Paula Figueiredo <
> >> >> thiag...@gmail.com>
> >> >> wrote:
> >> >> > On Mon, 26 Mar 2012 12:00:03 -0300, kado <
> juan.a...@condortech.com.ar
> >> >
> >> >> wrote:
> >> >> >
> >> >> >> Hi,
> >> >> >
> >> >> > Hi!
> >> >> >
> >> >> >> My webapp now is loading the stylesheets in the Layout component
> in
> >> this
> >> >> >> way:
> >> >>
> >> >>
> >>
> >>
>
> @IncludeStylesheet({"context:css/mainLayout.css","context:css/components.css"})
> >> >> >> I have been looking for a solution in the mailing list and didn't
> >> find
> >> >> >> anything. I read something about contributing in the AppModule,
> but I
> >> >> don't know how to use it with my working scheme.
> >> >> >
> >> >> > Just @Inject JavaScriptSupport and use its importStylesheet(Asset
> >> >> stylesheet) method inside afterRender(). AssetSource provides Asset
> >> >> instances to you.
> >> >> >
> >> >> > --
> >> >> > Thiago H. de Paula Figueiredo
> >> >> > Independent Java, Apache Tapestry 5 and Hibernate consultant,
> >> developer,
> >> >> and instructor
> >> >> > Owner, Ars Machina Tecnologia da Informação Ltda.
> >> >> > http://www.arsmachina.com.br
> >> >> >
> >> >> >
> ---------------------------------------------------------------------
> >> >> > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> >> >> > For additional commands, e-mail:
>

Reply via email to