Hi,
On Wed, Jun 13, 2012 at 7:09 PM, Sergiu Dumitriu <sergiu(a)xwiki.com> wrote:
On 06/13/2012 09:17 AM, Vincent Massol wrote:
On Jun 13, 2012, at 2:52 PM, Anca Luca wrote:
On 06/13/2012 02:44 PM, Vincent Massol wrote:
>
>> On Jun 13, 2012, at 2:39 PM, Anca Luca wrote:
>>
>> On 06/13/2012 01:52 PM, Raluca Stavro wrote:
>>>
>>>> Hi,
>>>>
>>>> On Wed, Jun 13, 2012 at 2:15 PM, Vincent
Massol<vincent(a)massol.net>
>>>> wrote:
>>>>
>>>> On Jun 13, 2012, at 12:44 PM, Raluca Stavro wrote:
>>>>>
>>>>> I'm resending this mail by using the right subject pattern.
>>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> I am trying to upgrade an old XEM to 3.5.1.
>>>>>> In this XEM there are some custom panels which have been
converted
>>>>>> to 2.0
>>>>>> syntax and contain code like this:
>>>>>>
>>>>>> {{velocity}}
>>>>>> {{html}}
>>>>>> #panelheader("...")
>>>>>> ...
>>>>>> #panelfooter()
>>>>>> {{/html}}
>>>>>> {{/velocity}}
>>>>>>
>>>>>
Do the panels really need the {{html}} wrapper?
If no, then you must remove it.
If yes, then you should consider rewriting them using wiki syntax only,
then remove the {{html}} wrapper.
If you can't do that, then just move the wrapper inside the
panelheader/footer.
You can do that automatically with a script.
I applied the solution suggested by Vincent (including both old and new
macro definitions in macros.vm and use a script to make all panels call the
right macros).
But yes, another solution would be to remove the {{html}} wrapper.
Because since 2.7.2 panel macros were converted to 2.0 syntax, because
>>>>>> panel macros from inside
macros.vm were modified by calling
>>>>>> {{html}} wiki
>>>>>> macro and because we can't use nested {{html}} macros
without
>>>>>> wiki="true"
>>>>>> parameter, I don't know how to fix this issue besides
modifying
>>>>>> panel
>>>>>>
>>>>> code.
>>>>>
>>>>
I don't understand this. Are you saying that in macros.vm
#panelheader
uses {{html}}? That's not true, the panelheader/footer macros only use wiki
syntax, not {{html}}. The problem isn't that nested {{html}} macros don't
work, but that wiki syntax doesn't work in {{html}} without wiki="true".
Actually they contain both wiki syntax and a call to {{html}} when
displaying the title in 2.0 syntax, on 4.0 stable version WAR at least.
This XEM has more than 70 wikis and this I can't just modify all custom
>>>>>> (converted to 2.0 syntax)
panels manually.
>>>>>> Is there a nice solution to this problem ?
>>>>>>
>>>>> Idea 1:
>>>>> ======
>>>>>
>>>>> Add a new #panelheaderold macro in macros.vm and replace all calls
of
>>>>> #panelheader to #panelheaderold in your panels (easy to do with a
>>>>> XWQL
>>>>> query and 3 lines of scripts).
>>>>>
>>>>> Slowy migrate panels to new syntax.
>>>>>
>>>>> Note:
>>>>> =====
>>>>>
>>>>> Actually in the future we need to add a new {{panel}} macro,
>>>>> something
>>>>> like:
>>>>>
>>>>> {{panel style=".." title="…"}}
>>>>> … content here …
>>>>> {{/panel}}
>>>>>
>>>>> Idea 2:
>>>>> ======
>>>>>
>>>>> Create a custom Panel wiki macro (give it a name other than
>>>>> "panel"!),
>>>>> search for:
>>>>>
{{velocity}}{{html}}#**panelheader….#panelfooter{{/**html}}{{/velocity}}
>>>>> (use
>>>>> a regex)
>>>>>
>>>>> Replace with your panel macro.
>>>>>
>>>>> Should I open an issue on Jira ?
>>>>>>
>>>>> Nope
>>>>>
>>>> So this means that none of the macros in macros.vm are API?
>>> Which means that there is no API to make a panel header consistent
>>> with the panel headers of the default panels?
>>>
>> Good point. Macros in macros.vm are supposed to be APIs and it means we
>> broke the backward compatibility at some point in the past (2.7 as
>> suggested by Raluca).
>>
>
The macros still work for both xwiki/1.0 and xwiki/2.x panels. What
doesn't work is putting the whole panel content inside a {{html}} block,
without any wiki parsing.
The problem was that there was a misunderstanding of the macros behavior.
The macros were supposed to work well in wiki syntax. Initially, that meant
the only xwiki syntax, which did mix HTML with the rest of the wiki and
velocity syntax. When new wiki syntaxes were introduced and the macros were
updated, the behavior remained the same: the #panelheader/footer macros
work well in both xwiki/1.0 and xwiki/2.x syntaxes. But pure HTML isn't
really a wiki syntax. The fact that for a few releases the macros worked in
pure HTML embedded in an xwiki/2.0 document, but not directly in a
xwiki/2.0 document, was a bug, not a contract. Unfortunately some
developers did rely on this bug.
The same issue happens with parameters like output="none" for {{velocity}}
macro.
It was a bug and developers did rely on it (maybe not even knowing that it
was indeed a bug), but on latest versions this parameter value does not
work anymore and it has to be replaced with output="false".
Such bugs make upgrades hard to be performed. It takes plenty of time to
detect the cause of a problem (unknown old bug) and then to fix it in the
appropriate way.
I would like to be able to click a button and upgrade the wiki without
being forced to fix post-upgrade bugs.
Of course that this is maybe almost impossible because each wiki has its
own particularities, but I'll continue dreaming of it :)
Thank you all for your feedback,
Raluca.
3.2 M1
https://github.com/xwiki/**xwiki-platform/commit/**
bad bad…
Who was the RM? :)
-Vincent
Anca
>
>
>> We should probably have introduced new macros instead when we
>> introduced the conversion to 2.0 syntax.
>>
>> Now since this is very old we need to decide what we want to do at this
>> point.
>>
>> Thanks
>> -Vincent
>>
>> Thanks,
>>> Anca
>>>
>>> So there is no other way to fix this issue but by modifying the code
>>>> inside
>>>> panels.
>>>> Thank you, Vincent.
>>>>
>>>> Raluca.
>>>>
>>>>
>>>> Thanks
>>>>> -Vincent
>>>>>
>>>>
--
Sergiu Dumitriu
http://purl.org/net/sergiu/
______________________________**_________________
users mailing list
users(a)xwiki.org
http://lists.xwiki.org/**mailman/listinfo/users<http://lists.xwiki.org/m…