r946 - in xwiki/trunk/src/main: java/com/xpn/xwiki/api java/com/xpn/xwiki/render/macro resources

Ludovic Dubost ludovic at users.forge.objectweb.org
Mon Feb 27 13:00:01 CET 2006


Author: ludovic
Date: 2006-02-27 13:00:00 +0100 (Mon, 27 Feb 2006)
New Revision: 946

Added:
   xwiki/trunk/src/main/java/com/xpn/xwiki/render/macro/DisplayMacro.java
   xwiki/trunk/src/main/java/com/xpn/xwiki/render/macro/UseMacro.java
Modified:
   xwiki/trunk/src/main/java/com/xpn/xwiki/api/Document.java
   xwiki/trunk/src/main/resources/radeox_markup_xwiki.properties
Log:
Added $doc.use API which allows to set the object to be used by subsequent calls to $doc.DisplayMacro.java
A {use:} macro has also been created as well as the {display:} macro which is equivalent to {field:}

Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/api/Document.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/api/Document.java	2006-02-27 11:55:00 UTC (rev 945)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/api/Document.java	2006-02-27 12:00:00 UTC (rev 946)
@@ -54,6 +54,7 @@
 
 public class Document extends Api {
     private XWikiDocument doc;
+    private Object currentObj;
 
     public Document(XWikiDocument doc, XWikiContext context) {
         super(context);
@@ -420,7 +421,32 @@
         }
     }
 
+    public void use(Object object) {
+        currentObj = object;
+    }
 
+    public void use(String className) {
+        currentObj = getObject(className);
+    }
+
+    public void use(String className, int nb) {
+        currentObj = getObject(className, nb);
+    }
+
+    public String display(String fieldname) {
+        if (currentObj==null)
+         return doc.display(fieldname, context);
+        else
+         return doc.display(fieldname, "view", currentObj.getBaseObject(), context);
+    }
+
+    public String display(String fieldname, String mode) {
+        if (currentObj==null)
+         return doc.display(fieldname, mode, context);
+        else
+         return doc.display(fieldname, mode, currentObj.getBaseObject(), context);
+    }
+
     public String display(String fieldname, Object obj) {
         if (obj==null)
             return "";
@@ -433,10 +459,6 @@
         return doc.display(fieldname, mode, obj.getBaseObject(), context);
     }
 
-    public String display(String fieldname) {
-        return doc.display(fieldname, context);
-    }
-
     public String displayForm(String className,String header, String format) {
         return doc.displayForm(className, header, format, context);
     }

Added: xwiki/trunk/src/main/java/com/xpn/xwiki/render/macro/DisplayMacro.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/render/macro/DisplayMacro.java	2006-02-27 11:55:00 UTC (rev 945)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/render/macro/DisplayMacro.java	2006-02-27 12:00:00 UTC (rev 946)
@@ -0,0 +1,42 @@
+/**
+ * ===================================================================
+ *
+ * Copyright (c) 2003,2004 Ludovic Dubost, All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Lesser General Public License for more details, published at 
+ * http://www.gnu.org/copyleft/lesser.html or in lesser.txt in the
+ * root folder of this distribution.
+
+ * Created by
+ * User: Ludovic Dubost
+ * Date: 25 août 2004
+ * Time: 13:43:19
+ */
+package com.xpn.xwiki.render.macro;
+
+import java.io.IOException;
+import java.io.Writer;
+
+import org.radeox.api.engine.RenderEngine;
+import org.radeox.api.engine.context.RenderContext;
+import org.radeox.macro.BaseLocaleMacro;
+import org.radeox.macro.parameter.MacroParameter;
+
+import com.xpn.xwiki.XWikiContext;
+import com.xpn.xwiki.doc.XWikiDocument;
+import com.xpn.xwiki.objects.BaseObject;
+import com.xpn.xwiki.render.XWikiRadeoxRenderEngine;
+
+public class DisplayMacro extends FieldMacro {
+  public String getLocaleKey() {
+    return "macro.display";
+  }
+}

Added: xwiki/trunk/src/main/java/com/xpn/xwiki/render/macro/UseMacro.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/render/macro/UseMacro.java	2006-02-27 11:55:00 UTC (rev 945)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/render/macro/UseMacro.java	2006-02-27 12:00:00 UTC (rev 946)
@@ -0,0 +1,71 @@
+/**
+ * ===================================================================
+ *
+ * Copyright (c) 2003,2004 Ludovic Dubost, All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Lesser General Public License for more details, published at 
+ * http://www.gnu.org/copyleft/lesser.html or in lesser.txt in the
+ * root folder of this distribution.
+
+ * Created by
+ * User: Ludovic Dubost
+ * Date: 25 août 2004
+ * Time: 13:43:19
+ */
+package com.xpn.xwiki.render.macro;
+
+import java.io.IOException;
+import java.io.Writer;
+
+import org.radeox.api.engine.RenderEngine;
+import org.radeox.api.engine.context.RenderContext;
+import org.radeox.macro.BaseLocaleMacro;
+import org.radeox.macro.parameter.MacroParameter;
+import org.apache.velocity.VelocityContext;
+
+import com.xpn.xwiki.XWikiContext;
+import com.xpn.xwiki.api.Document;
+import com.xpn.xwiki.doc.XWikiDocument;
+import com.xpn.xwiki.objects.BaseObject;
+import com.xpn.xwiki.render.XWikiRadeoxRenderEngine;
+
+public class UseMacro extends BaseLocaleMacro {
+  public String getLocaleKey() {
+    return "macro.use";
+  }
+
+  public void execute(Writer writer, MacroParameter params)
+      throws IllegalArgumentException, IOException {
+
+    RenderContext context = params.getContext();
+    RenderEngine engine = context.getRenderEngine();
+    XWikiContext xcontext = ((XWikiRadeoxRenderEngine)engine).getContext();
+    VelocityContext vcontext = (VelocityContext) context.get("vcontext");
+    Document doc = (Document) vcontext.get("doc");
+    com.xpn.xwiki.api.Object obj;
+
+      // We lookup the className for this object
+    String classname = params.get("classname", 0);
+
+    // Optionnaly we see if it was asked for an object number
+    String snb = params.get("nb", 1);
+
+    // We find the corresponding object
+    if (snb!=null)
+     obj = doc.getObject(classname, Integer.parseInt(snb));
+    else
+     obj = doc.getObject(classname);
+
+    // We assign this object as the used object
+    // Future calls to doc.display() or {field} will make use of this object
+    doc.use(obj);
+  }
+}

Modified: xwiki/trunk/src/main/resources/radeox_markup_xwiki.properties
===================================================================
--- xwiki/trunk/src/main/resources/radeox_markup_xwiki.properties	2006-02-27 11:55:00 UTC (rev 945)
+++ xwiki/trunk/src/main/resources/radeox_markup_xwiki.properties	2006-02-27 12:00:00 UTC (rev 946)
@@ -3,6 +3,7 @@
 macro.image.name=image
 macro.attach.name=attach
 macro.field.name=field
+macro.display.name=display
 macro.form.name=form
 macro.graphviz.name=graphviz
 macro.laszlo.name=laszlo





More information about the Xwiki-notifications mailing list