Expansions won't work (directly) for the asset, b/c expansions inside of comments are ignored, so trying to do something like:
<!-- [if IE 6]>
  <link rel="stylesheet" href="${asset:context:/foo/bar.css}"/>
<![endif]-->

Isn't going to work.

What you /could/ do is to have the entire comment generated in java code, and then have all of the comment spit out as an expanded string in your template.
Quick and dirty, but it'll work.
Something like:

.java:

@Inject
@Path("$path/to/css/default.css")
private Asset _defaultStyle;

public String getConditionalComment() {
return "<!--[if IE 6]>\n<link rel='stylesheet' href='" + _defaultStyle.toClientURL() + "'/>\n<![endif]-->";
}

.tml:

${conditionalComment}



Perhaps a nicer way of doing this would be to "componetize" the behavior. You could create a ConditionalComment component which would wrap it's body in the conditional comments, with a string parameter representing the condition.
Something like:

ConditionalComment.java:

@Parameter(required=true,defaultPrefix="literal")
private String _condition;

private void beginRender(MarkupWriter writer) {
        writeRaw("<!--[if ");
        writeRaw(_condition);
        writeRaw("]>\n");
}

private void endRender(MarkupWriter writer) {
        writeRaw("<![endif]-->");
}

Then your templates that need conditional comments could look like:

<t:ConditionalComment condition="IE 6">
  <link href="..." rel="stylesheet"/>
</t:ConditionalComment>


The above code is, of course, untested, but should convey the general idea.

Cheers,

Robert

On Feb 15, 2008, at 2/1512:57 PM , Kevin Menard wrote:

You could just use an expansion in your template for the asset. Not quite
the same, but it would accomplish the same goal.

--
Kevin


On 2/15/08 12:28 PM, "lebenski" <[EMAIL PROTECTED]> wrote:


Hi guys,

Does anyone know of a mechanism of utilizing IE Conditional Comments for importing browser-specific CSS, but using the standard tapestry method of
css injection via the page class, i.e. something like:

private PageRenderSupport _pageRenderSupport;

@Inject
@Path("$path/to/css/default.css")
private Asset _defaultStyle;

...

_pageRenderSupport.addStylesheetLink(_defaultStyle,null);

Cheers,
Ben.


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