On 15.02.2011 16:54, Guillaume Lerouge wrote:
Hi,
On Tue, Feb 15, 2011 at 16:44, Anca Luca<[email protected]> wrote:
Hi devs,
I committed XWIKI-5938 but I think we should discuss the default source of the dashboard macro, namely where does it pick the gadget objects to display on the dashboard, e.g. in the case of a dashboard macro call in an included document. It is very easy to add a "source" parameter to the dashboard macro, which would tell the dashboard where should it read the objects from (and render in the context of the current document), but now the question is what should {{dashboard /}} without parameters do?
1/ read the objects from the current document, which means, in the case of an include, it will depend on the context of the include. Note that, if an include is done in a new context, then all the gadgets on that dashboard will be also relative to the included document (e.g. if they use $doc, the $doc will be the included document, not the including doc).
2/ read the objects from the closest MetaData.SOURCE, which means the document from which the content that contains the {{dashboard /}} call comes from. E.g. in the case of an include, the included document.
My take is that the default should be to use the including document as the default source (solution 1/). If users want another document to be the source, they can specify it manually.
Rationale: it's the easiest to understand / less cognitive demanding behavior (I put the dashboard macro on page A, it gets data from page A). As an user, if I add a dashboard on a page and I can't see where it takes data from right away even though I didn't specify a source, I will feel lost. So it feels natural to me to have behavior 1/ and it's in the spirit of how the include macro works by default.
Obviously if you put {{dashboard /}} on page A it will take data from page A. The question is, what should happen when you include page A in page B. Say page B has as content: {{include document="A" /}} Where should the dashboard defined in page A take objects from when page B is rendered? solution 1/ means it would be from document B, unless it's {{include document="A" context="new" /}}. If you want to be able to include dashboard defined in the document A as is in a document B, you'll have some options: a. you include with context="new" but that means if some stuff in document A is using $doc, $doc will be A, and not B -- for example will not work with the current Main.Dashboard included in main webhome and space webhomes, which uses $doc to figure out if it's on the Main.WebHome or a space dashboard. b. in page A, instead of {{dashboard /}} you write {{dashboard source="A" /}} but this makes it really bad when you want to copy document A (because document name will change but not the dashboard param) -- usecase C is a little in this spirit c. in page B, if all you care about is the dashboard and not the rest of the stuff, you write {{dashboard source="A" /}} instead of {{include document="A" /}} -- see usecase F. solution 2/ means it would be from document A. Thanks, Anca
Guillaume
WDYT?
There are a lot of possible situations to discuss, I will just present a few usecases below, to be taken into account when analyzing:
A. The current Main.Dashboard is included in all the WebHomes by default, but its gadgets refer to the current document (the _including_ document)
B. Users want to be able to easily customize their WebHomes, without affecting other people (not change the wiki general dashboard, but only their space dashboard)
C. There is a dashboard somewhere on the wiki, Main.CoolDashboard, and users want to be able to include that dashboard as a copy, without having to re-create the dashboard objects on their including page
D. User dashboards: at one point we will want each user to have their own dashboard on their profile page, which is rendered by a sheet. Ideally we should have the same user sheet for all users.
E. Also, the user dashboard should be include-able on the Main.WebHome of a logged in user (a "Home").
F. Since the include doesn't make too much sense for a dashboard document (since the dashboard document is only a call to a {{dashboard /}} macro), users will replace its usage with {{dashboard /}} macro calls, with a source parameter to pick gadget objects from another document ('reuse' a dashboard definition).
If you can think of more cases that could involve include issues, please fill them in.
Thanks, Anca _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs
_______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs