On 15.02.2011 16:54, Guillaume Lerouge wrote:
Hi,
On Tue, Feb 15, 2011 at 16:44, Anca Luca<lucaa(a)xwiki.com> 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
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs
_______________________________________________
devs mailing list
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs