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