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