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

