For the discussion on if and how to integrate this into Trinidad - I
see three cases:
1) people only want basic skinning, Trinidad uses simple.portlet, and
emits portlet-standard compliant skinning hooks
2) people want normal Trinidad skinning, portlet container provides
CSS file in the head, Trinidad doesn't have to do anything (especially
not switch to portlet-standard compliant skinning hooks)
3) people want Trinidad skinning, portlet container does not provide
the CSS file, Trinidad portlet needs to add the CSS file with
JavaScript itself. Issue to solve: CSS file needs to be added only
once.
regards,
Martin
On 7/27/07, Martin Marinschek <[EMAIL PROTECTED]> wrote:
> 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
>
--
http://www.irian.at
Your JSF powerhouse -
JSF Consulting, Development and
Courses in English and German
Professional Support for Apache MyFaces