On Wed, May 28, 2014 at 3:16 PM, Caleb James DeLisle <[email protected]> wrote:
>
>
> On 05/28/2014 11:25 AM, Marius Dumitru Florea wrote:
>> 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
>
>
> Guillaume ran his explanation by me to verify that he was explaining
> it reasonably well. I thought I'd throw my understanding in to see if
> it helps.
>
> I gather there's a need to update a few velocity variables from CSS,
> this is because all of the old extensions depend on these variables
> and if they're not updated according to the CSS then the old applications
> will look hilarious when used with the new skin.
>
> Even if we hooked into the colortheme editor and trapped the changes
> to the theme to update the old variables, this would not allow us to
> pull in bootstrap themes from around the internet by pasting in the LESS
> code.
>
> Guillaume's solution was to add some special LESS code which assigns
> the desired values to a set of uniquely named classes and then *grep*
> the output CSS for those classes and copy over the values.
>
> Something like:
> word = cssOutput.indexOf(".colortheme-magic-class-21246798237");
> begin = cssOutput.indexOf('{', word);
> end = cssOutput.indexOf('}', begin);
>
> A fairly clever method of making XWiki compatible with arbitrary
> LESS code and arbitrary bootstrap themes and +1 for me.
>
> Guillaume: did I understand this properly?

> Marius: does my explanation make any sense?

Yes, thanks :), it was clear for me already though (as I stated),
except for the used CSS 'parser' which Guillaume explained as a reply.

Thanks,
Marius

>
> Thanks,
> Caleb
>
>
>>
>> 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
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to