>
> Thanks,
> Simon
>
>
> On 9/10/18 6:46 PM, Thomas Mortagne wrote:
>
>> On Mon, Sep 10, 2018 at 3:47 PM Simon Urli <simon.urli(a)xwiki.com> wrote:
>>
>>>
>>>
>>>
>>> On 9/10/18 3:24 PM, Marius Dumitru Florea wrote:
>>>
>>>> On Mon, Sep 10, 2018 at 4:07 PM, Thomas Mortagne <
>>>> thomas.mortagne(a)xwiki.com>
>>>> wrote:
>>>>
>>>> On Mon, Sep 10, 2018 at 2:56 PM Marius Dumitru Florea
>>>>> <mariusdumitru.florea(a)xwiki.com> wrote:
>>>>>
>>>>>>
>>>>>> On Mon, Sep 10, 2018 at 3:42 PM, Thomas Mortagne <
>>>>>>
>>>>> thomas.mortagne(a)xwiki.com>
>>>>>
>>>>>> wrote:
>>>>>>
>>>>>> On Mon, Sep 10, 2018 at 2:13 PM Simon Urli
<simon.urli(a)xwiki.com>
>>>>>>>
>>>>>> wrote:
>>>>>
>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On 9/10/18 1:35 PM, Vincent Massol wrote:
>>>>>>>>
>>>>>>>>> Hi Simon,
>>>>>>>>>
>>>>>>>>> On 10 Sep 2018, at 13:05, Simon Urli
<simon.urli(a)xwiki.com>
>>>>>>>>>>
>>>>>>>>> wrote:
>>>>>
>>>>>>
>>>>>>>>>> Hi everyone,
>>>>>>>>>>
>>>>>>>>>> I'm working on the roadmap issues related to
the inline edition
>>>>>>>>>>
>>>>>>>>> with
>>>>>
>>>>>> WYSIWYG editor for macro content and macro parameters.
>>>>>>>
>>>>>>>>
>>>>>>>>> Cool :) We've been waiting for a long time about
this feature! See
>>>>>>>>>
>>>>>>>> below.
>>>>>>>
>>>>>>>>
>>>>>>>>> The first step is to add a flag to allow user specify
that a
>>>>>>>>>>
>>>>>>>>> content
>>>>>
>>>>>> or a parameter can be edited inline with the WYSIWYG editor.
>>>>>>>
>>>>>>>> The second step is to allow the CKEditor to detect where
the
>>>>>>>>>>
>>>>>>>>> content
>>>>>
>>>>>> and/or parameters should be edited.
>>>>>>>
>>>>>>>> Let's take the exampe of a simple macro without any
parameter,
>>>>>>>>>>
>>>>>>>>> which
>>>>>
>>>>>> currently produces this code:
>>>>>>>
>>>>>>>>
>>>>>>>>>> <div class="box infomessage">
>>>>>>>>>> <div class="title">
>>>>>>>>>> <span class="icon
info"></span>
>>>>>>>>>> some title
>>>>>>>>>> </div>
>>>>>>>>>> Some content
>>>>>>>>>> </div>
>>>>>>>>>>
>>>>>>>>>> We propose (me & Marius) to ask users to add
a wrapper with a
>>>>>>>>>>
>>>>>>>>> specific class around the content to tell the editor
it should only
>>>>>>>
>>>>>> allow
>>>>>
>>>>>> editing this content, e.g.:
>>>>>>>
>>>>>>>>
>>>>>>>>>> <div class="box infomessage">
>>>>>>>>>> <div class="title">
>>>>>>>>>> <span class="icon
info"></span>
>>>>>>>>>> some title
>>>>>>>>>> </div>
>>>>>>>>>> <span
class="editable-content">Some content</span>
>>>>>>>>>> </div>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> By “users”, I guess you mean macro developers?
>>>>>>>>>
>>>>>>>>
>>>>>>>> Here yes it's the macro developer. I'll try to be
more specific in
>>>>>>>> my
>>>>>>>> answers.
>>>>>>>>
>>>>>>>>
>>>>>>>>> So if I understand you well, you’re not planning to
add a
>>>>>>>>>
>>>>>>>> getter/setters to the Macro descriptor, to tell that the
macro
>>>>>>> content
>>>>>>> contains wiki markup and that it should be editable in the
WYSIWYG
>>>>>>>
>>>>>> editor?
>>>>>
>>>>>>
>>>>>>>> Actually we're planning to add the getter/setter
**and** the
>>>>>>>> specific
>>>>>>>> markup for the editor. The getter/setter (which I called
the flag
>>>>>>>> above), is here to specify that the macro will contain
inline
>>>>>>>>
>>>>>>> editable
>>>>>
>>>>>> content in WYSIWYG. The markup will specify *where* exactly is
this
>>>>>>>> content, and what shouldn't be changed.
>>>>>>>>
>>>>>>>
>>>>>>> About that "flag", you seems to plan a boolean but
I feel something
>>>>>>> more generic that we want to introduce since a long time
would be
>>>>>>> better: make the content descriptor return a type like
parameters
>>>>>>> descriptors do. The kind of inline editing you have in mind
right now
>>>>>>> would then be associated to the type List<Block> for
example (or
>>>>>>> CompositeBlock
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> or some another type if we want to differentiate
>>>>>>> between wiki content modified by the macro and wiki content
not
>>>>>>> modified by the macro
>>>>>>>
>>>>>>
>>>>>>
>>>>>> We need this differentiation.
>>>>>>
>>>>>
>>>>> Sure but as I said you can differentiate using types too and we need
>>>>> content types for other use cases so it's a good occasion. Also
when
>>>>> you use the type you can differentiate between wiki content and HTML
>>>>> content and support inline editing of HTML macro in the same system
>>>>> for example.
>>>>>
>>>>>
>>>> I'm not against your proposal. It's a bit more work though, to
define
>>>> the
>>>> types, but I suppose it's worth the effort.
>>>>
>>>
>> It's not much more work, just need to define one type for the current
>> use case ("final" wiki content). Other types can come later when
>> implementing support for them.
>>
>>
>>>>
>>>>
>>> So if I follow the idea would be to use this type defined for the
>>> content descriptor to specify the behaviour of the editor: e.g. if the
>>> content descriptor is defined as an html content, then the html editor
>>> would be used, if it's defined as an inline content, then it would be an
>>> editor with limitation to clean html and line returns, etc.
>>>
>>> Still it does not change the need to specify which elements of the
>>> content are editable, right?
>>>
>>
>> Sure but that's the "second step". I only talked about replacing
the
>> flag you defined as the first step by a more generic type :)
>>
>>
>>> Moreover I've the feeling that the parameters are already not supporting
>>> the different types for edition (e.g. a boolean parameter only shows a
>>> text input). So wouldn't it be a priority before putting a type on the
>>> content descriptor itself?
>>>
>>
>> The WYSIWYG does miss a lot of displayers and we need work on that for
>> sure but:
>> * you get a checkbox for boolean properties so the type is taken into
>> account
>> * having more specific displayers is not a requirement for working on
>> inline wiki editing
>>
>>
>>>
>>>>>
>>>>>>
>>>>>> ). The other types would be used in other use
>>>>>>> cases (syntax coloring for scripts, json editor, etc.). The
idea of
>>>>>>> using Java type is to be consistent with parameters and
reuse
>>>>>>> existing
>>>>>>> the displayers in the macro modal window for example but it
can cover
>>>>>>> this need too.
>>>>>>>
>>>>>>>
>>>>>>>> I guess that if the flag is set and the markup is not
present, then
>>>>>>>>
>>>>>>> the
>>>>>
>>>>>> entire content is considered as editable.
>>>>>>>>
>>>>>>>>
>>>>>>>>> Is that because you want to be finer-grained and have
macro content
>>>>>>>>>
>>>>>>>> which can have parts editable with the WYSIWYG while
having other
>>>>>>>
>>>>>> parts of
>>>>>
>>>>>> the content not editable (for example)?
>>>>>>>
>>>>>>>>
>>>>>>>> It's exactly why yes. On my example, the macro user
won't be able to
>>>>>>>> change the content of the title.
>>>>>>>>
>>>>>>>>
>>>>>>>>> Technically Macros don’t generate HTML, only XDOM. So
in order to
>>>>>>>>>
>>>>>>>> make
>>>>>
>>>>>> it easier for java macro developers, I’d suggest to introduce
some new
>>>>>>> wrapping Block to indicate this information. We might need
something
>>>>>>> similar for wiki macros too, to make it more reusable and
typed.
>>>>>>>
>>>>>>>>
>>>>>>>> I'd need to look more on wrapping block but after a
quick overlook
>>>>>>>> it
>>>>>>>> seems to make sense indeed.
>>>>>>>>
>>>>>>>>
>>>>>>>>> About parameters, our idea was to define a new
metadata attribute
>>>>>>>>>>
>>>>>>>>> and
>>>>>
>>>>>> to ask users to use it for specifying the content is editable,
such as
>>>>>>>
>>>>>> for
>>>>>
>>>>>> a parameter named foo:
>>>>>>>
>>>>>>>>
>>>>>>>>>> <span class="editable-content"
data-parameter="foo">my foo
>>>>>>>>>>
>>>>>>>>> parameter
>>>>>
>>>>>> value</span>
>>>>>>>
>>>>>>>>
>>>>>>>>> What’s your idea for editing parameters requiring
WYSIWYG? How do
>>>>>>>>>
>>>>>>>> you
>>>>>
>>>>>> present them in the UI? Do you have any mockup?
>>>>>>>
>>>>>>>>
>>>>>>>> I don't have any mockup right now. FTM I see it like
this:
>>>>>>>> - when creating the macro, the current text input
are improved
>>>>>>>> with
>>>>>>>> the CKEditor for the editable content/parameters
>>>>>>>> - when editing the macro, you stay in the main
editor UI, but
>>>>>>>> the
>>>>>>>> content is now editable instead of opening back the macro
UI
>>>>>>>>
>>>>>>>>
>>>>>>>>> However I don't know right now how the editor
would manage cases
>>>>>>>>>>
>>>>>>>>> such
>>>>>
>>>>>> as:
>>>>>>>
>>>>>>>> <span class="editable-content">Some
content with <span
>>>>>>>>>>
>>>>>>>>> class="editable-content"
data-parameter="myparameter">a
>>>>>>> parameter</span></span>
>>>>>>>
>>>>>>>>
>>>>>>>>>> So:
>>>>>>>>>> 1. Do you agree on the usage of a class
named
>>>>>>>>>> "editable-content"
>>>>>>>>>>
>>>>>>>>> which would be used as a tag to allow inline
edition?
>>>>>>>
>>>>>>>>
>>>>>>>>> Small details, there’s already the “contenteditable”
notion that
>>>>>>>>>
>>>>>>>> exists (see
https://developer.mozilla.org/
>>>>>>> fr/docs/Web/HTML/Attributs_
>>>>>>> universels/contenteditable) so “editable-content” is quite
close.
>>>>>>> Maybe
>>>>>>> we should have something more xwiki-specific? or more
>>>>>>> WYSIWYG-specific?
>>>>>>> Like “editable-wysiwyg” or “wysiwyg-editable”.
>>>>>>>
>>>>>>>>
>>>>>>>> I'm open to suggestion on this one.
"wysiwyg-editable" could be
>>>>>>>> nice.
>>>>>>>>
>>>>>>>>>
>>>>>>>>> My main comment is what I put above: how do we make
it easy for
>>>>>>>>>
>>>>>>>> macro
>>>>>
>>>>>> developers to specify this information.
>>>>>>>
>>>>>>>>
>>>>>>>>> 2. WDYT about using a data-parameter and this
class for inline
>>>>>>>>>>
>>>>>>>>> editing of parameters?
>>>>>>>
>>>>>>>>
>>>>>>>>> Before answering that part, I would need to
understand what’s the
>>>>>>>>>
>>>>>>>> proposal in term of UI.
>>>>>>>
>>>>>>>>
>>>>>>>>> Note that the main use case is for content but it’s
nice if you can
>>>>>>>>>
>>>>>>>> also support parameters. Now, accepting markup in
parameters is not
>>>>>>>
>>>>>> really
>>>>>
>>>>>> a great use case IMO and is usually a design issue so I’m not
sure we
>>>>>>> should spend that much time in supporting that. WDYT?
>>>>>>>
>>>>>>>>
>>>>>>>> We just discuss about macro parameters with Ludovic and
apparently
>>>>>>>>
>>>>>>> they
>>>>>
>>>>>> cannot support line returns, so we might have to use a custom
editor
>>>>>>>>
>>>>>>> for
>>>>>
>>>>>> those.
>>>>>>>>
>>>>>>>>
>>>>>>>>> The only macro parameter I know ATM that supports
markup is the
>>>>>>>>>
>>>>>>>> “title” param of the {{box}} macro and I think it’s badly
designed.
>>>>>>>
>>>>>> Note:
>>>>>
>>>>>> if you check the recent {{figure}} macro, I implemented this need
by
>>>>>>>
>>>>>> having
>>>>>
>>>>>> a {{figureCaption}} nested macro.
>>>>>>>
>>>>>>>>
>>>>>>>>> BTW this raises a question, will you support WYSIWYG
editing of
>>>>>>>>>
>>>>>>>> nested
>>>>>
>>>>>> macros?
>>>>>>>
>>>>>>>>
>>>>>>>> Not for the moment.
>>>>>>>>
>>>>>>>> Simon
>>>>>>>>
>>>>>>>>>
>>>>>>>>> Thanks
>>>>>>>>> -Vincent
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>>> Simon
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> [snip]
>>>>>>>>>
>>>>>>>>>
>>>>>>>> --
>>>>>>>> Simon Urli
>>>>>>>> Software Engineer at XWiki SAS
>>>>>>>> simon.urli(a)xwiki.com
>>>>>>>> More about us at
http://www.xwiki.com
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Thomas Mortagne
>>>>>>>
>>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Thomas Mortagne
>>>>>
>>>>>
>>> --
>>> Simon Urli
>>> Software Engineer at XWiki SAS
>>> simon.urli(a)xwiki.com
>>> More about us at
http://www.xwiki.com
>>>
>>
>>
>>
>>
> --
> Simon Urli
> Software Engineer at XWiki SAS
> simon.urli(a)xwiki.com
> More about us at
http://www.xwiki.com
>
--
Simon Urli
Software Engineer at XWiki SAS
simon.urli(a)xwiki.com
More about us at