I have some thoughts on ordering, but first could you elaborate on, or better yet point me to documentation on teh Environmental service? I've seen it mentioned but know nothing about it.

Robert Zeigler wrote:
Overall, that looks pretty good, but you could handle it easier, I think, by using the environment service. The top level document is available during render from the Environment service, so you could use that in place of steps 2 and 3. Consistent ordering would be nice... the difficult thing there is determining what ordering should be the correct ordering. If you have some way or knowing what the correct ordering ought to be, then you could certainly traverse the dom and make sure your new link element is inserted in the correct location. But the real question is knowing what the right order should be. Order of render is probably incorrect. For example, you create a "layout" component which inserts your application-specific stylesheets via the proposed custom style component. Your layout is embedded in a page, and as part of the layout body, there is a component which also uses the style component. Rendering order would place the style of the layout first, and the style of the embedded component second, which is probably not what you want since you might be overriding the component-default styling in your application style. (You could get around that be declaring your layout/application-specific style component after the <t:body/> of your layout component, but...) You don't want to have to explicitly define an order in the style component since you don't really know what stylesheets will be available. But, again, if you can figure out what the order /ought/ to be, you should be able to enforce that order. :)

Robert

On Aug 13, 2007, at 8/136:08 PM , Chris Lewis wrote:

So it looks like one would need to (re)create something similar to the T4 Shell component. I've taken a brief look at the DOM api, and if I were to write something as focused as a Style component, then it looks like I'd have to:

1) create my component class, either in my.namespace.components, or another module that is loaded and contributed
2) get a MarkupWriter instance via void beginRender/@BeginRender
3) use writer.getRootElement() to get the root, and then traverse into the <head> 4) assuming eHead is my <head> Element, use eHead.element("link", "rel", "stylesheet", "type", "text/css", "href", "TODO-css-url-here"), to append a <link>

Can anyone comment on the (in)correctness of this?
It'd be nice to ensure ordering of the sheets somehow, so they can cascade properly. It'd be easier to do that with a more sophisticated Shell-link component that handled building the page base (head, metas, scripts, etc). Anyway, please share thoughts.

thanks
chris

Robert Zeigler wrote:
T5 renders with a dom.
Gives you a lot of control...
You could create a "style" component that finds the head and inserts the appropriate <link> element. Then your components could add their own stylesheets using the style component, with the page and containing components none the wiser. You would want to make sure that a given stylesheet is inserted only once, of course (eg, if your component is contained within a loop...).
A component like this should be very straightforward to write in T5.

Robert

On Aug 13, 2007, at 8/134:51 PM , Chris Lewis wrote:

One of the nice things I learned in my brief investigation of T4.1.2 was that the Shell component would automatically pick up any style sheets a page declared using the @Style annotation (or something like that). I've been wondering how something like this might be achieved in T5, using the available components as opposed to subclassing a base page. This seems like a feature that would be part of the core, as it is such a common need. I know I could emulate this by creating a layout that expected a page property, say externalCss (a collection), and using the Loop component to iterate it and insert the link elements. Is this the only way to do this in T5?

thanks!
chris

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



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



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to