Hi Simon,

> On 17 Oct 2018, at 10:12, Simon Urli <simon.u...@xwiki.com> wrote:
> 
> Hi Vincent and all,
> 
> On 10/17/18 9:41 AM, Vincent Massol wrote:
>> Hi Simon,
>>> On 16 Oct 2018, at 17:43, Simon Urli <simon.u...@xwiki.com> wrote:
>>> 
>>> Hello everyone,
>>> 
>>> I'm coming back on this proposal as the work is going on, to basically 
>>> propose to dropping the warning on copy action.
>>> 
>>> I try to sum up why in the following.
>>> 
>>> When implementing the proposal, I was adviced to use an event listener, 
>>> observing the deleting event for informing the user if he were doing a 
>>> refactoring on a document containing an XClass.
>>> This work is already implemented and working for Moving/Renaming pages 
>>> (which involve deleting the old page) and of course deleting.
>> The nice part about the listener is that it works for all use cases:
>> * rename/move from the UI
>> * rename/move from scripts
>> * etc
> 
> To ease the discussion I just created a design page with some screenshot of 
> my current work. Then you can see what it looks like for the user: 
> https://design.xwiki.org/xwiki/bin/view/Proposal/PreventUserFromXClassRefactoring

Ok cool so it seems you have it implemented at both the job level and the 
listener level.

> 
>> The bad parts are:
>> 1) right now we don’t provide a nice UI when an event is cancelled. AFAIR we 
>> just display a stack trace in the UI which is definitely not good enough. 
>> Are you improving this part?
> 
> I reused the existing UI which does not look so bad IMO (see the screenshot 
> in the design page).

This is what happens in the AntiSpam app when the event is cancelled (ie when 
it finds some spam in the doc):
https://extensions.xwiki.org/xwiki/bin/download/Extension/AntiSpam%20Tool%20Application/antispam-error.png

 As you can see it’s not really user-friendly.

Maybe you don’t get this because you’re running inside a job? But in this case 
I don’t understand why you need a listener since you check for XClass before 
you start the move/rename.

I must be missing something.

> 
>> 2) this is after the fact. Imagine that you’re renaming a set of pages and 
>> among them there are several coming from an app. It’ll work fine on pages 
>> not having an XClass (like moving the page having an XObject of that XClass) 
>> and then failing down the line on the page having the XClass. That’s a 
>> problem because the xobject page will be wrongly moved, since it doesn’t 
>> make sense that it’s moved if the other pages of the app are not moved. 
>> Generally speaking you’ll have a bad state that is not easy to rollback.
>> This is why for me the check also has to be done in the move/rename UI and 
>> verify that among the list of pages there are none with XClass and if so 
>> prevent moving/renaming any page.
>> This is not in contradiction with the listener but the more important (from 
>> a usage POV) is the check in the move/rename UI and not the listener which 
>> is a more advanced use case.
> 
> There might be a misunderstanding here: I use the listener to check the event 
> that are fired during the rename/move. As you can see in my screenshot, I got 
> the warning in the move/refactoring UI.

This listener is registered only during rename/move?

What happens if I write a script that moves/renames pages with XClass?

>>> Now going back on "Copy" the page, it's another job as I cannot rely on a 
>>> "Deleting" event. I checked quickly and I don't think I really could rely 
>>> on other events for this: basically copying is about creating a document 
>>> and updating its content, and I don't think we want to rely on those event 
>>> for this mechanism.
>>> 
>>> So unless you have another proposal to handle this case, I propose to 
>>> simply drop it.
>>> 
>>> Do you agree?
>> AFAIK if you copy a set of pages with pages having an XClass in it, then the 
>> copied pages won’t work so we shouldn’t drop this. We should just implement 
>> the protection at the UI level (ie the copy action), same as for rename/move 
>> and not implement the listener part (ie not support the script use case).
> 
> 
> I don't agree: the pages would work, but if they contain XObject they won't 
> use the copied XClass, only the older one.
> So for me the issue is not exactly the same: the problematic is not about 
> copying an XClass here, but a couple XClass + XObject. More difficult to 
> detect and to handle IMO.

I still think we should handle it with a warning to explain this. It’s easy for 
me, we just need to check for XClass and warn that any copied pages having a 
link to this XClass will no longer point to it but will keep pointing to the 
original XClass. Easy to do.

Thanks
-Vincent

