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? 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

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

Reply via email to