Hi Simon, Scott,

I've made skinning work now in any container - this is the code that
I've used, for other users as a reference. We should carry on the
discussion if and how to integrate this into Trinidad itself, though.

regards,

Martin

--------------------

use a binding attribute on your tr:form:

<tr:form id="helloForm" binding="#{personPage.form}">

provide a getter for this form in your backing-bean:

    public CoreForm getForm() {
        CoreForm coreForm =  new MyCoreForm();
        return coreForm;
    }

write the class MyCoreForm, extending Trinidad's CoreForm - with that,
you should be good.

    public static class MyCoreForm extends CoreForm {
        @Override
        public void encodeBegin(FacesContext context) throws IOException {

            StyleContext styleContext = ((CoreRenderingContext)
RenderingContext.getCurrentInstance()).getStyleContext();
            String uri =
styleContext.getStyleProvider().getStyleSheetURI(styleContext);

            String contextUri =
context.getExternalContext().getRequestContextPath();
            String baseURL = contextUri + XhtmlConstants.STYLES_CACHE_DIRECTORY;

            String finalUri = context.getExternalContext
().encodeResourceURL(baseURL+uri);

            StringBuffer buf = new StringBuffer();

            buf.append("<script type=\"text/javascript\">\n" +
                    "\n" +
                    "//<![CDATA[\n" +
                    "\n" +
                    "if(document.createStyleSheet) {\n" +
                    "\n" +
                    "document.createStyleSheet('"+finalUri+"');\n" +
                    "\n" +
                    "}\n" +
                    "\n" +
                    "else {\n" +
                    "\n" +
                    "var styles = \"@import url('"+finalUri+"');\";\n" +
                    "\n" +
                    "var newSS=document.createElement('link');\n" +
                    "\n" +
                    "newSS.rel='stylesheet';\n" +
                    "\n" +
                    "newSS.href='"+finalUri+"';\n" +
                    "\n" +

"document.getElementsByTagName(\"head\")[0].appendChild(newSS);\n" +
                    "\n" +
                    "}\n" +
                    "\n" +
                    "//]]>\n" +
                    "\n" +
                    "</script>");
            context.getResponseWriter().write(buf.toString());

            super.encodeBegin(context);
        }
    }