> 
> Simon
>> Thanks
>> -Vincent
>>> 
>>> Simon
>>> 
>>> 
>>> On 9/26/18 10:27 AM, Simon Urli wrote:
>>>> Hi everyone,
>>>> ok trying to sum-up (I'm only talking about cases with XClass below, to 
>>>> simplify):
>>>>   - according to Vincent, we should completely prevent simple users to 
>>>> copy/move/rename and only allow advanced users to do it after a warning
>>>>   - according to Adel & Clément: preventing simple users will be useless 
>>>> as they can easily switch the advanced feature in their account
>>>>   - according to Marius copying a page/app is not necessarily harmful 
>>>> compared to moving/renaming and we should manage it differently.
>>>> I really don't know the practice of users on the field, but it looks to me 
>>>> that preventing simple users to do the action and telling them to ask an 
>>>> advanced user is actually a good trade-off:
>>>>  1. it will warn users that they might be doing something wrong
>>>>  2. it's not something completely blocking: either they ask for the 
>>>> admin/advanced user, or they know they can switch the advanced features by 
>>>> themselves, at their own risks
>>>> Now maybe we can only do the warning for the "copy" action.
>>>> WDYT?
>>>> Simon
>>>> On 9/25/18 11:36 AM, Vincent Massol wrote:
>>>>> Hi Marius,
>>>>> 
>>>>>> On 25 Sep 2018, at 11:34, Marius Dumitru Florea 
>>>>>> <mariusdumitru.flo...@xwiki.com> wrote:
>>>>>> 
>>>>>> On Sun, Sep 23, 2018 at 11:12 AM Vincent Massol <vinc...@massol.net> 
>>>>>> wrote:
>>>>>> 
>>>>>>> Hi Simon,
>>>>>>> 
>>>>>>>> On 21 Sep 2018, at 16:58, Simon Urli <simon.u...@xwiki.com> wrote:
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> On 9/21/18 4:53 PM, Adel Atallah wrote:
>>>>>>>>> +1 for the warning, but I would not forbid simple users from renaming
>>>>>>>>> or moving pages but instead just hide the action (from the page menu).
>>>>>>>> 
>>>>>>>> OK I should have written it: by "forbid" I meant:
>>>>>>>> 
>>>>>>>> 1. Hide the action from the menu
>>>>>>>> 2. Return an error message if the user try to access the
>>>>>>> renaming/moving page (using forged URL)
>>>>>>>> 
>>>>>>>> So you suggest we shouldn't do 2?
>>>>>>> 
>>>>>>> So +1 to prevent/warn the user when doing a move/renaming
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>> AND copy pages containing XClass definitions
>>>>>> 
>>>>>> 
>>>>>> FTR, copying a single page having an XClass definition is not dangerous 
>>>>>> (it
>>>>>> won't break the application that owns the page), as it only creates a new
>>>>>> class definition. Copying an entire application is not dangerous either.
>>>>>> The copy won't work like the original application (this justifies a 
>>>>>> warning
>>>>>> as it may fail the user expectations), but the original application will
>>>>>> still work. Renaming or moving an application is dangerous as it breaks 
>>>>>> the
>>>>>> application.
>>>>> 
>>>>> Yes you’re correct. Unless the user does a copy + delete ;)
>>>>> 
>>>>> Thanks
>>>>> -Vincent
>>>>> 
>>>>>> 
>>>>>>> (the message should list all such pages).
>>>>>>> 
>>>>>>> -1 to hide the action from the menu (if you’re talking about the
>>>>>>> “Move/Rename” and “Copy" actions) because:
>>>>>>> 1) you get to choose whether you move/rename/copy children after you 
>>>>>>> click
>>>>>>> the action
>>>>>>> 2) even when the current page has an XClass, the user wouldn't 
>>>>>>> understand
>>>>>>> why he cannot see/click on the action. It’s better that he can do it but
>>>>>>> get an error message, explaining why and telling him that to contact an
>>>>>>> advanced users if he really needs to do it.
>>>>>>> 
>>>>>>> Thanks
>>>>>>> -Vincent
>>>>>>> 
>>>>>>>> 
>>>>>>>>> On Fri, Sep 21, 2018 at 4:44 PM Simon Urli <simon.u...@xwiki.com>
>>>>>>> wrote:
>>>>>>>>>> 
>>>>>>>>>> Hi all,
>>>>>>>>>> 
>>>>>>>>>> users might currently break their AWM application by renaming/moving
>>>>>>>>>> pages containing XClass definition.
>>>>>>>>>> 
>>>>>>>>>> We need a proper refactoring operation to be able to properly do such
>>>>>>>>>> move/rename. But this feature might take a while to be completely
>>>>>>>>>> available.
>>>>>>>>>> 
>>>>>>>>>> In the meantime I propose that we prevent users from renaming/moving
>>>>>>>>>> pages containing XClass.
>>>>>>>>>> 
>>>>>>>>>> What I propose is the following:
>>>>>>>>>>   - Forbid completely *simple users* to rename/move pages containing
>>>>>>> XClass
>>>>>>>>>>   - Display a warning to *advanced users* when they perform such
>>>>>>>>>> operation: the same kind of warning we already have when performing
>>>>>>> edit
>>>>>>>>>> on XWiki pages
>>>>>>>>>> 
>>>>>>>>>> WDYT?
>>>>>>>>>> 
>>>>>>>>>> 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
> 
> -- 
> Simon Urli
> Software Engineer at XWiki SAS
> simon.u...@xwiki.com
> More about us at http://www.xwiki.com

Reply via email to