r1308 - in xwiki/trunk/src/main: java/com/xpn/xwiki java/com/xpn/xwiki/render web/templates

Jeremi Joslin jeremi at users.forge.objectweb.org
Tue Sep 12 13:48:07 CEST 2006


Author: jeremi
Date: 2006-09-12 13:48:06 +0200 (Tue, 12 Sep 2006)
New Revision: 1308

Modified:
   xwiki/trunk/src/main/java/com/xpn/xwiki/XWiki.java
   xwiki/trunk/src/main/java/com/xpn/xwiki/render/XWikiRenderingEngine.java
   xwiki/trunk/src/main/web/templates/editprefs.vm
Log:
add the possibility to disable the rendering of a renderer from the preference of a space, or a wiki.

Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/XWiki.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/XWiki.java	2006-09-12 03:26:19 UTC (rev 1307)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/XWiki.java	2006-09-12 11:48:06 UTC (rev 1308)
@@ -1910,14 +1910,25 @@
 
         needsUpdate |= bclass.addTextField("notification_pages", "Notification Pages", 60);
 
+        needsUpdate |= bclass.addBooleanField("renderXWikiVelocityRenderer", "Render velocity code", "yesno");
+        needsUpdate |= bclass.addBooleanField("renderXWikiGroovyRenderer", "Render Groovy code", "yesno");
+        needsUpdate |= bclass.addBooleanField("renderXWikiRadeoxRenderer", "Render Wiki syntax", "yesno");
+
         // New fields for the XWiki 1.0 skin
         needsUpdate |= bclass.addTextField("leftPanels", "Panels displayed on the left", 60);
         needsUpdate |= bclass.addTextField("rightPanels", "Panels displayed on the right", 60);
-        needsUpdate |= bclass.addBooleanField("showLeftPanels", "Display the left panel column", "checkbox");
-        needsUpdate |= bclass.addBooleanField("showRightPanels", "Display the right panel column", "checkbox");
+        needsUpdate |= bclass.addBooleanField("showLeftPanels", "Display the left panel column", "yesno");
+        needsUpdate |= bclass.addBooleanField("showRightPanels", "Display the right panel column", "yesno");
         needsUpdate |= bclass.addStaticListField("pageWidth", "Preferred page width", "default|640|800|1024|1280|1600");
         needsUpdate |= bclass.addTextField("languages", "Supported languages", 30);
 
