On Thu, Aug 30, 2012 at 9:32 AM, Vincent Massol <[email protected]> wrote:
>
> On Aug 29, 2012, at 11:26 AM, Marius Dumitru Florea 
> <[email protected]> wrote:
>
>> Sorry, wrong key combination..
>>
>> On Wed, Aug 29, 2012 at 12:22 PM, Marius Dumitru Florea
>> <[email protected]> wrote:
>>> Hi devs,
>>>
>>> I need to have some Velocity macros in the file system because one use
>>> case where I need them is when the database is empty. So I put them in
>>> a new Velocity template file under /templates folder. I didn't want to
>>> add them to macros.vm because they are very specific and not used very
>>> often. Plus, I don't like the idea of putting all the macros in one
>>> single file.
>
> It's more than that. Putting them in macros.vm make them global velocimacros, 
> i.e. macros registered globally in the Velocity Engine when it starts.
>
>>> I then tried to include these macros in my other template and some
>>> wiki page using #template. It didn't work. Surprisingly, when I
>>> attached the template with the macros to the skin it worked.
>>>
>>> By looking at the code I noticed that #template calls
>>> XWiki#evaluateTemplate which (if I understood correctly) registers the
>>> Velocity macros under
>>> * '' (global) namespace if the template is part of a skin
>>> * template name namespace if the template is not part of the skin.
>>>
>>> Both seem wrong:
>>
>> * in the first case, once you include the template the Velocity macros
>> become available globally, for the entire farm, even with a different
>> skin
>> * in the second case, the Velocity macros are not visible in the
>> including template/wiki page
>>
>> Since this cod is pretty old it's quite tricky to fix. Thomas
>> suggested to use instead of '' and template name the current namespace
>

> Can you remind me what is the current namespace?

Afaics, it's either the name of a Velocity template or the string
serialization of a document reference.

>
>> so that #template behaves like a real include (e.g. like the include
>> macro).
>>
>> WDYT?
>
> Looks ok but needs a lot of testing to ensure nothing gets broken.
>
> BTW my proposal to use the Rendering engine to parse template files should 
> solve this issue as well :)

I think you still need to make sure the Velocity macros are registered
on the same namespace.

Thanks,
Marius

>
> Thanks
> -Vincent
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to