Hi, > On 7 Jul 2018, at 19:55, Eduard Moraru <enygma2...@gmail.com> wrote: > > Great to hear you're progressing on this topic, Thomas! > > My only note was also (as Vincent pointed out) on the link syntax. If we > went with "/" instead of "." was because people were more accustomed to the > URL syntax and also that they would be more tempted to copy the URL as a > wiki link, instead of converting "/" to ".". > > Now, why don't we apply the same logic to parameter separators (i.e. > instead of ";" to use "&" and, hopefully, instead of "?" as the parameters > separator). > > Also, are we considering anchors as well (i.e. using "#MyHeading" instead > of "|anchor='HMyHeading'")? > > Ideally, it would be awesome if we could say that copy/pasting the exact > URL, right after the action part, would be supported when adding a wiki > link. > > Slightly off-topic, but related to that last part, so it might not be a bad > idea to talk about it: > This actually gets me realising that we don't have a way to link in pure > wiki syntax to a page in a specified mode/action (i.e. not only view, but > also edit/create/delete/etc.). Sure, we have the "path:" type, but that's > not exactly designed for that, but for whatever else we might need, and it > require either writing, by hand, technical details or to use velocity (i.e. > $xwiki.getURL($doc, 'mode')).
Regarding this we have https://jira.xwiki.org/browse/XRENDERING-22 Thanks -Vincent > > Thanks, > Eduard > > On Fri, Jun 29, 2018 at 7:20 PM, Thomas Mortagne <thomas.morta...@xwiki.com> > wrote: > >> On Fri, Jun 29, 2018 at 3:10 PM, Vincent Massol <vinc...@massol.net> >> wrote: >>> Hi Thomas, >>> >>> Good work! >>> >>> See below >>> >>>> On 29 Jun 2018, at 14:29, Thomas Mortagne <thomas.morta...@xwiki.com> >> wrote: >>>> >>>> Hi xwikiers, >>>> >>>> Some of us discussed that for a while and created/improved >>>> http://design.xwiki.org/xwiki/bin/view/Proposal/ >> DeprecatingSpaceAndSpaceReference >>>> and I finally started working on it. >>>> >>>> So here is what I pushed on master already: >>>> >>>> = PAGE EntityType and Page*Reference classes >>>> >>>> First thing first we now have a few new type in EntityType and the >>>> corresponding typed Page*Reference helpers. One for each of the >>>> element you can have in a page: >>>> * PAGE >>>> * PAGE_ATTACHMENT >>>> * PAGE_OBJECT >>>> * PAGE_OBJECT_PROPERTY >>>> * PAGE_CLASS_PROPERTY >>>> >>>> = Corresponding resolvers/serializer/providers >>>> >>>> Each of the already existing DOCUMENT oriented resolvers and >>>> serializers have their PAGE oriented implementation. >>>> >>>> = Conversion from DOCUMENT to PAGE world >>>> >>>> The entity resolvers automatically convert from/to DOCUMENT from/to >>>> PAGE world references. Do yes using a resolver is the official way to >>>> do that conversion. >>>> >>>> = Model script service >>>> >>>> The $services.model API also got his own new helpers to manipulate pages >>>> >>>> = New syntax >>>> >>>> Last but not least: pages reference have a very different syntax. >>>> >>>> To summarize it's a filesystem path syntax with support for parameters. >>>> >>>> Here is are a few examples: >>>> >>>> wiki:page1/page2;param1=value1;param2=value2;en_US >>>> >>>> wiki:page1/page2/attachment >>>> >>>> ../siblingpage >>>> >>>> * separator: "/" between all elements except WIKI which is still ":" >>>> * escaping: still "\" >>>> * current, parent support: like in a filesystem you can refer to the >>>> current page or parent page/wiki using "." and ".." >>>> * parameters: we now have syntax to express the parameters of an >>>> EntityReference. Each parameter is separated by a ";" at the end of >>>> the entity name >>> >>> Should we use “?” as the delimiter between reference and parameters to >> be closer to URI/URL syntax? >> >> This was my initial proposal but it was decided that ? was too common. >> >>> >>> <brainstorming> >>> Maybe we could even have a Page Reference be implemented as a >> hierarchical URI? (the wiki would be the scheme, the authority would be >> empty and fragments would be empty). >>> >>> In practice it would be hard since we need to have PageReference extends >> EntityReference. But if we were starting from scratch we would maybe use a >> URI or extend it. >>> >>> Sill it might make sense to at least be closer on the syntax aspect and >> thus use “?” for the delimiter. >>> </brainstorming> >>> >>>> * default parameter: the syntax have the concept of default parameter >>>> which mean a parameter for which you don't need to indicate the name. >>>> For example PAGE reference default parameter is “locale" >>> >>> "a parameter for which you don't need to indicate the name” —> does that >> mean for example: >>> >>> wiki:page1/page2;en_US >> >> Yes as you can see in the example I gave. >> >>> >>> ? >>> >>> What is the need? I’d find "wiki:page1/page2;locale=en_US” to be more >> explicit. >> >> You can write the name if you want. The idea is that right now that's >> actually our only really used parameter in reference and it's nicer to >> not have to write "local=" all the time >> >>> >>>> = TODO >>>> >>>> The next elements on the short term TODO list are: >>>> >>>> * support for page references in XWiki#getDocument (which essentially >>>> means add a fallback) >>>> * support for page references in various macros (generally means >>>> adding a "page" parameter as alternative to the existing "reference" >>>> or "document" parameter) >>> >>> What would be interesting now is to decide a usage strategy: >>> * Should we use the new page API for new code? >>> * Should we start converting old code to the page API? >> >> Need to finish with the TODO I listed first but for now I think the >> idea is to use the page API as much as possible (but as an >> experimental API so not in extensions yet) in new code and existing >> code you work on that would benefit from it and improve it and >> complete it along the way. >> >>> * Should we deprecate old Document-based APIs (and move them to legacy >> modules once we don’t use them anymore on our side)? >> >> This is not going to happen so soon for sure, there is many places >> which don't have page equivalent yet (just think about all the places >> where we store document references). >> >>> >>> It would be nice to have some doc/tutorial (maybe on >> https://extensions.xwiki.org/xwiki/bin/view/Extension/Model%20Module) to >> explain how to convert old code to new code and how to use the new APIs. >> >> Of course, will work on documentation when I'm done with the tasks I >> listed. Now most of the new PAGE API is very close to the DOCUMENT >> related equivalent so it won't be hard for someone used to the >> reference API in general to manipulate pages (that was one of the >> goals). >> >>> >>> Thanks >>> -Vincent >>> >>>> >>>> Thanks, >>>> -- >>>> Thomas Mortagne >>> >> >> >> >> -- >> Thomas Mortagne >>