+        if (((BooleanClass)bclass.get("showLeftPanels")).getDisplayType().equals("checkbox"))
+        {
+            ((BooleanClass)bclass.get("showLeftPanels")).setDisplayType("yesno");
+            ((BooleanClass)bclass.get("showRightPanels")).setDisplayType("yesno");
+            needsUpdate = true;
+        }
+
         String content = doc.getContent();
         if ((content == null) || (content.equals(""))) {
             needsUpdate = true;
@@ -2683,7 +2694,7 @@
                     if (docname.equals(targetdocname))
                         tdoc = (XWikiDocument) sdoc.clone();
                     else
-                        tdoc = (XWikiDocument) sdoc.renameDocument(targetdocname, context);
+                        tdoc = sdoc.copyDocument(targetdocname, context);
                     // forget past versions
                     if (reset) {
                         tdoc.setVersion("1.1");
@@ -2734,7 +2745,7 @@
                         if (docname.equals(targetdocname))
                             ttdoc = (XWikiDocument) stdoc.clone();
                         else
-                            ttdoc = stdoc.renameDocument(targetdocname, context);
+                            ttdoc = stdoc.copyDocument(targetdocname, context);
 
                         // forget past versions
                         if (reset) {
@@ -3958,7 +3969,9 @@
     }
 
     public Object parseGroovyFromString(String script, XWikiContext context) throws XWikiException {
-        return ((XWikiGroovyRenderer) getRenderingEngine().getRenderer("groovy")).parseGroovyFromString(script, context);
+        if (getRenderingEngine().getRenderer("groovy") != null)
+            return ((XWikiGroovyRenderer) getRenderingEngine().getRenderer("groovy")).parseGroovyFromString(script, context);
+        return null;
     }
 
     public Object parseGroovyFromPage(String fullname, XWikiContext context) throws XWikiException {

Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/render/XWikiRenderingEngine.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/render/XWikiRenderingEngine.java	2006-09-12 03:26:19 UTC (rev 1307)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/render/XWikiRenderingEngine.java	2006-09-12 11:48:06 UTC (rev 1308)
@@ -41,9 +41,11 @@
 import com.xpn.xwiki.render.groovy.XWikiGroovyRenderer;
 import com.xpn.xwiki.util.Util;
 import com.xpn.xwiki.web.XWikiRequest;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 public class XWikiRenderingEngine {
-
+    private static final Log log = LogFactory.getLog(XWikiRenderingEngine.class);
     private List renderers = new ArrayList();
     private HashMap renderermap = new LinkedHashMap();
     private XWikiCache cache;
@@ -103,24 +105,24 @@
     }
 
     public XWikiRenderer getRenderer(String name) {
-		return (XWikiRenderer) renderermap.get(name);
-	}
+        return (XWikiRenderer) renderermap.get(name);
+    }
 
-	public List getRendererList() {
-		return (List) ((ArrayList) renderers).clone();
-	}
+    public List getRendererList() {
+        return (List) ((ArrayList) renderers).clone();
+    }
 
-	public List getRendererNames() {
-		return new LinkedList(renderermap.keySet());
-	}
+    public List getRendererNames() {
+        return new LinkedList(renderermap.keySet());
+    }
 
-	protected XWikiRenderer removeRenderer(String name) {
-		XWikiRenderer result = (XWikiRenderer) renderermap.remove(name);
-		if (result != null) {
-			renderers.remove(result);
-		}
-		return result;
-	}
+    protected XWikiRenderer removeRenderer(String name) {
+        XWikiRenderer result = (XWikiRenderer) renderermap.remove(name);
+        if (result != null) {
+            renderers.remove(result);
+        }
+        return result;
+    }
 
     public String renderDocument(XWikiDocument doc, XWikiContext context) throws XWikiException {
            return renderText(doc.getTranslatedContent(context), doc, context);
@@ -204,8 +206,14 @@
                 context.getWiki().getPluginManager().beginRendering(context);
 
                 try {
-                    for (int i=0;i<renderers.size();i++)
-                        content = ((XWikiRenderer)renderers.get(i)).render(content, contentdoc, includingdoc, context);
+                    for (int i=0;i<renderers.size();i++){
+                        XWikiRenderer renderer = ((XWikiRenderer)renderers.get(i));
+                        String rendererName = renderer.getClass().getName();
+                        if (isRendered(contentdoc, rendererName, context))
+                            content = ((XWikiRenderer)renderers.get(i)).render(content, contentdoc, includingdoc, context);
+                        else
+                            if (log.isDebugEnabled()) log.debug("skip renderer: " + rendererName + " for the document " + contentdoc.getFullName());
+                    }
                 } finally {
                     // Remove including doc or set the previous one
                     if (idoc==null)
@@ -227,7 +235,7 @@
                     int cacheDuration = context.getCacheDuration();
                     if (cacheDuration>0) {
                         XWikiRenderingCache cacheObject = new XWikiRenderingCache(key, content, cacheDuration, new Date());
-                        cache.putInCache(key, (Object)cacheObject);
+                        cache.putInCache(key, cacheObject);
                     }
                 } catch (Exception e) {}
                 return content;
@@ -239,6 +247,26 @@
         }
     }
 
+    private boolean isRendered(XWikiDocument doc, String rendererName, XWikiContext context){
+        try{
+            if (rendererName.contains(".")){
+                rendererName = rendererName.substring(rendererName.lastIndexOf(".") + 1);
+            }
+            String render = context.getWiki().getWebPreference("render" + rendererName, context);
+            if (render != null && render.length() > 0)
+                return render.equals("1");
+
+            render = context.getWiki().getXWikiPreference("render" + rendererName, context);
+            if (render != null && render.length() > 0)
+                return render.equals("1");
+            return true;
+        }
+        catch(Exception e){
+            log.error("Error in the function isRendered", e);
+            return true;
+        }
+    }
+
     private String getKey(String text, XWikiDocument contentdoc, XWikiDocument includingdoc, XWikiContext context) {
         return ((context==null) ? "xwiki" : context.getDatabase()) + "-"
                 + ((contentdoc==null) ? "" : contentdoc.getDatabase() + ":" + contentdoc.getFullName()) + "-"

Modified: xwiki/trunk/src/main/web/templates/editprefs.vm
===================================================================
--- xwiki/trunk/src/main/web/templates/editprefs.vm	2006-09-12 03:26:19 UTC (rev 1307)
+++ xwiki/trunk/src/main/web/templates/editprefs.vm	2006-09-12 11:48:06 UTC (rev 1308)
@@ -34,7 +34,7 @@
 #set($sectionitemsmap.skin = ["skin", "stylesheet", "stylesheets", "leftPanels", "rightPanels", "showLeftPanels", "showRightPanels", "pageWidth"])
 #set($sectionitemsmap.presentation = [ "title", "version", "webcopyright", "menu", "meta" ])
 #set($sectionitemsmap.editing = ["editor", "editbox_width","editbox_height"])
-#set($sectionitemsmap.advanced = ["macros_languages", "macros_velocity","macros_groovy", "macros_mapping", "notification_pages" ])
+#set($sectionitemsmap.advanced = ["macros_languages", "macros_velocity","macros_groovy", "macros_mapping", "notification_pages", "renderXWikiVelocityRenderer", "renderXWikiGroovyRenderer", "renderXWikiRadeoxRenderer" ])
 #set($sectionitemsmap.registration = [ "use_email_verification", "admin_email", "smtp_server", "validation_email_content",  "confirmation_email_content" , "invitation_email_content"])
 #set($sectionitemsmap.antispam = [ "registration_anonymous", "registration_registered", "edit_anonymous", "edit_registered",  "comment_anonymous", "comment_registered"])
 #macro(showsection $section $sectionitemsmap)





More information about the Xwiki-notifications mailing list