On Wed, Sep 12, 2018 at 5:27 PM Marius Dumitru Florea <mariusdumitru.flo...@xwiki.com> wrote: > > On Wed, Sep 12, 2018 at 6:20 PM, Thomas Mortagne <thomas.morta...@xwiki.com> > wrote: > > > On Wed, Sep 12, 2018 at 5:16 PM Marius Dumitru Florea > > <mariusdumitru.flo...@xwiki.com> wrote: > > > > > > On Wed, Sep 12, 2018 at 6:02 PM, Marius Dumitru Florea < > > > mariusdumitru.flo...@xwiki.com> wrote: > > > > > > > On Wed, Sep 12, 2018 at 5:18 PM, Simon Urli <simon.u...@xwiki.com> > > wrote: > > > > > > > >> Hello everyone, > > > >> > > > >> as a follow up of this proposal and the discussion we had, I just > > created > > > >> the following design proposal: > > > >> > > > >> https://design.xwiki.org/xwiki/bin/view/Main/ > > MacroInlineEditingContent/ > > > >> > > > >> Let me know what you think about it. > > > >> > > > > > > > > Regarding the Content Descriptor, which Syntax(es) will activate the > > > > inline editing of the macro content? I'm asking because the Syntax of > > the > > > > content is not the most important part. The most important part for the > > > > WYSIWYG editor is to know if the macro code outputs the macro content > > > > without transforming it. Without this it cannot enable inline editing. > > If > > > > the macro output is rendered without modifications then the WYSIWYG > > editor > > > > can enable inline editing but it needs to know in which Syntax to > > convert > > > > the HTML produced while editing inline. So to summarize: > > > > > > > > * First the WYSIWYG editor needs to know if the macro content is > > rendered > > > > without modifications > > > > * then the WYSIWYG editor needs to know the target Syntax to which to > > > > convert the HTML > > > > > > > > > > Let me try to make this even more clear. The WYSIWYG editor needs to > > take > > > the following decisions: > > > > > > [OPTIONAL] "Should I display the macro content (plain) text area on the > > > Macro Edit dialog?" > > > > > > If the macro content can be edited inline within the editing area then it > > > probably make sense to not display the text area on the Macro Edit > > dialog. > > > But for this we need some *static* information in the macro descriptor to > > > indicate that the macro content can be edited inline. > > > > > > [MANDATORY] "Should I enable inline editing for this macro?" > > > > > > The WYSIWYG editor can scan the macro output DOM (HTML) for some special > > > markers (attributes) to determine if the macro content can be edited > > inline > > > > > > > > > > [MANDATORY] "To which syntax do I need to convert the HTML from the macro > > > content?" > > > > > > When saving the page the editor needs to convert the macro content from > > > HTML to some syntax. The target syntax needs to be specified either in > > the > > > macro output DOM (HTML) using some attributes or in the macro descriptor. > > > > > > > That's only if the syntax is different from the current syntax (which > > is not the case for most inline edited macros containing wiki > > content). > > > > Exactly! The macros we target with this feature use the current syntax (of > the page where the macro is called) for their content.
My point is that the WYSIWYG know the syntax already you don't need each macro to provide it as metadata. > > > > > > > > > > Hope this helps, > > > Marius > > > > > > > > > > > > > > > > > >> > > > >> Thanks, > > > >> Simon > > > >> > > > >> > > > >> On 9/10/18 6:46 PM, Thomas Mortagne wrote: > > > >> > > > >>> On Mon, Sep 10, 2018 at 3:47 PM Simon Urli <simon.u...@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.morta...@xwiki.com> > > > >>>>> wrote: > > > >>>>> > > > >>>>> On Mon, Sep 10, 2018 at 2:56 PM Marius Dumitru Florea > > > >>>>>> <mariusdumitru.flo...@xwiki.com> wrote: > > > >>>>>> > > > >>>>>>> > > > >>>>>>> On Mon, Sep 10, 2018 at 3:42 PM, Thomas Mortagne < > > > >>>>>>> > > > >>>>>> thomas.morta...@xwiki.com> > > > >>>>>> > > > >>>>>>> wrote: > > > >>>>>>> > > > >>>>>>> On Mon, Sep 10, 2018 at 2:13 PM Simon Urli <simon.u...@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.u...@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.u...@xwiki.com > > > >>>>>>>>> More about us at http://www.xwiki.com > > > >>>>>>>>> > > > >>>>>>>> > > > >>>>>>>> > > > >>>>>>>> > > > >>>>>>>> -- > > > >>>>>>>> Thomas Mortagne > > > >>>>>>>> > > > >>>>>>>> > > > >>>>>> > > > >>>>>> > > > >>>>>> -- > > > >>>>>> Thomas Mortagne > > > >>>>>> > > > >>>>>> > > > >>>> -- > > > >>>> Simon Urli > > > >>>> Software Engineer at XWiki SAS > > > >>>> simon.u...@xwiki.com > > > >>>> More about us at http://www.xwiki.com > > > >>>> > > > >>> > > > >>> > > > >>> > > > >>> > > > >> -- > > > >> Simon Urli > > > >> Software Engineer at XWiki SAS > > > >> simon.u...@xwiki.com > > > >> More about us at http://www.xwiki.com > > > >> > > > > > > > > > > > > > > > > -- > > Thomas Mortagne > > -- Thomas Mortagne