Author: sdumitriu
Date: 2007-11-26 17:15:24 +0100 (Mon, 26 Nov 2007)
New Revision: 6080

Modified:
   
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/render/filter/XWikiHeadingFilter.java
Log:
XWIKI-1899: The #toc macro requires programming rights for numbering sections
Fixed (java part)


Modified: 
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/render/filter/XWikiHeadingFilter.java
===================================================================
--- 
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/render/filter/XWikiHeadingFilter.java
      2007-11-26 15:46:57 UTC (rev 6079)
+++ 
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/render/filter/XWikiHeadingFilter.java
      2007-11-26 16:15:24 UTC (rev 6080)
@@ -26,6 +26,7 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.velocity.VelocityContext;
 import org.radeox.api.engine.context.InitialRenderContext;
 import org.radeox.api.engine.context.RenderContext;
 import org.radeox.filter.CacheFilter;
@@ -85,6 +86,7 @@
         RenderContext rcontext = context.getRenderContext();
         XWikiContext xcontext =
             ((XWikiRadeoxRenderEngine) 
rcontext.getRenderEngine()).getXWikiContext();
+        VelocityContext vcontext = (VelocityContext)xcontext.get("vcontext");
         XWikiDocument doc = xcontext.getDoc();
 
         log.debug("Processing '" + text + "'");
@@ -104,13 +106,21 @@
         log.debug("Generated heading id '" + id + "'");
 
         // add numbering if the flag is set
+
         if (xcontext.containsKey(TOC_NUMBERED)
             && ((Boolean) xcontext.get(TOC_NUMBERED)).booleanValue()) {
+            // This is the old place where the data was placed, but this 
requires programming
+            // rights. Instead, we now use vcontext.
             if (xcontext.containsKey(TOC_DATA)) {
                 Map tocEntry = (Map) ((Map) xcontext.get(TOC_DATA)).get(id);
                 if (tocEntry != null) {
                     numbering = (String) 
tocEntry.get(TOCGenerator.TOC_DATA_NUMBERING) + " ";
                 }
+            } else if (vcontext != null && vcontext.containsKey(TOC_DATA)) {
+                Map tocEntry = (Map) ((Map) vcontext.get(TOC_DATA)).get(id);
+                if (tocEntry != null) {
+                    numbering = (String) 
tocEntry.get(TOCGenerator.TOC_DATA_NUMBERING) + " ";
+                }
             }
         }
 

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

Reply via email to