On Sat, Jul 7, 2018 at 8:55 PM, Eduard Moraru <[email protected]> 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). > You are mixing the query string with the URL path parameters https://doriantaylor.com/policy/http-url-path-parameter-syntax . The query string is for the entire URL/path while each path segment can have its parameters. In our case each entity reference from the chain can have its own parameters. > > 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')). > > Thanks, > Eduard > > On Fri, Jun 29, 2018 at 7:20 PM, Thomas Mortagne < > [email protected]> > wrote: > > > On Fri, Jun 29, 2018 at 3:10 PM, Vincent Massol <[email protected]> > > wrote: > > > Hi Thomas, > > > > > > Good work! > > > > > > See below > > > > > >> On 29 Jun 2018, at 14:29, Thomas Mortagne <[email protected]> > > 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 > > >

