Hi Jerome, Thanks for jumping in. On Mon, Sep 19, 2011 at 6:37 PM, Jerome Velociter <[email protected]> wrote:
Hi Marius
On Mon, Sep 19, 2011 at 4:34 PM, Marius Dumitru Florea < [email protected]> wrote:
Hi devs,
Here's the sheet resolution algorithm I have implemented in
https://github.com/xwiki/xwiki-platform/blob/cbad868094b9cc9d811621670e32059... .
getSheets(document, action) : List<DocumentReference>
(1) If there is a "sheet" request parameter that points to a sheet that supports the passed action, return a reference to that sheet.
(2) For each object of type XWiki.DocumentSheetBinding attached to the passed document check if the "sheet" property points to a sheet that supports the passed action. Return the computed list, if not empty.
(3) For each type of object attached to the passed document:
(3.1) For each object of type XWiki.ClassSheetBinding attached to the document defining the class check if the "sheet" property points to a sheet that supports the passed action. (3.2) If the class doesn't have any XWiki.ClassSheetBinding object then check if <ClassName><ActionName>Sheet exists (3.3) If not, then check if <ClassName>Sheet exists and supports the passed action (3.4) If not, then check if "sheet.defaultClassSheetBinding" configuration property specifies a sheet for the class we're looking at
Return the computed list if not empty.
(4) If the passed document is a class (holds a class definition) then return a reference to the default class sheet (XWiki.ClassSheet) if it supports the passed action.
Otherwise return an empty list.
Question : how do you order the display of sheets. Is this out of scope of the sheet manager ? (I am especially interested in ordering of multiple results in step 3.1)
As I was telling to Denis, this is not the topic of this mail. SheetManager returns the list of sheets and DocumentDisplayer (hint=sheet) chooses which sheet to apply. Currently, SheetDocumentDisplayer applies the first sheet the current user has the right to view. We can discuss about this in a different mail if you think there are better implementations. At one point I was considering aggregating the sheets (i.e. display them one after another, in the order they appear in the list returned by the SheetManager) but I preferred to have a simple implementation in 3.2. Thanks, Marius
Jerome.
I'd like you to vote on each of the steps of the algorithm. Are there steps you think I should drop?
I'm obviously +1 for each of the steps.
Thanks, Marius _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs
-- Jérôme Velociter Winesquare http://www.winesquare.net/ _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs