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
* 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"

= 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)

Thanks,
-- 
Thomas Mortagne

Reply via email to