On Thu, May 9, 2019 at 4:15 PM Simon Urli <simon.u...@xwiki.com> wrote:

> Hi,
>
> On 09/05/2019 14:52, Vincent Massol wrote:
> > Hi Simon,
> >
> >> On 9 May 2019, at 09:36, Simon Urli <simon.u...@xwiki.com> wrote:
> >>
> >> Hi Vincent,
> >>
> >> On 09/05/2019 09:10, Vincent Massol wrote:
> >>> Hi Simon,
> >>>> On 7 May 2019, at 08:21, Simon Urli <simon.u...@xwiki.com> wrote:
> >>>>
> >>>> Hi everyone,
> >>>>
> >>>> I'm currently working on allowing inline editing on new wikimacros.
> >>> Why only on wikimacros? We also need to be able to edit existing
> wikimacros to make them inline-editable.
> >>
> >> of course, here I only meant that already existing macro wouldn't be
> inline editable immediately, they would require some edition for that.
> >>
> >>>> My first challenge right now is to cope with the problem of inserting
> the macro content and allowing to inline edit it.
> >>>>
> >>>> In order to do so, I propose to create two new dedicated macro:
> >>>>   - wikimacrocontent: would allow to insert and inline edit a wiki
> macro content
> >>>>   - wikimacroparameter: the same for a parameter.
> >>>>
> >>>> The idea would be to be able to write something such as:
> >>>>
> >>>> {{velocity}}
> >>>> {{wikimacrocontent/}}
> >>>> This is a content of $xcontext.macro.content.length() characters.
> >>>> {{/velocity}}
> >>> I don’t understand. The content is "This is a content of
> $xcontext.macro.content.length() characters.” but it’s outside of
> “{{wikimacrocontent/}}”, is this a typo?
> >>
> >> Indeed you didn't understand my example :)
> >> It was the code of the wikimacro, not the code of its usage.
> >
> > Right...
> >
> >> So if I call this macro foobar, I will execute it with something such
> as:
> >> {{foobar}}foo bar{{/foobar}}
> >>
> >> And it will ouput:
> >> foo bar
> >> This is a content of 7 characters.
> >
> > Ah yes, my bad, I mixed up the macro code content and the macro usage
> content. Indeed, I now understand that we’re trying to make changes to the
> macro usage content.
> >
> > Now we need to take into account in the design the ability to provide
> some custom mapping between what you edit and how it modifies the usage
> content.
> >
> > For example, imagine the JIRA macro when using a static list of JIRA
> issues:
> >
> > {{jira url=“…”}}
> > XWIKI-1000
> > XWIKI-1001
> > …
> > {{/jira}}
> >
> > Or Imagine the {{gallery}} macro when used with static images:
> >
> > {{gallery}}
> > img1
> > img2
> > {{/gallery}}
> >
> > In these 2 cases we’ll want some custom editors ideally and a custom
> serialization mechanism to generate back the modified content. This needs
> to be possible (pluggable) with the new APIs.
>
> Yeah I didn't mention it yet since it comes next, but it's already
> something I had in mind since Denis already has this usecase for his
> project. I need to discuss with Marius about it since it really reminds
> what has been done for the pickers, but anyway for me it should be a
> specific parameter of the macro that would be used to load a given
> widget for edition and call a script to process/transform the input to
> the expected output.
>
>

> Another thing mentioned by Denis that we should plan in the design, is
> the ability to only allow some WYSIWYG inputs for inline editing: for
> example, restricting to only inline styling, so disabling in the WYSIWYG
> editor everything's related to a new block.
>

This is already possible. See
https://github.com/xwiki-contrib/application-ckeditor/blob/master/webjar/src/main/resources/config.js#L114
. List<Block> allows everything ATM but we can introduce new "content"
types that restrict the allowed content using the allowedContent
configuration property.


> But again, for me those are features that are coming next.
>
> Simon
>
> >
> > Note that in these 2 examples I’m mentioning “static” since it’s
> possible to use Velocity script around the macro. But in this case the
> outer macro becomes the {{velocity}} macro which will be inline editable
> only as text.
> >
> > Other examples are when the macro code script parses the content and
> would like to expose only some part of it as inline editable. This requires
> a way to mark some subpart as being inline editable and a custom serializer
> to reconstruct the modified content.
> >
> >
> >> In edition the "foo bar" part will be inline editable, but not the
> "This is a content of 7 characters.".
> >> Did you mean:
> >>> {{wikimacrocontent}}
> >>> This is a content of $xcontext.macro.content.length() characters.
> >>> {{/wikimacrocontent}}
> >>> ?
> >>>> So the purpose of those macros would be twofold:
> >>>>   1. to ease the insertion of macro content/parameters (no need to
> always use {{velocity}}$xcontext.macro.content{{/velocity}}
> >>> What is $xcontext.macro.content? I’ve never used that when writing
> wiki macros.
> >>
> >> According to the doc it's currently the standard way to access the
> macro content:
> https://www.xwiki.org/xwiki/bin/view/Documentation/DevGuide/Tutorials/WritingMacros/WikiMacroTutorial/#HContent
> >>>>   2. to create the dedicated metadata around the content and to be
> processed during wikimacro rendering to allow inline editing
> >>> I don’t see any start/end. Why not:
> >>> {{inlineEditable}}
> >>> My content that is inline editable
> >>> {{/inlineEditable}}
> >>> ?
> >>> Another approach is to use scripting, as in:
> >>> $xcontext.macro.startInlineEditableContent()
> >>> My content that is inline editable
> >>> $xcontext.macro.stoptInlineEditableContent()
> >>> Or using velocity macros:
> >>> #startInlineEditableContent
> >>> My content that is inline editable
> >>> #stoptInlineEditableContent
> >>> Yet another idea would be to have a macro xclass parameter to make the
> whole content inline editable (checkbox), and the 2 approaches above would
> be when you need fine-grained details (ie not have the whole content inline
> editable).
> >>> Question: how is this done on other projects already using the concept
> of inline editable wiki macros? (I know one that I think you looked at
> Simon, but I don’t know how they did it :)).
> >>
> >> So if you're thinking about Denis' and other works about that,
> >
> > yes was thinking about this.
> >
> >> it's actually not wiki macro but Java macros. I also thought it was
> wiki macro but I was wrong. And it mainly use specific CSS classes and a
> rewrite of the CKEditor javascript to perform it.
> >
> > ok, maybe Ludovic was wrong then because I’m pretty sure he mentiopned
> that Denis was doing this with wiki macros.
> >
> > Thanks
> > -Vincent
> >
> >>
> >> Simon
> >>> Thanks
> >>> -Vincent
> >>>> Of course those macro would be only to be used inside a wikimacro.
> >>>> I started to develop the wikimacroccontent, so I have a first working
> POC, but I'd like to know WDYT about this.
> >>>>
> >>>> I would also be really happy if you could give me some wikimacro
> examples where the inline editing would make sense, so I could use it in my
> tests.
> >>>>
> >>>> Thanks,
> >>>> Simon
> >>>> --
> >>>> 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
> >
>
> --
> Simon Urli
> Software Engineer at XWiki SAS
> simon.u...@xwiki.com
> More about us at http://www.xwiki.com
>

Reply via email to