myfaces-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Martin Marinschek" <martin.marinsc...@gmail.com>
Subject Re: [TRINIDAD] Skinning in a portlet environment
Date Fri, 27 Jul 2007 13:17:47 GMT
Hi Simon,

true. The form-render was good for my nice small example, but is no
general solution of course.

I wonder if this would mandate a special component which does nothing
but adding the stylesheet to the head?

Eventually, the component could be generalized, so that all kinds of
stylesheets can be added, if a link is provided and the stylesheet
hasn't been added so far - I think this solution might be interesting
for the portlet-developer in general.

regards,

Martin

On 7/27/07, Simon Lessard <simon.lessard.3@gmail.com> wrote:
> Issue with #3 is not very hard, we already have a RenderingContext that can
> be used for that. We could probably hook that code in CoreRenderer or
> XhtmlRenderer. The only issue left then would be to not have document, head
> and body renderer to execute it. Placing it in FormRenderer only does not
> seems right in case your page does not contain a form at all or use a basic
> JSF form (extremely unlikely though).
>
>
> On 7/27/07, Martin Marinschek <martin.marinschek@gmail.com> wrote:
> > 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 < martin.marinschek@gmail.com> 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 < simon.lessard.3@gmail.com> 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 < darkarena@gmail.com> 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* <martin.marinschek@gmail.com
> > > > > > <mailto:martin.marinschek@gmail.com >> 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 < simon.lessard.3@gmail.com
> > > > > >     <mailto: simon.lessard.3@gmail.com>> 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 < martin.marinschek@gmail.com
> > > > > >     <mailto: martin.marinschek@gmail.com>> 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 < darkarena@gmail.com
> > > > > >     <mailto:darkarena@gmail.com>> 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
> >
>
>


-- 

http://www.irian.at

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

Professional Support for Apache MyFaces

Mime
View raw message