r1079 - in xwiki/trunk/src/main: java/com/xpn/xwiki java/com/xpn/xwiki/api java/com/xpn/xwiki/render web/templates
Ludovic Dubost
ludovic at users.forge.objectweb.org
Thu Jun 1 18:38:28 CEST 2006
Author: ludovic
Date: 2006-06-01 18:38:28 +0200 (Thu, 01 Jun 2006)
New Revision: 1079
Modified:
xwiki/trunk/src/main/java/com/xpn/xwiki/XWiki.java
xwiki/trunk/src/main/java/com/xpn/xwiki/api/XWiki.java
xwiki/trunk/src/main/java/com/xpn/xwiki/render/XWikiMacrosMappingRenderer.java
xwiki/trunk/src/main/web/templates/macrowysiwyg.vm
Log:
Added macros definition in /templates/macros.txt
Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/XWiki.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/XWiki.java 2006-06-01 11:31:32 UTC (rev 1078)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/XWiki.java 2006-06-01 16:38:28 UTC (rev 1079)
@@ -137,6 +137,7 @@
private boolean isReadOnly = false;
public static final String CFG_ENV_NAME = "XWikiConfig";
+ public static final String MACROS_FILE = "/template/macros.txt";
/* i don't like using static variables like, but this avoid making a JNDI lookup with
each request ...
@@ -3464,5 +3465,16 @@
return parseGroovyFromString(context.getWiki().getDocument(fullname, context).getContent(), context);
}
+ public String getMacroList(XWikiContext context) {
+ String macrosmapping = "";
+ XWiki xwiki = context.getWiki();
+
+ try {
+ macrosmapping = xwiki.getResourceContent(MACROS_FILE);
+ } catch (IOException e) {}
+
+ macrosmapping += "\r\n" + xwiki.getXWikiPreference("macros_mapping", "", context);
+ return macrosmapping;
+ }
}
Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/api/XWiki.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/api/XWiki.java 2006-06-01 11:31:32 UTC (rev 1078)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/api/XWiki.java 2006-06-01 16:38:28 UTC (rev 1079)
@@ -1010,5 +1010,9 @@
else
return null;
}
+
+ public String getMacroList() {
+ return xwiki.getMacroList(context);
+ }
}
Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/render/XWikiMacrosMappingRenderer.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/render/XWikiMacrosMappingRenderer.java 2006-06-01 11:31:32 UTC (rev 1078)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/render/XWikiMacrosMappingRenderer.java 2006-06-01 16:38:28 UTC (rev 1079)
@@ -26,6 +26,7 @@
import java.util.HashMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import java.io.IOException;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
@@ -33,9 +34,13 @@
import com.xpn.xwiki.XWiki;
import com.xpn.xwiki.XWikiContext;
+import com.xpn.xwiki.notify.XWikiNotificationRule;
+import com.xpn.xwiki.notify.XWikiDocChangeNotificationInterface;
+import com.xpn.xwiki.notify.PropertyChangedRule;
+import com.xpn.xwiki.notify.DocChangeRule;
import com.xpn.xwiki.doc.XWikiDocument;
-public class XWikiMacrosMappingRenderer implements XWikiRenderer {
+public class XWikiMacrosMappingRenderer implements XWikiRenderer, XWikiDocChangeNotificationInterface {
private static final Log log = LogFactory.getLog(XWikiMacrosMappingRenderer.class);
protected HashMap macros_libraries = null;
@@ -43,6 +48,10 @@
public XWikiMacrosMappingRenderer(XWiki xwiki, XWikiContext context) {
loadPreferences(xwiki, context);
+
+ // Add a notification rule if the preference property plugin is modified
+ context.getWiki().getNotificationManager().addNamedRule("XWiki.XWikiPreferences",
+ new DocChangeRule(this));
}
public void loadPreferences(XWiki xwiki, XWikiContext context) {
@@ -56,12 +65,17 @@
macros_libraries.put(language, xwiki.getXWikiPreference("macros_" + language, "XWiki." + language.substring(0,1).toUpperCase() + language.substring(1) + "Macros", context));
}
- String macrosmapping = xwiki.getXWikiPreference("macros_mapping", "", context);
+ String macrosmapping = xwiki.getMacroList(context);
String[] mappings = StringUtils.split(macrosmapping, "\r\n");
for (int i=0;i<mappings.length;i++) {
try {
XWikiVirtualMacro macro = new XWikiVirtualMacro(mappings[i]);
- macros_mappings.put(macro.getName(), macro);
+ if (!macro.getName().equals("")) {
+ if (!macro.getFunctionName().equals(""))
+ macros_mappings.put(macro.getName(), macro);
+ else
+ macros_mappings.remove(macro.getName());
+ }
} catch (Exception e) {
log.error("Error reading macro mapping " + mappings[i], e);
}
@@ -143,5 +157,11 @@
public String convertSingleLine(String macroname, String params, String allcontent, XWikiVirtualMacro macro, XWikiContext context) {
return allcontent;
}
+
+ public void notify(XWikiNotificationRule rule, XWikiDocument newdoc, XWikiDocument olddoc, int event, XWikiContext context) {
+ if (newdoc.getFullName().equals("XWiki.XWikiPreferences")) {
+ loadPreferences(context.getWiki(), context);
+ }
+ }
}
Modified: xwiki/trunk/src/main/web/templates/macrowysiwyg.vm
===================================================================
--- xwiki/trunk/src/main/web/templates/macrowysiwyg.vm 2006-06-01 11:31:32 UTC (rev 1078)
+++ xwiki/trunk/src/main/web/templates/macrowysiwyg.vm 2006-06-01 16:38:28 UTC (rev 1079)
@@ -1,4 +1,5 @@
-#set($macros = $xwiki.getXWikiPreference("macros_mapping"))
+
+#set($macros = $xwiki.getMacroList())
#set($macros = $macros.split('\n'))
<form id="macroform" name="macroform" onsubmit="insertMacro(); return false;" action="">
<div>
More information about the Xwiki-notifications
mailing list