I think this is a great idea. One thing I'd like to see along with this work is figuring out a UI developer mode for the portal. This would likely need to be a configuration property somewhere that is set before the portal is deployed. It would need to control the following:

- Use full JS/CSS files, no minification or aggregation.
- Disable all JS/CSS/Image caching
- Disable rendering pipeline caching
- Enable logging of pipeline XSL output

Not sure exactly how one configuration change would do all of that but it sure seems like a common need for uPortal deployers.

-Eric

Jen Bourey wrote:
Hello all,

I wanted to open up discussion about our options for decreasing the number of HTTP requests for CSS stylesheets in the uPortal 3.1 branch. Currently the portal's skins generally import some shared default resources from the new ResourceServingWebapp and from the theme's common area. These resources include the jQuery UI default theme, the Fluid Skinning System (FSS)'s standard resources, and a base uPortal-specific layout.css file. The skin then overrides and adds to these more general CSS styles, generally through including several more stylesheets.

While I think the above works well from a development standpoint, we currently have 14 HTTP requests for CSS stylesheets just for the base uPortal content (i.e., this count doesn't include any stylesheets for portlets present on the page). I'd really like to get this number down as much as we can, while making sure we have a skin organization that's reasonable to work with.

My current proposal is that we leave the existing structure as is, but make use of the maven yui-compressor plugin to aggregate the required files at build time. This would allow us to continue to have separate, appropriately named files, but only require the user's browser to download one or two CSS file per skin. For example, we might create aggregated files as follows:

<aggregations>
    <!-- Create the shared Fluid Skinning System stylesheet -->
    <aggregation>
<output>${project.build.directory}/${project.build.finalName}/media/skins/universality/common/css/fluid.fss.min.css</output>
         <includes>
<include>${project.build.directory}/${project.build.finalName}/media/skins/universality/common/css/fluid.reset.min.css</include> <include>${project.build.directory}/${project.build.finalName}/media/skins/universality/common/css/fluid.layout.min.css</include> <include>${project.build.directory}/${project.build.finalName}/media/skins/universality/common/css/fluid.text.min.css</include>
          </includes>
     </aggregation>
<!-- Create the uPortal3 skin stylesheet -->
    <aggregation>
<output>${project.build.directory}/${project.build.finalName}/media/skins/universality/uportal3/uportal3.min.css</output>
         <includes>
<include>${project.build.directory}/${project.build.finalName}/media/skins/universality/common/css/print.min.css</include> <include>${project.build.directory}/${project.build.finalName}/media/skins/universality/common/css/layout.min.css</include> <include>${project.build.directory}/${project.build.finalName}/media/skins/universality/uportal3/uportal3_legacy.min.css</include> <include>${project.build.directory}/${project.build.finalName}/media/skins/universality/uportal3/jsr168_portlet_spec.min.css</include> <include>${project.build.directory}/${project.build.finalName}/media/skins/universality/uportal3/jquery.min.css</include> <include>${project.build.directory}/${project.build.finalName}/media/skins/universality/uportal3/fluid.theme.uportal3.min.css</include> <include>${project.build.directory}/${project.build.finalName}/media/skins/universality/uportal3/uportal3_portlet_content.min.css</include> <include>${project.build.directory}/${project.build.finalName}/media/skins/universality/uportal3/uportal3_ie6override.min.css</include> <include>${project.build.directory}/${project.build.finalName}/media/skins/universality/uportal3/uportal3_legacy.min.css</include>
          </includes>
     </aggregation>

     <!-- More skins here . . . -->
</aggregations>


One disadvantage of this approach is that it would likely be less transparent to adopters how the CSS is being assembled. I'd imagine that we'd at least want to have a README file in the skins/uportal3 directory that commented on the approach.

Thoughts?

- Jen


--
Jen Bourey
--

You are currently subscribed to [email protected] as: 
[email protected]
To unsubscribe, change settings or access archives, see 
http://www.ja-sig.org/wiki/display/JSG/uportal-dev

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to