Content Organization
How to organize Content
You organize content in your wiki by putting them inside pages (a.k.a Documents). Each page usually holds content on a given topic.
However there are several ways to organize your wiki pages:
- You can have one or several subwikis. A (sub)wiki is a collection of pages. You could use for example one wiki for handling content related to a given Project and another wiki for content related to another Project. By having several wikis, you can delegate the administration of that wiki to some specific user or group and the Look & Feel of that wiki can be controlled independently of other wikis.
- Inside a wiki, you can create a hierarchy of pages, by creating pages inside other pages. This feature is called "Nested Pages". For example you could have a page "CEO" inside a page "Boarding" inside a page "Management" inside a page "Staff". When viewing the "CEO" page you would see a Breadcrumb with the following:
In order to view the full organization of your pages in the current wiki, we offer an Index Application, which has a Tree-view. For example with the example above, you would see:
Terminology
- Nested Page (a.k.a Non-Terminal Page): This is a wiki page that can have children pages. Technically a Nested Page is implemented as a Space (i.e. a WebHome page).
- Non-Nested Page (a.k.a Terminal Page): This a wiki page that cannot have children pages. Applications and script can create Terminal Pages. Advanced Users are also able to create Terminal Pages from the UI. Standard Users are only able to create Nested Pages.
- Nested Space: A Space which has another Space as parent. Users only have to deal with Nested Pages, which is hiding the fact that Nested Pages are emulated using Nested Spaces. This is why the concept of Nested Spaces still exists.
History
Up to XWiki 7.1, there has been 2 ways to organize content in XWiki:
- Wiki > Space > Page (which includes rights inheritance and administration features)
- Page > Child page > Child page of child page > ... (which is used for hierarchical navigation purposes)
Note that both are independent: a page can have a parent page in a different space/wiki than its own .
While this was working, we've found that it could create confusion for end-users, leading to questions such as:
- Should I create a wiki or a space for my team?
- Which navigation should I put on my home page: list of spaces or treeview of pages?
- Can I set rights on a page that is under a space?
At the same time, for a long time there have been discussions on the list about the future "new model" of XWiki, which would ideally include
Nested Spaces, offering the following features:
- Unified way to handle hierarchical navigation (Page > Sub-page > Sub-sub-page >...)
- Navigation reflected in URLs (.../PageA/PageB/PageC)
- Inheritance of access rights (rights on PageA apply to PageB and PageC, unless defined otherwise. Rights on PageB supersede those on PageA
and also apply to PageC, and so on.)
In the end, we took the opportunity to move from the previous way to this new way of organizing pages in XWiki 7.2.
In an ideal world, going from the old model to the new one would imply a total rewrite of the model. Instead of pages and spaces, you would have an entity than is both a container and a document. That entity, probably called a node, would have its own content, associated properties, and a list of children (similar to the way JCR models things).
In the real world, in order not to break retro-compatibility with many existing features and applications we had to keep the concepts of "Page"
and "Space" in XWiki while adapting them to emulate the Nested Pages feature. Here's what we've done to achieve this by default:
- We've hidden the parent-child feature
- When creating a new page, the system automatically creates Page.WebHome, which creates a Space, though this is hidden in the URL (you only see .../Page/)
- For advanced users, we added the ability to create "Terminal Pages" which are pages that are not Spaces (as before). This is meant mostly for Application creators.