> On 23 Feb 2019, at 14:02, Clemens Robbenhaar <robbenh...@green-meadows.de> 
> wrote:
> 
> Hi Vincent,
> 
>> Hi Clemens,
>> 
>> 
>>>> Hi devs,
>>>> 
>>>> Because of tomcat and because tomcat is by far the most used container for 
>>>> xwiki and because we also bundle tomcat in the debian and docker 
>>>> dsitributions, I think we should disallow / and \ in page names by 
>>>> default. It's causing too much trouble for users. We keep having users 
>>>> posting problems and for one user who post a problem there are 100 who 
>>>> don't.
>>>> 
>>>> The latest one: 
>>>> https://forum.xwiki.org/t/please-help-broken-link-routing-cannot-open-page-from-navigation-any-help-appreciated/4448
>>> +1 for me for the stripping of slashes. Even if configured properly there 
>>> is a problem with tomcat: if you create a page e.g. in the Sandbox with a 
>>> title of "Page A / B", this creates a page with the reference "Sandbox.Page 
>>> A . B.WebHome", and you get an "empty" intermediate space.
>> I’ve just tested with the XWiki Docker image 10.11.3, where Tomcat is 
>> correctly configured and it works as it’s supposed to:
> 
> Interesting. I run into this issue on a regular basis with the standard 
> Debian package, but without docker (so one gets the default Debian tomcat, 
> which needs configuration tweaks anyway). It seems I miss something that is 
> configured in the docker image; but this is not documented at 
> https://www.xwiki.org/xwiki/bin/view/Documentation/AdminGuide/Installation/InstallationWAR/InstallationTomcat/#HTroubleshooting
>  unless I missed it there, too. (Or it is caused by having apache httpd in 
> front of it.) I need to check this - but nothing relevant for the discussion 
> here.

All that is done is to configure 
https://github.com/xwiki-contrib/docker-xwiki/blob/master/template/tomcat/setenv.sh#L33

If you have an apache front end, then you also need this (documented at 
https://www.xwiki.org/xwiki/bin/view/Documentation/AdminGuide/Installation/InstallationWAR/InstallationTomcat/#HAllowing222F22and225C22inpagenames
 ):

https://httpd.apache.org/docs/current/mod/core.html#allowencodedslashes

> 
>>>  As users mostly see titles in the current XWiki version, it should not 
>>> matter to them what happens to the page name.
>>> 
>>>> Implementation idea:
>>>> * Offer an extension point in the create page UI to allow plugging some 
>>>> cleaning algorithm
>>>> * Provide the \ and / cleaning algorithm by default
>>>> * Handle backward compat. Find ways to not break existing users who are 
>>>> having / and \ in page names. For example we could imagine a property in 
>>>> xwiki.properties that we would set to point to the hint of the / and \ 
>>>> cleaner component. Thus existing users would need to voluntarily upgrade 
>>>> their xwiki.properties to have it if they want it. We would need to 
>>>> provide some script to convert existing pages with / and \ too probably.
>>>> 
>>>> WDYT?
>>> About backwards compatibility, I do not get the point. What will break for 
>>> users who have already existing pages?
>>> As long as the cleaning algorithm only runs on newly created pages there 
>>> should not be any bw/compat problem.
>> Yes you’re right. But what’s important is to not change the behavior: if 
>> they were using “/“ and “\” in page name we shouldn’t break them and they 
>> should continue to do so unless they choose not to. However for new users we 
>> can configure them to filter page names by default.
>> 
>> Hence my proposal about the new config property in xwiki.properties. When 
>> you uprgade you’ll decide if you want to merge it or not and if not you’ll 
>> continue to get the same behavior as before.
>> 
>>> If they really want no cleaning, we can provide them with a property which 
>>> contains the characters to be scrapped from the name with a default value 
>>> of '/\', and if they do not want this, they can set this property to an 
>>> empty value.
>> I prefer the implementation that I mentioned based on a component role and 
>> provide the hint in the config. It not allows the 2 use cases mentioned 
>> above but also any other type of custom use cases (other characters to 
>> strip, different logic, like force all creations under a given page, etc). 
>> The idea would be to take the reference as input and clean it and generate 
>> another reference as output (and display the cleaned version to the user 
>> somehow so that there’s no surprise - display the value that’ll be used as a 
>> form field hint for ex).
> 
> Maybe one can have both: the property for the hint to configure the 
> component, and a property for the preinstalled component with the characters 
> it removed from the page name. If the hint points to that component, it can 
> be further customized with the latter property.

Yes, we can have a default component implementation (a “stripping” one that is 
customizable and which allows choosing stripping a set of characters).

> But that is a detail; I can see the idea of a component selected via hint is 
> more flexible, and no objections from my side to that approach.

Cool

Thanks
-Vincent

> 
> Best,
> Clemens
> 
>>> Or what am I missing here?
>>> 
>>> Best,
>>> Clemens
>>> 
>>>> Thanks
>>>> -Vincent
>>> P.S. As a side note, when using MySQL creating spaces with a trailing 
>>> whitespace seem to cause some odd problems, too. I have seen at least one 
>>> occurrence of an entry in the xwikispaces with no corresponding entries in 
>>> xwikidoc. This causes an entry in the navigation tree which leads to a 
>>> non-existing page and no good way to get rid of it from a users point of 
>>> view.
>> Yeah just tested and it worked fine for me (the URL is 
>> http://localhost:8080/bin/view/Test%20/ ).
>> 
>>> I have not figured out how to reproduce the problem, unfortunately.
>>> 
>>> (For the issue with trailing spaces try "select 'x' = 'x ', 'x' like 'x '; 
>>> "  and read https://dev.mysql.com/doc/refman/5.7/en/char.html )
>>> 
>> Vaguely rings a bell. Would be great to open a jira issue if you can 
>> reproduce the issue with the query.
>> 
>> Thanks
>> -Vincent
>> 
> P.S. yes, if I had been able to reproduce, I would have created an issue 
> already  ;)

Reply via email to