2014-05-28 11:25 GMT+02:00 Marius Dumitru Florea < [email protected]>:
> On Wed, May 28, 2014 at 12:10 PM, Guillaume "Louis-Marie" Delhumeau > <[email protected]> wrote: > > 2014-05-28 10:43 GMT+02:00 Marius Dumitru Florea < > > [email protected]>: > > > >> On Tue, May 27, 2014 at 11:47 AM, Guillaume "Louis-Marie" Delhumeau > >> <[email protected]> wrote: > >> > 2014-05-27 9:56 GMT+02:00 Denis Gervalle <[email protected]>: > >> > > >> >> Hi Guillaume, > >> >> > >> >> Maintaining retro-compatibility for theme using LESS code is too > much. > >> >> Maintaining retro compatibility could be simply to support importing > >> >> existing color themes in the new theme system made for bootstrap and > no > >> >> more. > >> >> > >> > > >> > Let me show you an example: > >> > The Activity Stream has its own CSS, which does: > >> > > >> > #template('colorThemeInit.vm') > >> > ... > >> > .activityPage:hover , .activityApplication:hover , > .activityUser:hover { > >> > background: $theme.highlightColor; > >> > } > >> > ... > >> > > >> > So when my mouse is hovering the AS, its background color change. By > >> > default, it's a kind of yellow. > >> > > >> > Now, if I want to integrate a bootswatch theme, let say 'slate' [1]. I > >> just > >> > copy the LESS files ([2] and [3]) in my textarea. > >> > > >> > It looks very good [4], until my mouse comes over the activity > stream... > >> > that becomes yellow! [5] Something needs to be done. > >> > > >> > >> All clear up to here. > >> > >> > A solution could be to manually fix the colors in the color theme > editor > >> > but it defeats the principle to easily integrate a bootstrap kit > found on > >> > the web... > >> > > >> > >> > That's why I would like to parse the LESS code. With the solution 3, > >> which > >> > is easy to implement, we have a solution. > >> > >> So you need to set the value of $theme.highlightColor to a color taken > >> from the 'slate' theme (which was taken from bootswatch). I must say I > >> didn't understood very well what you mean by parsing the LESS output. > >> Can you give more details (for solution 3)? > >> > > > > Ok. > > > > I have mapped "highlightColor" (color theme variable) to > > "@nav-link-hover-bg" (bootstrap variable). > > > > So, when slat changes @nav-link-hover-bg to gray, I want to be able to > say > > "$theme.highlightColor" is gray too. > > > > How can I do that? > > > > 1/ Parsing the LESS file > > or > > 2/ Parsing the CSS output file > > > > I am prototyping the method 2. > > > > Concretly, at the end of my style.less file, I add: > > > > /* this class is actually useless for the browser */ > > .colortheme-highlightColor{ > > color: @nav-link-hover-bg; > > } > > > > > > LESS transforms it to: > > > > .colortheme-highlightColor{ > > color: #eee; > > } > > > > Now, my parser looks at every classes starting by ".colortheme-". The > > mapping looks like this: > > > > .colortheme-NAME_OF_THE_VARIABLE{ > > color: VALUE_OF_THE_VARIABLE; > > } > > > > All clear. > > > So my parser is able to say "highlightColor" = "#eee". > > WDYM by "my parser"? The CSS parser? My LESSColorThemeConverter component, that uses a CSS parser inside. I've used CSSOMParser a few times > in the past, such as here > > https://github.com/xwiki/xwiki-platform/blob/master/xwiki-platform-core/xwiki-platform-rendering/xwiki-platform-rendering-xwiki/src/main/java/org/xwiki/rendering/internal/wiki/XWikiWikiModel.java#L125 > Thanks. Actually, I am looking for the correct implementation. I have a prototype which works with a regular expression, an other one with https://code.google.com/p/phloc-css/ and I am looking for https://github.com/phil-brown/jCSS-Parser which has the advantage to not build a big tree of elements but to be a streamable parser. I will look at yours too. > > Hope this helps, > Marius > > > > > I agree... it looks like a hack. But it is the simplest way I have found > to > > compute the color theme from a LESS file... > > > > > > > >> > >> Thanks, > >> Marius > >> > >> > > >> > I agree it's not perfect, but it could be a migration path until we > >> change > >> > all the CSS of every applications! > >> > > >> > > >> > > >> >> Regarding the customization of Bootstrap, it exists a couple of tools > >> >> already. It allows far more than just color customization. Have you > >> check > >> >> if one of those existing tools could be adapted (and have appropriate > >> >> license) ? > >> >> > >> > > >> > I am looking at it. Not sure we could find it (easy to integrate, > >> > maintained, compatible with XWiki....). > >> > > >> > Thanks, > >> > Guillaume > >> > > >> > [1] Slate: http://bootswatch.com/slate/ > >> > [2] Slate variables.less: http://bootswatch.com/slate/variables.less > >> > [3] Slate bootswatch.less: > http://bootswatch.com/slate/bootswatch.less > >> > [4] Results: > >> > http://tof.canardpc.com/view/7740a7ee-29f4-454f-99e7-f45ef53d9095.jpg > >> > [5] Not good: > >> > http://tof.canardpc.com/view/a23e7101-449d-4fed-a922-cf58323220d3.jpg > >> > > >> > > >> >> > >> >> Thanks, > >> >> > >> >> > >> >> On Mon, May 26, 2014 at 3:49 PM, Guillaume "Louis-Marie" Delhumeau < > >> >> [email protected]> wrote: > >> >> > >> >> > Hi! > >> >> > > >> >> > The current color theme editor is designed for colibri, and does > not > >> look > >> >> > like flamingo does. We have several options here: > >> >> > - create a new color theme editor, especially for Flamingo > >> >> > - modify the current one to detect which skin is currenlty used, > and > >> >> change > >> >> > the preview. > >> >> > > >> >> > The application will be splited in 2 sections: > >> >> > 1/ a live preview where you can set some variables (what we > currenlty > >> >> have) > >> >> > 2/ a free textarea where the user can fill LESS code (for example, > >> some > >> >> > code downloaded on bootswatch). > >> >> > > >> >> > But a lot of applications already use the color theme as it is, via > >> the > >> >> > "colorThemeInit.vm" template. So we need a retro-compatibility: a > >> color > >> >> > theme computed by LESS must be usable with old color themes. > >> >> > > >> >> > Concretly, we will map the old color theme variables to the > bootstrap > >> >> ones, > >> >> > example: > >> >> > $theme.notificationSuccessColor = @brand-success > >> >> > > >> >> > But because of the section 2 (the free textarea), we are not able > to > >> know > >> >> > what will be the final value of a bootstrap variables without > parsing > >> the > >> >> > content of the textarea! > >> >> > > >> >> > What are the options we have: > >> >> > 1/ Implementing our own LESS parser/compiler in Java > >> >> > 2/ Trying to reuse the official LESS Parser through Rhino in a way > >> that > >> >> we > >> >> > can get the computed variables > >> >> > 3/ Do not parse the input but the ouput: parse the CSS code to get > the > >> >> > final values of the variables > >> >> > > >> >> > I'm for 3. > >> >> > > >> >> > The idea is to create some CSS classes like this: > >> >> > .colortheme-bordercolor{ > >> >> > color: @border-color; > >> >> > } > >> >> > > >> >> > which will be converted by LESS to: > >> >> > .colortheme-bordercolor{ > >> >> > color: #000000; > >> >> > } > >> >> > > >> >> > so we can parse it and know the value of $theme.bordercolor. It is > >> quick, > >> >> > simple, but it pollutes the output CSS a little. > >> >> > > >> >> > WDYT? > >> >> > > >> >> > Thanks, > >> >> > Guillaume > >> >> > _______________________________________________ > >> >> > devs mailing list > >> >> > [email protected] > >> >> > http://lists.xwiki.org/mailman/listinfo/devs > >> >> > > >> >> > >> >> > >> >> > >> >> -- > >> >> Denis Gervalle > >> >> SOFTEC sa - CEO > >> >> _______________________________________________ > >> >> devs mailing list > >> >> [email protected] > >> >> http://lists.xwiki.org/mailman/listinfo/devs > >> >> > >> > _______________________________________________ > >> > devs mailing list > >> > [email protected] > >> > http://lists.xwiki.org/mailman/listinfo/devs > >> _______________________________________________ > >> devs mailing list > >> [email protected] > >> http://lists.xwiki.org/mailman/listinfo/devs > >> > > _______________________________________________ > > devs mailing list > > [email protected] > > http://lists.xwiki.org/mailman/listinfo/devs > _______________________________________________ > devs mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/devs > _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