On 7/26/07, Simon Lessard <[EMAIL PROTECTED]> wrote:
> Thus linking Portal-Trinidad users to specific portal vendor(s)... Ok, I see
> the issue now... bleh...
>
>
> On 7/26/07, Scott O'Bryan < [EMAIL PROTECTED]> wrote:
> > Simon, you are correct.  The portal would be able to push a parameter to
> > Trinidad.  Always in a portal environment the skin is uncompressed so
> > that is also not an issue.  But currently changing the stylesheet
> > provided by the Portal is a modification that needs to be made to the
> > portal itself.  I think that's where Martin is coming from.  An
> > unmodified portal container doesn't look very good when displaying faces
> > and forcing every portal container to provide a skin that is not based
> > off a standard is not going to be very successful in the general case.
> > I totally agree with this, but we're sort of between a rock and a hard
> > place.  :)
> >
> >
> > Simon Lessard wrote:
> > > Not really, I think we detect a specific parameter pushed by the
> > > container. So only container supporting skinning would push it,
> > > effectively synchronizing all portlet LaF. For other container I think
> > > we simply use the normal code path... That or I had some serious
> > > hallucinations in the past months and imagined all this...
> > >
> > > On 7/26/07, *Martin Marinschek* <[EMAIL PROTECTED]
> > > <mailto:[EMAIL PROTECTED] >> wrote:
> > >
> > >     Hi Simon,
> > >
> > >     well, but this would then be portlet container dependent, right?
> You'd
> > >     effectively need to implement trinidad skinning in every portlet
> > >     container.
> > >
> > >     regards,
> > >
> > >     Martin
> > >
> > >     On 7/26/07, Simon Lessard < [EMAIL PROTECTED]
> > >     <mailto: [EMAIL PROTECTED]>> wrote:
> > >     > Personally, I don't see why the portal should not be able to
> > >     provide all
> > >     > selectors.
> > >     >
> > >     > Aren't we just not compressing the selector names when we detect
> > >     a portal
> > >     > environment or did I miss something? I think that strategy
> > >     cannot provides
> > >     > the icons though.
> > >     >
> > >     >
> > >     > On 7/26/07, Martin Marinschek <[EMAIL PROTECTED]
> > >     <mailto: [EMAIL PROTECTED]>> wrote:
> > >     > > Does the portlet container really provide every styleclass that
> is
> > >     > > necessary for Trinidad components to look like they normally
> look?
> > >     > >
> > >     > > I'm just thinking that what is currently being done is not
> > >     enough to
> > >     > > have the full skinning features available, and that going the
> > >     > > direction of adding the CSS dynamically would allow to do so.
> > >     > >
> > >     > > regards,
> > >     > >
> > >     > > Martin
> > >     > >
> > >     > > On 7/26/07, Scott O'Bryan <[EMAIL PROTECTED]
> > >     <mailto:[EMAIL PROTECTED]>> wrote:
> > >     > > > Hey Martin,
> > >     > > >
> > >     > > > Does the simple-portlet skin render any better?  I *THINK*
> > >     that when
> > >     > > > running in a portal environment you always get the
> > >     simple-portlet skin
> > >     > > > unless your portal provides one of the necessary skin
> > >     extensions which,
> > >     > > > right now, it trinidad proprietary.  Maybe this is just a
> > >     case of us
> > >     > > > needing to bug-fix the portlet skin.
> > >     > > >
> > >     > > > That article is interesting, but I think that Trinidad has
> > >     attempted to
> > >     > > > do the same thing only in a different way.  Instead of using
> > >     javascript
> > >     > > > to copy in the styles, we actually change the class names
> > >     that get
> > >     > > > rendered on the client to use the portal styles where
> > >     appropriate.
> > >     > > > Still, I'm not sure that this has been tested extensively
> > >     because before
> > >     > > > we started looking at 301, much of Trinidad's portal work
> > >     has been done
> > >     > > > with a Proof of Concept environment.
> > >     > > >
> > >     > > > Scott
> > >     > > >
> > >     > > > Martin Marinschek wrote:
> > >     > > > > After playing around for a while and finally finding out
> > >     that it was
> > >     > > > > as easy as setting:
> > >     > > > >
> > >     > > > >  <skin-family>simple</skin-family>
> > >     > > > >
> > >     > > > > in the trinidad-config.xml I got skinning to run in the
> > >     portlet
> > >     > > > > environment. In the end, I'm not very happy with what I
> > >     see, though.
> > >     > > > >
> > >     > > > > I'm attaching a screenshot - basically, not much change
> > >     happens by
> > >     > > > > applying skinning - obviously due to the fact that the
> portlet
> > >     > > > > containers don't offer many default style-class hooks.
> > >     > > > > Have I been getting this wrong or does it really look like
> > >     this?
> > >     > > > >
> > >     > > > > If I have been doing the right thing, wouldn't it be nice
> > >     to have a
> > >     > > > > way of adding the stylesheet with javascript dynamically
> > >     in the body?
> > >     > > > >
> > >     > > > > Something like this:
> > >     > > > >
> > >     > > > >
> > >     >
> > >
> http://cse-mjmcl.cse.bris.ac.uk/blog/2005/08/18/1124396539593.html
> > >
> <http://cse-mjmcl.cse.bris.ac.uk/blog/2005/08/18/1124396539593.html
> >
> > >     > > > >
> > >     > > > > might be in order to have full skinning available, and
> > >     still be
> > >     > > > > standards compliant.
> > >     > > > >
> > >     > > > > I'd implement this in a component, if nobody has better
> > >     ideas...
> > >     > > > >
> > >     > > > > regards,
> > >     > > > >
> > >     > > > > Martin
> > >     > > > >
> > >     > > > >
> > >     > > > >
> > >     > > > >
> > >     >
> > >
> ------------------------------------------------------------------------
> > >
> > >     > > > >
> > >     > > >
> > >     > > >
> > >     > >
> > >     > >
> > >     > > --
> > >     > >
> > >     > > http://www.irian.at
> > >     > >
> > >     > > Your JSF powerhouse -
> > >     > > JSF Consulting, Development and
> > >     > > Courses in English and German
> > >     > >
> > >     > > Professional Support for Apache MyFaces
> > >     > >
> > >     >
> > >     >
> > >
> > >
> > >     --
> > >
> > >     http://www.irian.at
> > >
> > >     Your JSF powerhouse -
> > >     JSF Consulting, Development and
> > >     Courses in English and German
> > >
> > >     Professional Support for Apache MyFaces
> > >
> > >
> >
> >
>
>


-- 

http://www.irian.at

Your JSF powerhouse -
JSF Consulting, Development and
Courses in English and German

Professional Support for Apache MyFaces

Reply via email to