On Mar 16, 2010, at 6:35 PM, Thomas Mortagne wrote:

> On Tue, Mar 16, 2010 at 18:32, Vincent Massol <[email protected]> wrote:
>> 
>> On Mar 16, 2010, at 6:28 PM, mflorea (SVN) wrote:
>> 
>>> Author: mflorea
>>> Date: 2010-03-16 18:28:54 +0100 (Tue, 16 Mar 2010)
>>> New Revision: 27661
>>> 
>>> Modified:
>>>   
>>> platform/web/trunk/xwiki-gwt-wysiwyg-server/src/main/java/com/xpn/xwiki/wysiwyg/server/plugin/WysiwygPluginApi.java
>>> Log:
>>> XWIKI-5013: HTML code visible when inserting velocity macro displaying a 
>>> property
>>> 
>>> Modified: 
>>> platform/web/trunk/xwiki-gwt-wysiwyg-server/src/main/java/com/xpn/xwiki/wysiwyg/server/plugin/WysiwygPluginApi.java
>>> ===================================================================
>>> --- 
>>> platform/web/trunk/xwiki-gwt-wysiwyg-server/src/main/java/com/xpn/xwiki/wysiwyg/server/plugin/WysiwygPluginApi.java
>>>        2010-03-16 15:51:03 UTC (rev 27660)
>>> +++ 
>>> platform/web/trunk/xwiki-gwt-wysiwyg-server/src/main/java/com/xpn/xwiki/wysiwyg/server/plugin/WysiwygPluginApi.java
>>>        2010-03-16 17:28:54 UTC (rev 27661)
>>> @@ -35,6 +35,14 @@
>>> public class WysiwygPluginApi extends Api
>>> {
>>>     /**
>>> +     * The context property which indicates if the current code was called 
>>> from a template (only Velocity execution) or
>>> +     * from a wiki page (wiki syntax rendering).
>>> +     *
>>> +     * @see #parseAndRender(String, String)
>>> +     */
>>> +    private static final String IS_IN_RENDERING_ENGINE = 
>>> "isInRenderingEngine";
>>> +
>>> +    /**
>>>      * The plugin instance.
>>>      */
>>>     private WysiwygPlugin plugin;
>>> @@ -98,11 +106,26 @@
>>>      */
>>>     public String parseAndRender(String html, String syntax)
>>>     {
>>> +        // Save the value of the "is in rendering engine" context property.
>>> +        Object isInRenderingEngine = context.get(IS_IN_RENDERING_ENGINE);
>>> +
>>>         try {
>>> +            // This tells display() methods that we are inside the 
>>> rendering engine and thus that they can return wiki
>>> +            // syntax and not HTML syntax (which is needed when outside 
>>> the rendering engine, i.e. when we're inside
>>> +            // templates using only Velocity for example).
>>> +            context.put(IS_IN_RENDERING_ENGINE, true);
>>> +
>>>             return 
>>> Utils.getComponent(HTMLConverter.class).parseAndRender(html, syntax);
>>>         } catch (Exception e) {
>>>             // Leave the previous HTML in case of an exception.
>>>             return html;
>>> +        } finally {
>>> +            // Restore the value of the value of the "is in rendering 
>>> engine" context property.
>>> +            if (isInRenderingEngine != null) {
>>> +                context.put(IS_IN_RENDERING_ENGINE, isInRenderingEngine);
>>> +            } else {
>>> +                context.remove(IS_IN_RENDERING_ENGINE);
>>> +            }
>> 
>> Shouldn't you always put back the value that you saved (even if it's null) ?
> 
> It's basically what he does with context.remove, XWikiContext does not
> support null value because it's a Hashtable.

ah right my bad, I read too fast ;)

(thought it was a std Map)

sorry for the noise!
-Vincent

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

Reply via email to