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