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. > > > > > > > > ). 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 >