You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-user@portals.apache.org by John Christopher <jo...@animalsinneed.net> on 2003/04/01 07:49:56 UTC

Re: Jespeed Skins Alternatives

That is a great idea, I hadn't thought about the contextual abilities of css 
for this manner. I have been working with Kevin on our css stuff and I(We) 
both agree that styling the portal should be a simple thing. Although we both 
have gotten into the details of working with jetspeed, our end goal is to 
have a web person be able to follow our class naming schema and create or
integrate a portlet into our portal.

John

On Monday 31 March 2003 12:38, Weaver, Scott wrote:
> Hi Kevin,
>
> If you haven't already, check out bug id:
>
> http://nagoya.apache.org/bugzilla/show_bug.cgi?id=18208
>
> It's an update from my original post and I think it addressed a lot of your
> concerns regarding images.
>
>
> You have made great points concerning the current complexity of the skin
> registry.  I am all for eliminating the obscurity within the css class
> naming definitions.  Also, I think we should make greater use of the
> contextual selector abilities within css:
>
> VERY simple example
>
> .TitleStyleClass { default stuff }
>
> (Different or same style sheet)
>
> .my-skin .TitleStyleClass { whatever}
>
> (Also, different or same style sheet)
>
> .another-skin .TitleStyleClass { something else }
>
> Then each portlet's content could be enclosed by :
> <div class="$skin.Name">
>   <span class="TitleStyleClass">Portlet Title</span>
>
> </div>
>
>
> A very simplistic end page would be
>
> <div class="my-skin">
>   <!-- I override all settings within .TitleStyleClass
>     - with the values from .my-skin .TitleStyleClass
>     - anything not overridden, cascades down from
>     - .TitleStyleClass.
>   -->
>   <span class="TitleStyleClass">Portlet Title</span>
>
> </div>
>
> <div class="another-skin">
>   <!-- I override all settings within .TitleStyleClass
>     - with the values from .another-skin .TitleStyleClass
>     - anything not overridden, cascades down from
>     - .TitleStyleClass.
>   -->
>   <span class="TitleStyleClass">Portlet Title</span>
>
> </div>
>
> Using this approach, you can have multiple skins, each with individual
> csses assigned to a single portlet page.  If we used a standardized
> directory structure, like you suggested, for skins, no entries should need
> to be made to the registry.  An event bigger plus is that you can have, for
> the most part, HTML page designers whip up style sheets left and right with
> out having worry about them needing to understand the subtleties of the
> skin registry.  Just educate them about the naming convention and directory
> structure and everybody's happy ;)
>
> Backward compatibility is the only thing we would need to address before we
> could move forward.
>
>
> *===================================*
> * Scott T Weaver                    *
> * Jakarta Jetspeed Portal Project   *
> * weaver@apache.org                 *
> *===================================*
>  
>
> > -----Original Message-----
> > From: Earl Shultz [mailto:shultze@midknightoil.com]
> > Sent: Monday, March 31, 2003 2:38 PM
> > To: jetspeed-dev@jakarta.apache.org; jetspeed-user@jakarta.apache.org
> > Subject: Jespeed Skins Alternatives
> >
> > I seldom post but this posting touched home on some development I have
> > already addressed.  I see a need to ensure that some aspects of style
> > control be carried over or included in future revision.  Specifically let
> > me list my major concerns:
> >
> > First, Jetspeeds default.css includes a very cryptic list of class
> > references for style control.  Most are inherent to the control of the
> > Jetspeed appearance but most of the existing classes are very obscure and
> > it is not immediately apparent what they control. As a result I have been
> > pruning existing classes and establishing a clearer hierarchy.  Below is
> > an example snippet however I realize this is completely up to the
> > developer for control.  I mention it simply so that you might consider
> > establishing clearer naming conventions for Jetspeed specific classes.
> > One important note however is that I am establishing individual CSS
> > documents for each skin.
> >
> > ######  default.css SAMPLE
> >
> > .Portal { }
> > .Portal-Header {
> >    background-color: #000000;
> >    }
> > .Portal-Header-Logo {
> >    text-align: left;
> >    vertical-align: top;
> >    width: 100%;
> >    }
> > .Portal-Header-Navbar {
> >    margin: 0px 0px 0px 0px;
> >    padding: 0px 0px 0px 0px;
> >    border: 0px;
> >    text-align: right;
> >    }
> > .Portal-Header-Navbar-Button {
> >    border: none;
> >    text-align: right;
> >    }
> > .Portal-Header-Buttonbar {
> >    padding: 5px 0px 0px 0px;
> >    border: none;
> >    text-align: right;
> > 	}
> > .Portal-Header-Buttonbar-Button {
> >    border: 0px;
> >    text-align: right;
> > 	}
> > .Portal-Header-Authentication {
> >    background-color: #87ACD6;
> >    text-align: right;
> >    }
> > .Portal-Header-Authentication-Field {
> >    padding: 1px 1px 1px 1px;
> >    color: #000000;
> >    font-family: Arial, Verdana, Helvetica;
> >    font-size: 80%;
> >    font-weight: 600;
> >    text-align: right;
> >    }
> > .Portal-Menu { }
> > .Portal-Portlet-Titlebar
> >    {
> >    padding: 0px 0px 3px 3px;
> >    border: 1px 1px 1px 1px solid #000000;
> > 	background-image: url(../../images/blue-gold/scanline_light.gif);
> > 	background-repeat: repeat-x;
> >    color: #000000;
> >    font-weight: 900;
> >    }
> > .Portal-Portlet-Titlebar-Actions
> >    {
> >    background-color: #CCCC99;
> >    padding: 2px 3px 1px 3px;
> >    border: 1px 0px 1px 1px solid #000000;
> >    }
> > .Portal-Portlet { }
> > .Portal-Footer {
> >    background-color: #87ACD6;
> >    color: #000000;
> >    font-family: Arial, Verdana, Helvetica;
> >    font-size: 90%;
> >    font-weight: 400;
> >    text-align: center;
> >    }
> >
> > Second, There has been a bit of discussion as to addressing only .gif
> > images.  Scott's proposal is far more ideal as it allows any web image
> > format.  I support that recommendation completely as jpgs are necessary
> > for compressed photo quality images.  I believe actions are a small part
> > of image control in a skin.  The ability to control the users complete
> > experience through a skin is limitless.  One difference to my
> > implementation is that not only do I allow the skin to control the
> > appearance of certain aspects of the portal but I have built beneath the
> > images directory individual directories for each Skin theme.
> > (images/gold-black/default.css or images/blue-gold/default.css).  Inside
> > each directory I can have a completely unique library of images so that
> > even down to the logo, navigation, action images, etc... I can change the
> > complete appearance of the site beyond just background colors, borders,
> > etc...
> >
> > I have eliminated most references to style within the skins.xreg, instead
> > we have established effective style through CSS documents and we refer to
> > a library of class references to handle the page presentation from the vm
> > or jsp pages.
> >
> > ######  Skin.xreg
> >
> >     <skin-entry name="gold-black" hidden="false">
> >         <property name="skin-name" value="gold-black" hidden="true"/>
> >         <property name="title-style-class" value="TitleStyleClass"
> > hidden="false"/>
> >         <property name="highlight-title-style-class"
> >             value="HighlightTitleStyleClass" hidden="false"/>
> >         <property name="controller-style-class"
> >             value="ControllerStyleClass" hidden="false"/>
> >         <property name="portlet-style-class" value="PortletStyleClass"
> > hidden="false"/>
> >         <property name="content-style-class" value="ContentStyleClass"
> > hidden="false"/>
> >         <property name="tab-style-class" value="TabStyleClass"
> > hidden="false"/>
> >         <property name="tab-title-style-class"
> >             value="TabTitleStyleClass" hidden="false"/>
> >         <property name="tab-content-style-class"
> >             value="TabContentStyleClass" hidden="false"/>
> >     </skin-entry>
> >
> >
> > These CSS classes are then referenced by the associated VM documents such
> > as top.vm or top.jsp... An example follows:
> >
> > ######  top.vm
> >
> > <div>
> > #if ($!{data.profile.document.portlets.skin.name} != "null")
> >     #set ($skinName = "$!{data.profile.document.portlets.skin.name}")
> > #else
> >     #set ($skinName =
> > $config.getString("services.PortalToolkit.default.skin"))
> > #end
> > #if ($data.User.hasLoggedIn())
> > <TABLE>
> >    <TR>
> >       <TD class="Portal-Header-Logo"><IMG
> > SRC="images/$skinName/fnmoc_home_banner_metoc.jpg" /></TD>
> >       <TD>
> >          <TABLE class="Portal-Header-Navbar" cellspacing="0"
> > cellpadding="0">
> >             <TR>
> >                <TD class="Portal-Header-Navbar-Button">
> >                   <!-- CUSTOMIZE HTML BUTTON -->
> >                   <A
> > HREF="$link.setAction("controls.Customize")?reset=on&level=top">
> >                      <IMG BORDER="0" ALT="Customize HTML"
> > SRC="images/$skinName/edit_html.jpg" />
> >                   </A>
> >                </TD>
> >
> >
> > Likewise the css can be unique for each skin as follows in the
> > layouts\html\default.vm:
> >
> > ######  default.vm
> >
> > <HTML>
> >   <HEAD>
> >     <base href="$clink.External" />
> >     #if ($!{data.profile.document.portlets.skin.name} != "null")
> >         #set ($skinName = "$!{data.profile.document.portlets.skin.name}")
> >     #else
> >         #set ($skinName =
> > $config.getString("services.PortalToolkit.default.skin"))
> >     #end
> >     <link href="$clink.setURI("css/$skinName/default.css").Absolute"
> > type="text/css" rel="stylesheet" />
> >     #set ($titlePrefix = $config.getString("portalpage.title_prefix"))
> >     <title>#if ($titlePrefix)$titlePrefix
> > #end$!{data.profile.document.portlets.getMetaInfo().title}</title>
> >   </HEAD>
> >
> >
> > I am happy to see that Skins are an issue warranting futher development
> > by the Jetspeed developers.  The old addage "Better to Look Good than to
> > Feel Good" has a great deal of merit to the public.  People will always
> > favor aesthics over functionality when it comes to end users. But
> > Fuctionality coupled closely with aesthetics is always destined for a
> > successful future.
> >
> > If you have any other questions regarding anything I have mentioned
> > please feel free to contact me.  Thank you for your consideration.
> >
> > V/R,
> >
> >
> > Kevin Shultz
> >
> > "The difference between 'involvement' and 'commitment' is like an eggs-
> > and-ham breakfast:
> > the chicken was 'involved' - the pig was 'committed'."
> >      - unknown
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: jetspeed-dev-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: jetspeed-dev-help@jakarta.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jetspeed-user-help@jakarta.apache.org