On Thu, Oct 6, 2011 at 16:42, Vincent Massol
<vincent(a)massol.net> wrote:
On Oct 6, 2011, at 4:21 PM, Denis Gervalle wrote:
On Thu, Oct 6, 2011 at 15:38, Vincent Massol
<vincent(a)massol.net> wrote:
> Hi Denis,
>
> On Oct 6, 2011, at 3:22 PM, Denis Gervalle wrote:
>
>> On Thu, Oct 6, 2011 at 14:58, Vincent Massol <vincent(a)massol.net>
wrote:
>>
>>> Hi devs,
>>>
>>> As you know in XE 3.0 we've changed the behavior for resolving local
>>> links/attachments when they're included using the {{include}} macro
> (they're
>>> now resolved against the included document instead of the including
>>> document).
>>>
>>
>> I do not remember this change. Does not this depends on the context=new
?
>
> No. Context = new is only about isolating the execution context. It's
not
about
deciding against what to resolve the links/attachments
I do not see discussion about how relative links has to be resolved
their.
I do not feel confortable with the facts that
based on context=new,
$doc.getURL() obviously change its behavior
It doesn't! The link resolving has nothing to do with context=new or not.
, and that the equivalent XWiki
syntax could follow a different path based on resolved=current|source.
This seems to me introducing additional complexity, and therefore
potential
confusion.
>>> Now there might be some use cases (pretty rare IMO but they exist)
where
>>> you'd want the links to be
resolved against the including document.
> Here's a
>>> use case: you have a sheet document that references an image called
>>> image.png and you want that the including document provides it (like
an
>>> Abstract in Java! ;)).
>>>
>>
>> This is not rare, but this could be solved using velocity anyway.
>>
>>
>>> So we've brainstormed with Thomas and here's our proposal:
>>>
>>> * Introduce a new {{display reference="…"/}} macro. This macro
will
>>> *execute* the passed reference in its own context (it'll do what
> {{include
>>> context="new"…}} was doing before). It'll be located in the new
display
>>> module.
>>>
>>
>> Does not this new macro exists already in 1.x syntax under name
'#Topic'
> ?
>> Was it a mistake to have not kept this one in 2.x ?
>
> Probably.
>
>>> * Deprecate the "context" parameter of the {{include}} macro. The
reason
> is
>>> that calling with context=new is not an include, it's a display.
>>> * Add a new "resolve" parameter for the {{include}} macro with
possible
>>> values = "current" |
"source", with a default value of "source".
>>> resolve=source means that the links/attachments are resolved against
the
>>> source (ie the document being
included). Using resolve=current means
> that
>>> you want the links/attachments resolved against the including
document.
>>
>
> Since I have really thought it was depending on the context parameter,
why
> use a new parameter for this ?
See above. They're 2 separate things.
Why separating them so much ? What are the use cases ?
{{display}} replacing context=new sounds good to me since it clarify a
parameter that many do not understand.
But, the resolve parameter seems to me putting back confusion.
You need a way to express how relative links/attachments are resolved.
{{display}} implies resolve=source
Correct
why {{include}} does not implies resolve=current
?
Because there are 2 valid use cases. If we had resolve=current the default
(which is the opposite to what we want IMO) then how would users implement
the following use case:
Why do you say the opposite to what you want ?
If you are using {{include}} and not {{display}}, you are probably doing
something like a sheet, and the most common situation would be to use stuffs
from the including document and not the include one, so to use the
equivalent of resolve=current as a default.
What I say basically, is that you may have a default behavior globally, but
you will never solve all use case with it, and providing a global parameter
to change the default will not either, and is for me a added complexity.
Changing the global default should be more at the link level than the global
level. Introducing a appropriate link syntax to refer explicitely to either
the source document or the current document in the link would probably be
the best way to solve all use case.
Now regarding the global default, when none of the above syntax is used, I
would resolve against current for {{include}} and against source for
{{display}}. This seems to me the best default, that would be consistent
with the content of the $doc in these two ways to include documents.