Jesse-

You're awesome! :)


-----Original Message-----
From: Jesse Kuhnert [mailto:[EMAIL PROTECTED] 
Sent: Sunday, January 21, 2007 11:02 AM
To: Tapestry users
Subject: Re: Re: T41: Are there any known problems with BASE tag?

I did finally track down the root cause of all this image css path
nonsense finally yesterday. It'll require a new dojo build in the
tapestry source, probably will happen today in the 4.1.2-SNAPSHOT
version.

On 1/18/07, Anna Vo <[EMAIL PROTECTED]> wrote:
>
> >
> > We have been having issues with our CSS image URLs also.
> >
> > Example:
> >
>
url(/assets/static/dojo/src/widget/templates/DatePicker.cssimages/dpBg.g
> > if)
>
> >>if your css is in a css folder in the context, you should use:
> >>url( "../assets/...
>
> >>if its direct in the context dir, use
> >>url( "./assets/...
>
> >>the url is always realtive to the css file, not the page. The
problem
> is
> >>when using css in the page itself...
>
> From what I can see, Tapestry 41 is grabbing the contents of the CSS
> file from the jar (though we do have our own assets/static/dojo
> directory but changes made in there don't seem to be used -- anyone
have
> any ideas why?).
>
> In DatePicker.js these are defined:
> templatePath:
dojo.uri.dojoUri("src/widget/templates/DatePicker.html"),
> templateCssPath:
> dojo.uri.dojoUri("src/widget/templates/DatePicker.css").
>
> Our Shell component is using the default tapestrySource, dojoSource,
and
> dojoPath of classpath:/tapestry/core.js, etc. The contents of the CSS
> file (based off the URI) is sucked in and the css image URLs are
> generated at that time.
>
>
> >
> > I've tried adding inline style tags with the correct image paths
> > directly into the HTML, but Tapestry renders these styles before it
> > renders the dojo ones so I can't seem to ever override the css.
>
> >>I *think* you can, using !important :
> >>example:
>
> >>A {
> >>   color: red !important;
> >>}
>
> IE actually ignores !important (at least in ie6, not sure about 7 but
we
> support both...). Also, these are currently being used in the
> DatePicker.css file and since any CSS I try to use to overwrite
precedes
> dojo's styles I believe the secondary !important overrides the first.
> I've also tried adding it in the java file by using renderComponent
and
> writing it out, but again it writes the style in the head above the
dojo
> ones. Also does that using a RenderBlock... but these would be hacks
> anyway.
>
>
> >
> > After trying to use both context and asset for specifying the
> > tapestry/dojo sources to the shell component I just ended up using
the
> > default ones, which doesn't work for us either.
>
> >>how come? be sure to map /asset/ to the servlet as described in
> friendly
> >>URLs chapter in the user's guide...
>
>
> Our autocompleters and other dojo things work, but the CSS paths of
> images that come from dojo css files are incorrect. I did doublecheck
> hivemodule.xml and web.xml and the configuration seems correct.
>
> Hivemodule.xml
> <contribution configuration-id="tapestry.url.ServiceEncoders">
>         <direct-service-encoder id="direct"
stateless-extension="direct"
> stateful-extension="sdirect"/>
>             <page-service-encoder id="page" extension="html"
> service="page"/>
>             <page-service-encoder id="external" extension="external"
> service="external"/>
>             <asset-encoder id="asset" path="/assets"/>
>             <extension-encoder id="ext" extension="svc" after="*"/>
>         </contribution>
>
> Web.xml
>         <servlet-mapping>
>                 <servlet-name>app</servlet-name>
>                 <url-pattern>*.html</url-pattern>
>         </servlet-mapping>
>         <servlet-mapping>
>         <servlet-name>app</servlet-name>
>         <url-pattern>*.external</url-pattern>
>          </servlet-mapping>
>         <servlet-mapping>
>                 <servlet-name>app</servlet-name>
>                 <url-pattern>*.direct</url-pattern>
>         </servlet-mapping>
>         <servlet-mapping>
>                 <servlet-name>app</servlet-name>
>                 <url-pattern>*.sdirect</url-pattern>
>         </servlet-mapping>
>         <servlet-mapping>
>                 <servlet-name>app</servlet-name>
>                 <url-pattern>*.svc</url-pattern>
>         </servlet-mapping>
>         <servlet-mapping>
>                 <servlet-name>app</servlet-name>
>                 <url-pattern>/assets/*</url-pattern>
>         </servlet-mapping>
>
> One thing to note about that is we also had some filter mappings
> (NoCacheResponseHeaderFilter) for the above and we also have caching
on
> /assets/*. I tried commenting out the CacheResponseHeaderFilter for
> assets/* in case that was causing issues but the behavior for the css
> path didn't change.
>
>
>
> >
> > We also tried to override AssetService but we must have missed
> something
> > because the path still got generated incorrectly.
> >>there must be another solution.
>
> Most definitely. I mostly was in there just to see how things were
being
> handled.
>
>
> >
> > If you have the same issue and find anything else, please post.
> Thanks!
> >
> >>generaly, one can use the renderBaseTag parameter of the shell
> >>component. this will render a <base> tag in the header, and will
> >>determine a base for relative URLs.
>
> >>I am just wondering why the default is false in T41?
>
> >>Cheers,
> >>Ron
>
> Thanks for taking time to respond.
>
> Anna
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>


-- 
Jesse Kuhnert
Tapestry/Dojo team member/developer

Open source based consulting work centered around
dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com

---------------------------------------------------------------------
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]

Reply via email to