You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jspwiki.apache.org by aj...@apache.org on 2008/11/11 04:49:12 UTC
svn commit: r712929 [2/4] - in
/incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH: ./ .settings/ doc/
etc/ etc/i18n/ etc/i18n/plugin/ etc/i18n/templates/ etc/ini/ lib/
src/com/ecyrd/jspwiki/ src/com/ecyrd/jspwiki/attachment/
src/com/ecyrd/jspwiki/a...
Modified: incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/plugin/Image.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/plugin/Image.java?rev=712929&r1=712928&r2=712929&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/plugin/Image.java (original)
+++ incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/plugin/Image.java Mon Nov 10 19:49:06 2008
@@ -21,6 +21,9 @@
package com.ecyrd.jspwiki.plugin;
import java.util.*;
+
+import org.apache.jspwiki.api.ModuleData;
+
import com.ecyrd.jspwiki.*;
import com.ecyrd.jspwiki.attachment.AttachmentManager;
import com.ecyrd.jspwiki.attachment.Attachment;
@@ -50,6 +53,9 @@
// FIXME: It is not yet possible to do wiki internal links. In order to
// do this cleanly, a TranslatorReader revamp is needed.
+@ModuleData(
+ author = "JSPWiki development group"
+)
public class Image
implements WikiPlugin
{
Modified: incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/plugin/InsertPage.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/plugin/InsertPage.java?rev=712929&r1=712928&r2=712929&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/plugin/InsertPage.java (original)
+++ incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/plugin/InsertPage.java Mon Nov 10 19:49:06 2008
@@ -23,6 +23,7 @@
import com.ecyrd.jspwiki.*;
import com.ecyrd.jspwiki.auth.*;
import com.ecyrd.jspwiki.auth.permissions.PermissionFactory;
+import com.ecyrd.jspwiki.providers.ProviderException;
import java.util.*;
@@ -73,17 +74,16 @@
throws PluginException
{
WikiEngine engine = context.getEngine();
+ ResourceBundle rb = context.getBundle(WikiPlugin.CORE_PLUGINS_RESOURCEBUNDLE);
StringBuffer res = new StringBuffer();
String clazz = (String) params.get( PARAM_CLASS );
String includedPage = (String) params.get( PARAM_PAGENAME );
String style = (String) params.get( PARAM_STYLE );
- String defaultstr = (String) params.get( PARAM_DEFAULT );
- int section = TextUtil.parseIntParameter((String) params.get( PARAM_SECTION ),
- -1 );
- int maxlen = TextUtil.parseIntParameter((String) params.get( PARAM_MAXLENGTH ),
- -1 );
+ String defaultstr = (String) params.get( PARAM_DEFAULT );
+ int section = TextUtil.parseIntParameter( (String) params.get( PARAM_SECTION ), -1 );
+ int maxlen = TextUtil.parseIntParameter( (String) params.get( PARAM_MAXLENGTH ), -1 );
if( style == null ) style = DEFAULT_STYLE;
@@ -91,8 +91,24 @@
if( includedPage != null )
{
- WikiPage page = engine.getPage( includedPage );
-
+ WikiPage page = null;
+ try
+ {
+ String pageName = engine.getFinalPageName( includedPage );
+ if( pageName != null )
+ {
+ page = engine.getPage( pageName );
+ }
+ else
+ {
+ page = engine.getPage( includedPage );
+ }
+ }
+ catch( ProviderException e )
+ {
+ res.append("<span class=\"error\">" + rb.getString( "plugin.insert.notfound" ) + "</span>");
+ return res.toString();
+ }
if( page != null )
{
@@ -106,7 +122,7 @@
{
if( previousIncludes.contains( page.getName() ) )
{
- return "<span class=\"error\">Error: Circular reference - you can't include a page in itself!</span>";
+ return "<span class=\"error\">"+ rb.getString( "plugin.insert.recursion")+"</span>";
}
}
else
@@ -125,7 +141,7 @@
if( !mgr.checkPermission( context.getWikiSession(),
PermissionFactory.getPagePermission( page, "view") ) )
{
- res.append("<span class=\"error\">You do not have permission to view this included page.</span>");
+ res.append("<span class=\"error\">"+rb.getString("plugin.insert.nopermission")+"</span>");
return res.toString();
}
@@ -177,15 +193,15 @@
}
else
{
- res.append("There is no page called '"+includedPage+"'. Would you like to ");
- res.append("<a href=\""+context.getURL( WikiContext.EDIT, includedPage )+"\">create it?</a>");
+ res.append(rb.getString("plugin.insert.nopage1") +" '"+includedPage+"'. " + rb.getString( "plugin.insert.nopage2" ));
+ res.append("<a href=\""+context.getURL( WikiContext.EDIT, includedPage )+"\"> "+rb.getString("plugin.insert.nopage3")+"</a>");
}
}
}
else
{
res.append("<span class=\"error\">");
- res.append("You have to define a page!");
+ res.append(rb.getString("plugin.insert.definepage"));
res.append("</span>");
}
Modified: incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/plugin/ListLocksPlugin.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/plugin/ListLocksPlugin.java?rev=712929&r1=712928&r2=712929&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/plugin/ListLocksPlugin.java (original)
+++ incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/plugin/ListLocksPlugin.java Mon Nov 10 19:49:06 2008
@@ -44,15 +44,19 @@
PageManager mgr = context.getEngine().getPageManager();
List locks = mgr.getActiveLocks();
+ ResourceBundle rb = context.getBundle(WikiPlugin.CORE_PLUGINS_RESOURCEBUNDLE);
result.append("<table class=\"wikitable\">\n");
result.append("<tr>\n");
- result.append("<th>Page</th><th>Locked by</th><th>Acquired</th><th>Expires</th>\n");
+ result.append( "<th>" + rb.getString( "plugin.listlocks.page" ) + "</th><th>" + rb.getString( "plugin.listlocks.locked.by" )
+ + "</th><th>" + rb.getString( "plugin.listlocks.acquired" ) + "</th><th>"
+ + rb.getString( "plugin.listlocks.expires" ) + "</th>\n" );
result.append("</tr>");
if( locks.size() == 0 )
{
- result.append("<tr><td colspan=\"4\" class=\"odd\">No locks exist currently.</td></tr>\n");
+ result.append( "<tr><td colspan=\"4\" class=\"odd\">" + rb.getString( "plugin.listlocks.no.locks.exist" )
+ + "</td></tr>\n" );
}
else
{
Modified: incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/plugin/PluginManager.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/plugin/PluginManager.java?rev=712929&r1=712928&r2=712929&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/plugin/PluginManager.java (original)
+++ incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/plugin/PluginManager.java Mon Nov 10 19:49:06 2008
@@ -21,19 +21,17 @@
package com.ecyrd.jspwiki.plugin;
import java.io.*;
-import java.net.URL;
import java.text.MessageFormat;
import java.util.*;
+import net.sourceforge.stripes.util.ResolverUtil;
+
import org.apache.commons.lang.ClassUtils;
import org.apache.ecs.xhtml.*;
+import org.apache.jspwiki.api.ModuleData;
import org.apache.log4j.Logger;
import org.apache.oro.text.regex.*;
-import org.jdom.Document;
import org.jdom.Element;
-import org.jdom.JDOMException;
-import org.jdom.input.SAXBuilder;
-import org.jdom.xpath.XPath;
import com.ecyrd.jspwiki.*;
import com.ecyrd.jspwiki.modules.ModuleManager;
@@ -94,23 +92,29 @@
* <pre>
* [{Counter name='foo'}]
* </pre>
- * <h3>Plugin property files</h3>
+ * <h3>Plugin annotations</h3>
+ * <p>
+ * As of JSPWiki 3.0, plugins may be annotated using the ModuleData
+ * annotation. Please see the javadoc for ModuleData.
+ *
+ * <h3>Adding plugins to the automatic search path</h3>
+ * <p>
+ * You may add a plugin by defining a deployment file "ini/jspwiki_module.xml"
+ * with a single modules-element:
+ * <pre>
+ * <modules package="com.mycompany.plugins"/>
+ * </pre>
+ * This adds the plugin path "com.mycompany.plugins" in the list of
+ * packages which are searched for WikiPlugin instances.
* <p>
- * Since 2.3.25 you can also define a generic plugin XML properties file per
- * each JAR file.
+ * Another possibility is to use the <tt>jspwiki.plugin.searchPath</tt> -property.
+ * For example, the equivalent invocation to the previous example:
* <pre>
- * <modules>
- * <plugin class="com.ecyrd.jspwiki.foo.TestPlugin">
- * <author>Janne Jalkanen</author>
- * <script>foo.js</script>
- * <stylesheet>foo.css</stylesheet>
- * <alias>code</alias>
- * </plugin>
- * <plugin class="com.ecyrd.jspwiki.foo.TestPlugin2">
- * <author>Janne Jalkanen</author>
- * </plugin>
- * </modules>
+ * jspwiki.plugin.searchPath = com.mycompany.plugins
* </pre>
+ * However, this needs you to modify the property file by hand for each installation.
+ * It is a recommended practice to create a deployment file for your plugin JAR.
+ *
* <h3>Plugin lifecycle</h3>
*
* <p>Plugin can implement multiple interfaces to let JSPWiki know at which stages they should
@@ -147,11 +151,6 @@
private static final String DEFAULT_FORMS_PACKAGE = "com.ecyrd.jspwiki.forms";
/**
- * The property name defining which packages will be searched for properties.
- */
- public static final String PROP_SEARCHPATH = "jspwiki.plugin.searchPath";
-
- /**
* The name of the body content. Current value is "_body".
*/
public static final String PARAM_BODY = "_body";
@@ -173,7 +172,7 @@
*/
public static final String PARAM_DEBUG = "debug";
- private ArrayList<String> m_searchPath = new ArrayList<String>();
+ private List<String> m_searchPath;
private Pattern m_pluginPattern;
@@ -194,19 +193,10 @@
public PluginManager( WikiEngine engine, Properties props )
{
super(engine);
- String packageNames = props.getProperty( PROP_SEARCHPATH );
- if( packageNames != null )
- {
- StringTokenizer tok = new StringTokenizer( packageNames, "," );
-
- while( tok.hasMoreTokens() )
- {
- m_searchPath.add( tok.nextToken().trim() );
- }
- }
-
- registerPlugins();
+ m_searchPath = buildPluginSearchPath( props );
+
+ registerAllPlugins();
//
// The default packages are always added.
@@ -278,7 +268,7 @@
*
* @throws ClassNotFoundException if no such class exists.
*/
- private Class findPluginClass( String classname )
+ private Class<? extends WikiPlugin> findPluginClass( String classname )
throws ClassNotFoundException
{
return ClassUtil.findClass( m_searchPath, classname );
@@ -614,7 +604,6 @@
* @return A DOM element
* @throws PluginException If plugin invocation is faulty
*/
- @SuppressWarnings("unchecked")
public PluginContent parsePluginLine( WikiContext context, String commandline, int pos )
throws PluginException
{
@@ -681,12 +670,15 @@
m_pluginClassMap.put(name, pluginClass);
}
- // Registrar the plugin with a short convenient name.
- name = pluginClass.getAlias();
- if(name != null)
+ // Register the plugin with a short convenient name.
+ String[] aliases = pluginClass.getAliases();
+ if(aliases != null)
{
- log.debug("Registering plugin [shortName]: " + name);
- m_pluginClassMap.put(name, pluginClass);
+ for( String a : aliases )
+ {
+ log.debug("Registering plugin [shortName]: " + a);
+ m_pluginClassMap.put(a, pluginClass);
+ }
}
// Registrar the plugin with the className with the package-part
@@ -700,61 +692,31 @@
pluginClass.initializePlugin( m_engine );
}
- private void registerPlugins()
+ private void registerAllPlugins()
{
log.info( "Registering plugins" );
- SAXBuilder builder = new SAXBuilder();
-
- try
+ //
+ // We locate every single class which implements the "WikiPlugin" interface.
+ //
+
+ ResolverUtil<WikiPlugin> resolver = new ResolverUtil<WikiPlugin>();
+
+ String[] paths = m_searchPath.toArray( new String[0] );
+ resolver.findImplementations( WikiPlugin.class, paths );
+
+ Set<Class<? extends WikiPlugin>> resultSet = resolver.getClasses();
+
+ log.debug( "Found "+resultSet.size()+" plugins" );
+
+ for( Class<? extends WikiPlugin> clazz : resultSet )
{
- //
- // Register all plugins which have created a resource containing its properties.
- //
- // Get all resources of all plugins.
- //
-
- Enumeration resources = getClass().getClassLoader().getResources( PLUGIN_RESOURCE_LOCATION );
+ WikiPluginInfo pluginInfo = WikiPluginInfo.newInstance( clazz );
- while( resources.hasMoreElements() )
+ if( pluginInfo != null )
{
- URL resource = (URL) resources.nextElement();
-
- try
- {
- log.debug( "Processing XML: " + resource );
-
- Document doc = builder.build( resource );
-
- List plugins = XPath.selectNodes( doc, "/modules/plugin");
-
- for( Iterator i = plugins.iterator(); i.hasNext(); )
- {
- Element pluginEl = (Element) i.next();
-
- String className = pluginEl.getAttributeValue("class");
-
- WikiPluginInfo pluginInfo = WikiPluginInfo.newInstance( className, pluginEl );
-
- if( pluginInfo != null )
- {
- registerPlugin( pluginInfo );
- }
- }
- }
- catch( java.io.IOException e )
- {
- log.error( "Couldn't load " + PLUGIN_RESOURCE_LOCATION + " resources: " + resource, e );
- }
- catch( JDOMException e )
- {
- log.error( "Error parsing XML for plugin: "+PLUGIN_RESOURCE_LOCATION );
- }
- }
- }
- catch( java.io.IOException e )
- {
- log.error( "Couldn't load all " + PLUGIN_RESOURCE_LOCATION + " resources", e );
+ registerPlugin( pluginInfo );
+ }
}
}
@@ -762,116 +724,62 @@
* Contains information about a bunch of plugins.
*
* @author Kees Kuip
- * @author Janne Jalkanen
- *
- * @since
*/
- // FIXME: This class needs a better interface to return all sorts of possible
- // information from the plugin XML. In fact, it probably should have
- // some sort of a superclass system.
public static final class WikiPluginInfo
extends WikiModuleInfo
{
- private String m_className;
- private String m_alias;
- private Class m_clazz;
-
- private boolean m_initialized = false;
-
- /**
- * Creates a new plugin info object which can be used to access a plugin.
- *
- * @param className Either a fully qualified class name, or a "short" name which is then
- * checked against the internal list of plugin packages.
- * @param el A JDOM Element containing the information about this class.
- * @return A WikiPluginInfo object.
- */
- protected static WikiPluginInfo newInstance( String className, Element el )
- {
- if( className == null || className.length() == 0 ) return null;
- WikiPluginInfo info = new WikiPluginInfo( className );
-
- info.initializeFromXML( el );
- return info;
- }
- /**
- * Initializes a plugin, if it has not yet been initialized.
- *
- * @param engine The WikiEngine
- */
- protected void initializePlugin( WikiEngine engine )
- {
- if( !m_initialized )
- {
- // This makes sure we only try once per class, even if init fails.
- m_initialized = true;
-
- try
- {
- WikiPlugin p = newPluginInstance();
- if( p instanceof InitializablePlugin )
- {
- ((InitializablePlugin)p).initialize( engine );
- }
- }
- catch( Exception e )
- {
- log.info( "Cannot initialize plugin "+m_className, e );
- }
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected void initializeFromXML( Element el )
- {
- super.initializeFromXML( el );
- m_alias = el.getChildText("alias");
- }
-
+ String[] m_aliases;
+ Class<? extends WikiPlugin> m_clazz;
+ boolean m_initialized = false;
+
/**
* Create a new WikiPluginInfo based on the Class information.
*
* @param clazz The class to check
* @return A WikiPluginInfo instance
*/
- protected static WikiPluginInfo newInstance( Class clazz )
+ protected static WikiPluginInfo newInstance( Class<? extends WikiPlugin> clazz )
{
- WikiPluginInfo info = new WikiPluginInfo( clazz.getName() );
+ WikiPluginInfo info = new WikiPluginInfo( clazz );
return info;
}
- private WikiPluginInfo( String className )
+ private WikiPluginInfo( Class<? extends WikiPlugin> clazz )
{
- super(className);
- setClassName( className );
+ super(clazz.getName());
+ setClassName( clazz.getName() );
+ initializeFromClass( clazz );
+ m_clazz = clazz;
+
+ ModuleData md = clazz.getAnnotation( ModuleData.class );
+ if( md != null )
+ {
+ m_aliases = md.aliases();
+ }
}
private void setClassName( String fullClassName )
{
m_name = ClassUtils.getShortClassName( fullClassName );
- m_className = fullClassName;
}
-
+
/**
* Returns the full class name of this object.
* @return The full class name of the object.
*/
public String getClassName()
{
- return m_className;
+ return m_clazz.getCanonicalName();
}
/**
* Returns the alias name for this object.
* @return An alias name for the plugin.
*/
- public String getAlias()
+ public String[] getAliases()
{
- return m_alias;
+ return m_aliases;
}
/**
@@ -887,12 +795,7 @@
InstantiationException,
IllegalAccessException
{
- if( m_clazz == null )
- {
- m_clazz = Class.forName(m_className);
- }
-
- return (WikiPlugin) m_clazz.newInstance();
+ return m_clazz.newInstance();
}
/**
@@ -938,7 +841,7 @@
try
{
- m_scriptText = getTextResource(m_scriptLocation);
+ m_scriptText = getTextResource(m_scriptLocation[0]);
}
catch( IOException ex )
{
@@ -965,7 +868,7 @@
try
{
- m_stylesheetText = getTextResource(m_stylesheetLocation);
+ m_stylesheetText = getTextResource(m_stylesheetLocation[0]);
}
catch( IOException ex )
{
@@ -978,6 +881,33 @@
}
/**
+ * Initializes a plugin, if it has not yet been initialized.
+ *
+ * @param engine The WikiEngine
+ */
+ protected void initializePlugin( WikiEngine engine )
+ {
+ if( !m_initialized )
+ {
+ // This makes sure we only try once per class, even if init fails.
+ m_initialized = true;
+
+ try
+ {
+ WikiPlugin p = newPluginInstance();
+ if( p instanceof InitializablePlugin )
+ {
+ ((InitializablePlugin)p).initialize( engine );
+ }
+ }
+ catch( Exception e )
+ {
+ log.info( "Cannot initialize plugin "+m_clazz.getCanonicalName(), e );
+ }
+ }
+ }
+
+ /**
* Returns a string suitable for debugging. Don't assume that the format
* would stay the same.
*
@@ -985,20 +915,20 @@
*/
public String toString()
{
- return "Plugin :[name=" + m_name + "][className=" + m_className + "]";
+ return "Plugin :[name=" + m_name + "][className=" + m_clazz.getCanonicalName() + "]";
}
} // WikiPluginClass
/**
* {@inheritDoc}
*/
- public Collection modules()
+ public Collection<WikiPluginInfo> modules()
{
- TreeSet<WikiModuleInfo> ls = new TreeSet<WikiModuleInfo>();
+ TreeSet<WikiPluginInfo> ls = new TreeSet<WikiPluginInfo>();
for( Iterator i = m_pluginClassMap.values().iterator(); i.hasNext(); )
{
- WikiModuleInfo wmi = (WikiModuleInfo)i.next();
+ WikiPluginInfo wmi = (WikiPluginInfo) i.next();
if( !ls.contains(wmi) ) ls.add(wmi);
}
Modified: incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/preferences/Preferences.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/preferences/Preferences.java?rev=712929&r1=712928&r2=712929&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/preferences/Preferences.java (original)
+++ incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/preferences/Preferences.java Mon Nov 10 19:49:06 2008
@@ -21,7 +21,6 @@
package com.ecyrd.jspwiki.preferences;
import java.text.DateFormat;
-import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -31,6 +30,7 @@
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
+import org.json.JSONException;
import org.json.JSONObject;
import com.ecyrd.jspwiki.InternalWikiException;
@@ -151,7 +151,7 @@
prefs.put(key, jo.getString(key) );
}
}
- catch( ParseException e )
+ catch( JSONException e )
{
}
}
Modified: incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/providers/CachingProvider.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/providers/CachingProvider.java?rev=712929&r1=712928&r2=712929&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/providers/CachingProvider.java (original)
+++ incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/providers/CachingProvider.java Mon Nov 10 19:49:06 2008
@@ -853,14 +853,21 @@
synchronized(this)
{
// Clear any cached version of the old page
- log.debug("Removing page "+from+" from cache");
- m_cache.removeEntry( from );
-
+ log.debug("Removing from page "+from+" from cache");
+// m_cache.removeEntry( from );
+ m_cache.putInCache( from, null );
+ m_textCache.putInCache( from, null );
+ m_historyCache.putInCache( from, null );
+ m_negCache.putInCache( from, from );
// Clear the cache for the to page, if that page already exists
//if ( m_cache.get( to ) != null )
//{
- log.debug("Removing page "+to+" from cache");
- m_cache.removeEntry( to );
+ log.debug("Removing to page "+to+" from cache");
+// m_cache.removeEntry( to );
+ m_cache.putInCache( to, null );
+ m_textCache.putInCache( to, null );
+ m_historyCache.putInCache( to, null );
+ m_negCache.putInCache( to, to );
//}
}
}
Modified: incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/rpc/json/JSONRPCManager.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/rpc/json/JSONRPCManager.java?rev=712929&r1=712928&r2=712929&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/rpc/json/JSONRPCManager.java (original)
+++ incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/rpc/json/JSONRPCManager.java Mon Nov 10 19:49:06 2008
@@ -20,6 +20,7 @@
*/
package com.ecyrd.jspwiki.rpc.json;
+import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Method;
import java.security.Permission;
import java.util.HashMap;
@@ -38,8 +39,8 @@
import com.ecyrd.jspwiki.rpc.RPCCallable;
import com.ecyrd.jspwiki.rpc.RPCManager;
import com.ecyrd.jspwiki.ui.TemplateManager;
-import com.metaparadigm.jsonrpc.InvocationCallback;
-import com.metaparadigm.jsonrpc.JSONRPCBridge;
+import org.jabsorb.callback.InvocationCallback;
+import org.jabsorb.JSONRPCBridge;
/**
* Provides an easy-to-use interface for different modules to AJAX-enable
@@ -120,7 +121,7 @@
}
if( bridge == null) bridge = JSONRPCBridge.getGlobalBridge();
- bridge.setDebug(false);
+// bridge. setDebug(false);
return bridge;
}
@@ -182,8 +183,6 @@
/**
* Does not do anything.
- *
- * {@inheritDoc}
*/
public void postInvoke(Object context, Object instance, Method method, Object result) throws Exception
{
@@ -191,8 +190,6 @@
/**
* Checks access against the permission given.
- *
- * {@inheritDoc}
*/
public void preInvoke(Object context, Object instance, Method method, Object[] arguments) throws Exception
{
@@ -225,6 +222,14 @@
log.debug("Failed JSON permission check: "+instance);
throw new WikiSecurityException("No permission to access this AJAX method!");
}
+
+ public void postInvoke( Object arg0, Object arg1, AccessibleObject arg2, Object arg3 ) throws Exception
+ {
+ }
+
+ public void preInvoke( Object arg0, Object arg1, AccessibleObject arg2, Object[] arg3 ) throws Exception
+ {
+ }
}
Modified: incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/search/LuceneSearchProvider.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/search/LuceneSearchProvider.java?rev=712929&r1=712928&r2=712929&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/search/LuceneSearchProvider.java (original)
+++ incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/search/LuceneSearchProvider.java Mon Nov 10 19:49:06 2008
@@ -212,18 +212,34 @@
for( Iterator iterator = allPages.iterator(); iterator.hasNext(); )
{
WikiPage page = (WikiPage) iterator.next();
- String text = m_engine.getPageManager().getPageText( page.getName(),
- WikiProvider.LATEST_VERSION );
- luceneIndexPage( page, text, writer );
+
+ try
+ {
+ String text = m_engine.getPageManager().getPageText( page.getName(),
+ WikiProvider.LATEST_VERSION );
+ luceneIndexPage( page, text, writer );
+ }
+ catch( Exception e )
+ {
+ log.info("Unable to index page, continuing to next: "+page.getName(),e );
+ }
}
Collection allAttachments = m_engine.getAttachmentManager().getAllAttachments();
for( Iterator iterator = allAttachments.iterator(); iterator.hasNext(); )
{
Attachment att = (Attachment) iterator.next();
- String text = getAttachmentContent( att.getName(),
- WikiProvider.LATEST_VERSION );
- luceneIndexPage( att, text, writer );
+
+ try
+ {
+ String text = getAttachmentContent( att.getName(),
+ WikiProvider.LATEST_VERSION );
+ luceneIndexPage( att, text, writer );
+ }
+ catch( Exception e )
+ {
+ log.info("Unable to index attachment, continuing to next: "+att.getName(),e );
+ }
}
writer.optimize();
Modified: incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/ui/EditorManager.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/ui/EditorManager.java?rev=712929&r1=712928&r2=712929&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/ui/EditorManager.java (original)
+++ incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/ui/EditorManager.java Mon Nov 10 19:49:06 2008
@@ -37,7 +37,6 @@
import com.ecyrd.jspwiki.WikiEngine;
import com.ecyrd.jspwiki.modules.ModuleManager;
import com.ecyrd.jspwiki.modules.WikiModuleInfo;
-import com.ecyrd.jspwiki.plugin.PluginManager;
import com.ecyrd.jspwiki.preferences.Preferences;
/**
@@ -123,7 +122,7 @@
// Get all resources of all modules
//
- Enumeration resources = getClass().getClassLoader().getResources( PLUGIN_RESOURCE_LOCATION );
+ Enumeration resources = getClass().getClassLoader().getResources( MODULE_RESOURCE_LOCATION );
while( resources.hasMoreElements() )
{
@@ -159,17 +158,17 @@
}
catch( java.io.IOException e )
{
- log.error( "Couldn't load " + PluginManager.PLUGIN_RESOURCE_LOCATION + " resources: " + resource, e );
+ log.error( "Couldn't load " + ModuleManager.MODULE_RESOURCE_LOCATION + " resources: " + resource, e );
}
catch( JDOMException e )
{
- log.error( "Error parsing XML for plugin: "+PluginManager.PLUGIN_RESOURCE_LOCATION );
+ log.error( "Error parsing XML for plugin: "+ModuleManager.MODULE_RESOURCE_LOCATION );
}
}
}
catch( java.io.IOException e )
{
- log.error( "Couldn't load all " + PLUGIN_RESOURCE_LOCATION + " resources", e );
+ log.error( "Couldn't load all " + MODULE_RESOURCE_LOCATION + " resources", e );
}
}
Modified: incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/ui/WikiJSPFilter.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/ui/WikiJSPFilter.java?rev=712929&r1=712928&r2=712929&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/ui/WikiJSPFilter.java (original)
+++ incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/ui/WikiJSPFilter.java Mon Nov 10 19:49:06 2008
@@ -20,9 +20,7 @@
*/
package com.ecyrd.jspwiki.ui;
-import java.io.CharArrayWriter;
-import java.io.IOException;
-import java.io.PrintWriter;
+import java.io.*;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
@@ -36,6 +34,7 @@
import com.ecyrd.jspwiki.action.WikiActionBean;
import com.ecyrd.jspwiki.action.WikiActionBeanFactory;
import com.ecyrd.jspwiki.event.*;
+import com.ecyrd.jspwiki.util.UtilJ2eeCompat;
import com.ecyrd.jspwiki.util.WatchDog;
/**
@@ -69,7 +68,16 @@
*/
public class WikiJSPFilter extends WikiServletFilter
{
+ private Boolean m_useOutputStream;
+
/** {@inheritDoc} */
+ public void init( FilterConfig config ) throws ServletException
+ {
+ super.init( config );
+ ServletContext context = config.getServletContext();
+ m_useOutputStream = UtilJ2eeCompat.useOutputStream( context.getServerInfo() );
+ }
+
public void doFilter( ServletRequest request,
ServletResponse response,
FilterChain chain )
@@ -81,8 +89,19 @@
NDC.push( m_engine.getApplicationName()+":"+((HttpServletRequest)request).getRequestURI() );
w.enterState("Filtering for URL "+((HttpServletRequest)request).getRequestURI(), 90 );
-
- HttpServletResponseWrapper responseWrapper = new MyServletResponseWrapper( (HttpServletResponse)response );
+ HttpServletResponseWrapper responseWrapper;
+
+ if( m_useOutputStream )
+ {
+ log.debug( "Using ByteArrayResponseWrapper" );
+ responseWrapper = new ByteArrayResponseWrapper( (HttpServletResponse)response );
+ }
+ else
+ {
+ log.debug( "Using MyServletResponseWrapper" );
+ responseWrapper = new MyServletResponseWrapper( (HttpServletResponse)response );
+
+ }
// fire PAGE_REQUESTED event
WikiActionBean wikiContext = WikiActionBeanFactory.findActionBean( request );
@@ -289,6 +308,75 @@
}
}
+ /**
+ * Response wrapper for application servers which do not work with CharArrayWriter
+ * Currently only OC4J
+ */
+ private static class ByteArrayResponseWrapper
+ extends HttpServletResponseWrapper
+ {
+ private ByteArrayOutputStream m_output;
+ private HttpServletResponse m_response;
+
+ /**
+ * How large the initial buffer should be. This should be tuned to achieve
+ * a balance in speed and memory consumption.
+ */
+ private static final int INIT_BUFFER_SIZE = 4096;
+
+ public ByteArrayResponseWrapper( HttpServletResponse r )
+ {
+ super(r);
+ m_output = new ByteArrayOutputStream( INIT_BUFFER_SIZE );
+ m_response = r;
+ }
+
+ /**
+ * Returns a writer for output; this wraps the internal buffer
+ * into a PrintWriter.
+ */
+ public PrintWriter getWriter()
+ {
+ return new PrintWriter( getOutputStream(), true );
+ }
+
+ public ServletOutputStream getOutputStream()
+ {
+ return new MyServletOutputStream( m_output );
+ }
+
+ static class MyServletOutputStream extends ServletOutputStream
+ {
+ private DataOutputStream m_stream;
+
+ public MyServletOutputStream( OutputStream aOutput )
+ {
+ super();
+ m_stream = new DataOutputStream( aOutput );
+ }
+
+ public void write( int aInt ) throws IOException
+ {
+ m_stream.write( aInt );
+ }
+ }
+
+ /**
+ * Returns whatever was written so far into the Writer.
+ */
+ public String toString()
+ {
+ try
+ {
+ return m_output.toString( m_response.getCharacterEncoding() );
+ }
+ catch( UnsupportedEncodingException e )
+ {
+ log.error( ByteArrayResponseWrapper.class + " Unsupported Encoding", e );
+ return null;
+ }
+ }
+ }
// events processing .......................................................
Modified: incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/ui/admin/beans/PluginBean.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/ui/admin/beans/PluginBean.java?rev=712929&r1=712928&r2=712929&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/ui/admin/beans/PluginBean.java (original)
+++ incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/ui/admin/beans/PluginBean.java Mon Nov 10 19:49:06 2008
@@ -76,7 +76,7 @@
tr head = new tr();
head.addElement( new th("Name") );
- head.addElement( new th("Alias") );
+ head.addElement( new th("Aliases") );
head.addElement( new th("Author") );
head.addElement( new th("Notes") );
@@ -89,8 +89,16 @@
WikiPluginInfo info = i.next();
+ StringBuilder aliases = new StringBuilder();
+
+ for( String s : info.getAliases() )
+ {
+ if( aliases.length() > 0 ) aliases.append( ", " );
+ aliases.append( s );
+ }
+
row.addElement( new td(info.getName()) );
- row.addElement( new td(info.getAlias()) );
+ row.addElement( new td(aliases.toString()) );
row.addElement( new td(info.getAuthor()) );
String verWarning = "";
Modified: incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/url/ShortURLConstructor.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/url/ShortURLConstructor.java?rev=712929&r1=712928&r2=712929&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/url/ShortURLConstructor.java (original)
+++ incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/com/ecyrd/jspwiki/url/ShortURLConstructor.java Mon Nov 10 19:49:06 2008
@@ -126,7 +126,8 @@
}
else if( context.equals(WikiContext.LOGIN) )
{
- return doReplacement( viewurl+"?do=Login", name, absolute );
+ String loginUrl = absolute ? "%uLogin.jsp?redirect=%n" : "%pLogin.jsp?redirect=%n";
+ return doReplacement( loginUrl, name, absolute );
}
else if( context.equals(WikiContext.DELETE) )
{
Modified: incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/webdocs/admin/SecurityConfig.jsp
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/webdocs/admin/SecurityConfig.jsp?rev=712929&r1=712928&r2=712929&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/webdocs/admin/SecurityConfig.jsp (original)
+++ incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/webdocs/admin/SecurityConfig.jsp Mon Nov 10 19:49:06 2008
@@ -125,9 +125,9 @@
<!-- Notify users which JAAS configs we need to find -->
<p>JSPWiki wires up its own JAAS to define the authentication process, and does not rely on the JRE configuration. By default, JSPWiki configures its JAAS login stack to use the UserDatabaseLoginModule. You can specify a custom login module by setting the <code>jspwiki.loginModule.class</code> property in <code>jspwiki.properties</code>.</p>
-<wiki:Messages div="information" topic="<%=SecurityVerifier.INFO+"java.security.auth.login.config"%>" prefix="Good news: "/>
-<wiki:Messages div="warning" topic="<%=SecurityVerifier.WARNING+"java.security.auth.login.config"%>" prefix="We found some potential problems with your configuration: "/>
-<wiki:Messages div="error" topic="<%=SecurityVerifier.ERROR+"java.security.auth.login.config"%>" prefix="We found some errors with your configuration: " />
+<wiki:Messages div="information" topic='<%=SecurityVerifier.INFO+"java.security.auth.login.config"%>' prefix="Good news: "/>
+<wiki:Messages div="warning" topic='<%=SecurityVerifier.WARNING+"java.security.auth.login.config"%>' prefix="We found some potential problems with your configuration: "/>
+<wiki:Messages div="error" topic='<%=SecurityVerifier.ERROR+"java.security.auth.login.config"%>' prefix="We found some errors with your configuration: " />
<!-- Print JAAS configuration status -->
<p>The JAAS login configuration is correctly configured if the <code>jspwiki.loginModule.class</code> property specifies
Modified: incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/webdocs/rss.jsp
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/webdocs/rss.jsp?rev=712929&r1=712928&r2=712929&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/webdocs/rss.jsp (original)
+++ incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/webdocs/rss.jsp Mon Nov 10 19:49:06 2008
@@ -5,10 +5,13 @@
<%@ page import="java.text.*" %>
<%@ page import="com.ecyrd.jspwiki.rss.*" %>
<%@ page import="com.ecyrd.jspwiki.util.*" %>
+<%@ page import="com.opensymphony.oscache.base.*" %>
<%@ taglib uri="/WEB-INF/oscache.tld" prefix="oscache" %>
<%!
Logger log = Logger.getLogger("JSPWiki");
+ Cache m_cache = new Cache( true, false, false, true,
+ "com.opensymphony.oscache.base.algorithm.LRUCache", 256 );
%>
<%
@@ -104,10 +107,37 @@
response.addDateHeader("Last-Modified",latest.getTime());
response.addHeader("ETag", HttpUtil.createETag(wikipage) );
-%>
-<%-- <oscache:cache time="300"> --%>
-<%
- out.println(wiki.getRSSGenerator().generateFeed( wikiContext, changed, mode, type ));
-%>
-<%-- </oscache:cache> --%>
-<% w.exitState(); %>
+
+ //
+ // Try to get the RSS XML from the cache. We build the hashkey
+ // based on the LastModified-date, so whenever it changes, so does
+ // the hashkey so we don't have to make any special modifications.
+ //
+ // TODO: Figure out if it would be a good idea to use a disk-based
+ // cache here.
+ //
+ String hashKey = wikipage.getName()+";"+mode+";"+type+";"+latest.getTime();
+
+ String rss = "";
+
+ try
+ {
+ rss = (String)m_cache.getFromCache(hashKey);
+ }
+ catch( NeedsRefreshException e )
+ {
+ try
+ {
+ rss = wiki.getRSSGenerator().generateFeed( wikiContext, changed, mode, type );
+ m_cache.putInCache(hashKey,rss);
+ }
+ catch( Exception e1 )
+ {
+ m_cache.cancelUpdate(hashKey);
+ }
+ }
+
+ out.println(rss);
+
+ w.exitState();
+ %>
Modified: incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/webdocs/scripts/jspwiki-edit.js
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/webdocs/scripts/jspwiki-edit.js?rev=712929&r1=712928&r2=712929&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/webdocs/scripts/jspwiki-edit.js (original)
+++ incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/webdocs/scripts/jspwiki-edit.js Mon Nov 10 19:49:06 2008
@@ -201,6 +201,9 @@
.addEvent('keyup', this.getSuggestions.bind(this))
.addEvent('change', this.onChangeTextarea.bind(this))
.focus();
+
+ /* regularly refresh section-edit toc and sneak-preview */
+ this.textarea.fireEvent.periodical(3000,this.textarea,['change']);
},
/* add textarea resize drag bar */
@@ -483,12 +486,15 @@
},
onPageLoadPreview : function(){
- if( $$('#sneakpreview','#autopreview').length != 2) return;
- $('autopreview')
+ var checkbox = $('autopreview');
+
+ if(!checkbox) return;
+
+ checkbox
.setProperty('checked', Wiki.prefs.get('autopreview') || false)
.addEvent('click', function(){
var ta = this.textarea,
- isOn = $('autopreview').checked;
+ isOn = checkbox.checked;
$('sneakpreview').empty();
ta.removeEvents('preview');
@@ -501,22 +507,14 @@
refreshPreview: function(){
var preview = $('sneakpreview');
- this.bgcolor = this.bgcolor || preview.getStyle('background-color');
- var bgcolorfx = (this.bgcolor == 'transparent' ) ? '#fff' : this.bgcolor,
- previewfx = preview.effect('background-color', {
- duration:2000,
- wait:false,
- onComplete:function(){ preview.setStyle('background-color', this.bgcolor); }
- });
-
- //TODO: put a spinner in the preview result block
+ $('previewSpin').show();
new Ajax( Wiki.TemplateUrl + "/AJAXPreview.jsp?page="+Wiki.PageName, {
postBody: 'wikimarkup=' + encodeURIComponent(this.textarea.value),
update: preview,
onComplete: function(){
+ $('previewSpin').hide();
Wiki.renderPage(preview, Wiki.PageName);
- previewfx.start('#ffff88',bgcolorfx);
}
}).request();
},
@@ -645,6 +643,7 @@
* happens when
* (i) textarea is changed and deselected (click outside the textarea)
* (ii) user clicks a toolbar-button
+ * (iii) periodical
*
* 1) copy section textarea at the right offset of the main textarea
* 2) refresh the section-edit menu
@@ -652,6 +651,9 @@
onChangeTextarea : function(){
var ta = this.textarea, ma = this.mainarea;
+ if(ta.value == this.cacheTextarea) return;
+ this.cacheTextarea=ta.value;
+
if( this.sections ){
var s = ta.value;
if( s.lastIndexOf("\n") + 1 != s.length ) ta.value += '\n';
Modified: incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/webdocs/templates/default/GroupContent.jsp
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/webdocs/templates/default/GroupContent.jsp?rev=712929&r1=712928&r2=712929&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/webdocs/templates/default/GroupContent.jsp (original)
+++ incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/webdocs/templates/default/GroupContent.jsp Mon Nov 10 19:49:06 2008
@@ -6,6 +6,7 @@
<%@ page import="com.ecyrd.jspwiki.auth.PrincipalComparator" %>
<%@ page import="com.ecyrd.jspwiki.auth.authorize.Group" %>
<%@ page import="com.ecyrd.jspwiki.auth.authorize.GroupManager" %>
+<%@ page import="com.ecyrd.jspwiki.preferences.Preferences" %>
<%@ page import="org.apache.log4j.*" %>
<%@ page errorPage="/Error.jsp" %>
<%@ page import="javax.servlet.jsp.jstl.fmt.*" %>
@@ -35,12 +36,12 @@
creator = group.getCreator();
if ( group.getCreated() != null )
{
- created = group.getCreated().toString();
+ created = Preferences.renderDate(WikiContext.findContext( pageContext ), group.getCreated(),Preferences.TimeFormat.DATETIME);
}
modifier = group.getModifier();
if ( group.getLastModified() != null )
{
- modified = group.getLastModified().toString();
+ modified = Preferences.renderDate(WikiContext.findContext( pageContext ), group.getLastModified(),Preferences.TimeFormat.DATETIME) ;
}
}
name = TextUtil.replaceEntities(name);
Modified: incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/webdocs/templates/default/GroupTab.jsp
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/webdocs/templates/default/GroupTab.jsp?rev=712929&r1=712928&r2=712929&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/webdocs/templates/default/GroupTab.jsp (original)
+++ incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/webdocs/templates/default/GroupTab.jsp Mon Nov 10 19:49:06 2008
@@ -7,6 +7,7 @@
<%@ page import="com.ecyrd.jspwiki.auth.PrincipalComparator" %>
<%@ page import="com.ecyrd.jspwiki.auth.authorize.Group" %>
<%@ page import="com.ecyrd.jspwiki.auth.authorize.GroupManager" %>
+<%@ page import="com.ecyrd.jspwiki.preferences.Preferences" %>
<%@ page import="org.apache.log4j.*" %>
<%@ page errorPage="/Error.jsp" %>
<%@ page import="javax.servlet.jsp.jstl.fmt.*" %>
@@ -34,11 +35,11 @@
ss.append( delim );
mf = new MessageFormat(LocaleSupport.getLocalizedMessage(pageContext, "grp.createdon") );
- args = new Object[]{(group.getCreated()==null) ? "" : group.getCreated().toString(), group.getCreator()};
+ args = new Object[]{(group.getCreated()==null) ? "" : Preferences.renderDate(WikiContext.findContext( pageContext ), group.getCreated(),Preferences.TimeFormat.DATETIME), group.getCreator()};
ss.append( mf.format( args ) );
mf = new MessageFormat(LocaleSupport.getLocalizedMessage(pageContext, "grp.lastmodified") );
- args = new Object[]{(group.getCreated()==null) ? "" : group.getCreated().toString(), group.getModifier()};
+ args = new Object[]{(group.getLastModified()==null) ? "" : Preferences.renderDate(WikiContext.findContext( pageContext ), group.getLastModified(),Preferences.TimeFormat.DATETIME), group.getModifier()};
ss.append( mf.format( args ) );
ss.append( "\", " );
Modified: incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/webdocs/templates/default/editors/plain.jsp
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/webdocs/templates/default/editors/plain.jsp?rev=712929&r1=712928&r2=712929&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/webdocs/templates/default/editors/plain.jsp (original)
+++ incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/webdocs/templates/default/editors/plain.jsp Mon Nov 10 19:49:06 2008
@@ -211,6 +211,7 @@
<div id="sneakpreviewheader">
<input type="checkbox" name="autopreview" id="autopreview" <%=TextUtil.isPositive((String)session.getAttribute("autopreview")) ? "checked='checked'" : ""%> />
<label for="autopreview" title="<fmt:message key='editor.plain.sneakpreview.title'/>"><fmt:message key="editor.plain.sneakpreview"/></label>
+ <span id="previewSpin" class="spin" style="position:absolute;display:none;"></span>
</div>
<div id="sneakpreview" ></div>
Modified: incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/webdocs/templates/default/jspwiki.css
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/webdocs/templates/default/jspwiki.css?rev=712929&r1=712928&r2=712929&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/webdocs/templates/default/jspwiki.css (original)
+++ incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/webdocs/templates/default/jspwiki.css Mon Nov 10 19:49:06 2008
@@ -52,6 +52,7 @@
}
#favorites {
float:left;
+ overflow:hidden; /*avoid overflow for wide content of leftmenu or leftmenufooter */
margin-top:1.75em;
width:18%;
padding:0.5em;
@@ -178,11 +179,11 @@
line-height:1.2;
}
h2 { font-size: 150%; }
-h2 .editsection { font-size: 67%; padding-left:1em;}
+h2 .editsection, h2 .hashlink { font-size: 67%; padding-left:1em;}
h3 { font-size: 132%; }
-h3 .editsection { font-size: 76%; padding-left:1em;}
+h3 .editsection, h3 .hashlink { font-size: 76%; padding-left:1em;}
h4 { font-size: 116%; }
-h4 .editsection { font-size: 86%; padding-left:1em;}
+h4 .editsection, h4 .hashlink { font-size: 86%; padding-left:1em;}
.editsection {
font-weight:normal;
line-height:1.2;
@@ -347,7 +348,17 @@
a.infolink img {
display:none;
}*/
-
+/* hashlink */
+a.hashlink {
+ color:transparent;
+ line-height:1.2;
+ padding:0.25em;
+ text-decoration:none;
+}
+a.hashlink:hover {
+ background-color:#eee;
+ color:blue;
+}
/* +++ 260 Image styles +++ */
img {
border:none;
@@ -714,6 +725,7 @@
width:99%;
}
#toctoc {
+ position:relative;
margin:0.5em 0;
}
#toctoc label {
@@ -963,6 +975,9 @@
background:#eee;
/*line-height:1;*/
}
+.pagination a {
+ cursor:pointer;
+}
.pagination a, .pagination .cursor {
padding:0.5em;
}
@@ -1156,17 +1171,16 @@
}
#searchSubmit {
position:absolute;
- top: 5px;
- right: 3px;
+ top:5px;
+ right:3px;
margin:0;
padding:0;
width:16px;
height:16px;
- border:none;
- background: #fff url(images/search.gif) no-repeat center;
+ border:none;
+ background: url(images/search.gif) no-repeat center;
overflow:hidden;
- text-indent:16px;
cursor:pointer;
}
#searchboxMenu {
@@ -1246,9 +1260,9 @@
/* +++ 625 Table of contents plugin +++ */
div.toc {
- width:60%;
- float:left;
- clear:left;
+ width:60%;
+ float:left;
+ clear:left;
}
/* duplicate toc items links back to the first rendered table of contents */
a.toc {
Modified: incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/wikipages/zh_CN/About.txt
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/wikipages/zh_CN/About.txt?rev=712929&r1=712928&r2=712929&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/wikipages/zh_CN/About.txt (original)
+++ incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/wikipages/zh_CN/About.txt Mon Nov 10 19:49:06 2008
@@ -1,15 +1,14 @@
-Êú¨ Wiki ÈááÁî®??Ü [JSP|http://java.sun.com/products/jsp] ÊäÄÊúØÔºåËøôÊ??ÁöÑÊäÄÊúØ??øÂæó Wiki ÈùûÂ??ÂÆ?ÊòìÊõ¥Êñ?ÔºåÂ????î?ºº??éÊØî§ß§öÊï?Âü???é[ÂéüÂßãÁâàÊú¨|http://c2.com/cgi/wiki]ÁöÑ Wiki ˶ÅÊõ¥Â???ÄÇÂÆöÂà?ÁöÑ bean Ë¥üË¥£Â?ÜÊñáÊú¨Ë?¨Êç¢Êàê HTML ÂÜÖÂÆ??ÄÇ
-
-§ß§öÊï?[ÁºñËæëÊ?áËÆ?|TextFormattingRules]Ê??ÊçÆ [Sensei's Library|http://senseis.xmp.net] ËÆæËÆ°ÔºåÂÆÉÊòØ??íËÅîÁ?ë??äÊúÄÂ??ÁöÑ GO Á´ôÁÇ???ã??Ä?ÄÇÊàëËßâÂæó?ªñ?ª¨ÁöÑÊ?áËÆ?ÈùûÂ??ÂÆ?ÊòìÔºåËÄå??îÊ?ÖÊô??ÄÇ
-
-Êú¨ WikiÔºàJSPWikiÔºâÁöÑËÆ?ÂèØÂçèËÆÆÊòØ [Apache License, Version 2.0|http://www.apache.org/licenses/LICENSE-2.0]?ÄÇËØ?ÂèÇËÄÉ [http://incubator.apache.org/jspwiki] ??ÜËߣÊõ¥Â§ö?ø°ÊÅØ?ÄÇ
-
-¶ÇÊûúÊÇ®ÂØ? JSPWiki ºÄÂèëÊÑüÂÖ¥Ë?£ÔºåJSPWiki ÁöÑ??ªÈ°µÊòØ [http://www.jspwiki.org]?ÄÇ??ãÈù¢ÊòØ??Ä??õÂø´ÈÄüÈìæÊé?Ôºö
-
-* [Áº?Èô?Êä?Âëä|JSPWiki:SubmitBugReport] ÊàñËÄÖ[Áúã??Ä??ã Open Áº?Èô?ÁöÑÂàóË°®|JSPWiki:OpenBugs].
-* [Ë¥°ÁåÆÊñ?ÁöÑÊÉ?Ê?ï|JSPWiki:SubmitNewIdea]?ÄÇ
-* Áúã??Ä??ãÊúÄÊñ?ÁöÑ [JSPWiki FAQ|JSPWiki:JSPWikiFAQ]
-* ÂتÊâæÂÖ??ªñÁöÑ[Êèí?ª?|JSPWiki:ContributedPlugins]?ÄÅ[Ê®°Êùø|JSPWiki:ContributedTemplates]?ÄÅ[Ëøáʪ§Âô®|JSPWiki:ContributedFilters]?ÄÅ[Êèê?æõÁ®ãÂ?è|JSPWiki:ContributedProviders] ÊàñËÄÖ[ÂÖ??ªñÊØîËæÉÈÖ?ÁöÑ??úË?ø|JSPWiki:ContributedCode]?ÄÇ
-
-Á?ùÂÆöÂà?(hacking)ÊÑâÂø´ÔºåÊÑüË?¢ÊÇ®ÈÄâÊã©??Ü JSPWikiÔºÅ
-
+æ¬ Wiki éç¨äº [JSP|http://java.sun.com/products/jsp] ææ¯ï¼è¿æ ·çææ¯ä½¿å¾ Wiki é常容ææ´æ°ï¼å¹¶ä¸ä¼¼ä¹æ¯å¤§å¤æ°åºäº[åå§çæ¬|http://c2.com/cgi/wiki]ç Wiki è¦æ´å¥½ãå®å¶ç bean è´è´£å°ææ¬è½¬æ¢æ HTML å
容ã
+
+大å¤æ°[ç¼è¾æ è®°|TextFormattingRules]æ ¹æ® [Sensei's Library|http://senseis.xmp.net] 设计ï¼å®æ¯äºèç½ä¸æ好ç GO ç«ç¹ä¹ä¸ãæè§å¾ä»ä»¬çæ è®°é常容æï¼èä¸æ¸
æ°ã
+
+æ¬ Wikiï¼JSPWikiï¼ç许å¯åè®®æ¯ [Apache License, Version 2.0|http://www.apache.org/licenses/LICENSE-2.0]ã请åè [http://incubator.apache.org/jspwiki] äºè§£æ´å¤ä¿¡æ¯ã
+
+å¦ææ¨å¯¹ JSPWiki å¼åæå
´è¶£ï¼JSPWiki çä¸»é¡µæ¯ [http://www.jspwiki.org]ãä¸é¢æ¯ä¸äºå¿«éé¾æ¥ï¼
+
+* [缺é·æ¥å|JSPWiki:SubmitBugReport] æè
[çä¸ä¸ Open 缺é·çå表|JSPWiki:OpenBugs].
+* [è´¡ç®æ°çæ³æ³|JSPWiki:SubmitNewIdea]ã
+* çä¸ä¸ææ°ç [JSPWiki FAQ|JSPWiki:JSPWikiFAQ]
+* 寻æ¾å
¶ä»ç[æ件|JSPWiki:ContributedPlugins]ã[模æ¿|JSPWiki:ContributedTemplates]ã[è¿æ»¤å¨|JSPWiki:ContributedFilters]ã[æä¾ç¨åº|JSPWiki:ContributedProviders] æè
[å
¶ä»æ¯è¾é
·çä¸è¥¿|JSPWiki:ContributedCode]ã
+
+ç¥å®å¶(hacking)æå¿«ï¼æè°¢æ¨éæ©äº JSPWikiï¼
Propchange: incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/wikipages/zh_CN/ApprovalRequiredForPageChanges.txt
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Propchange: incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/wikipages/zh_CN/ApprovalRequiredForUserProfiles.txt
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Modified: incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/wikipages/zh_CN/Community.txt
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/wikipages/zh_CN/Community.txt?rev=712929&r1=712928&r2=712929&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/wikipages/zh_CN/Community.txt (original)
+++ incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/wikipages/zh_CN/Community.txt Mon Nov 10 19:49:06 2008
@@ -1,47 +1,47 @@
-[{TableOfContents}]
-
-!! ÈÇÆ?ª?ÂàóË°®
-Âú®Ëøô??? wiki ??ã§ñÊúâ???Áî®??éËÆ®ËÆ?ÁöÑ JSPWiki ÈÇÆ?ª?ÂàóË°®?ÄÇÂæàÈÄÇÂêàËÆ®ËÆ?ËØ?¶ÇË°???Å?ÄÅÈóÆÈ¢ò?ÄźÄÂèëÁ?âÁ?âÁöÑÈóÆÈ¢ò?ÄÇ
-
-ÁõÆÂâçÊúâ??§???ÈÇÆ?ª?ÂàóË°®Ôºö''jspwiki-users'' Âíå ''jspwiki-dev''?ÄÇ
-
-!JSPWiki-user
-
-jspwiki-user ÈÇÆ?ª?ÂàóË°®Áî± Apache Incubator ÊâòÁÆ°?ÄÇÂèØ?ª?ÈÄöËøáÂèëÈÄÅÈÇÆ?ª?Âà??ª???ãÂú?ÂùÄÁî?ËØ?Âä?ÂÖ?Ôºö[jspwiki-user-subscribe@incubator.apache.org|mailto:jspwiki-user-subscribe@incubator.apache.org]?ÄÇÈÇÆ?ª?ÂàóË°®Â?íÊ°£??ç??é [http://mail-archives.apache.org/mod_mbox/incubator-jspwiki-user/|http://mail-archives.apache.org/mod_mbox/incubator-jspwiki-user/]
-
-[?ª?ÂâçÁöÑÂàóË°®Â?íÊ°£|http://www.ecyrd.com/pipermail/jspwiki-users/] ËøòÂú®?ÄÇÂè¶Â§ñÔºåÂú® Nabble ??äËøòÊúâ??Ä??? [ÂâØÂ?íÊ°£|http://www.nabble.com/JspWiki---User-f2680.html]?ÄÇ
-
-!JSPWiki-dev
-
-Ëøô???ÂàóË°®??ªË¶ÅÈíàÂØ? JSPWiki ºÄÂèëËÄÖ?ÄǶÇÊûúÊãÖÂøÉʪ°Â§©È£ûÁöÑÊöóËØ?ÁöÑËØùÔºåÊúÄÂ??ËøòÊòØÂà´Âä?ÂÖ??ÄÇjspwiki-dev ÂàóË°®Áî± Apache ÊâòÁÆ°ÔºåÊâÄ?ª?ÊÇ®ÂèØ?ª?ÈÄöËøáÁªô??ãÈù¢ÁöÑÂú?ÂùÄÂèë???ÈÇÆ?ª?Êù?Âä?ÂÖ?Ôºö[jspwiki-dev-subscribe@incubator.apache.org|mailto:jspwiki-dev-subscribe@incubator.apache.org]?ÄÇÈÇÆ?ª?ÂàóË°®Â?íÊ°£??ç??é [http://mail-archives.apache.org/mod_mbox/incubator-jspwiki-dev/|http://mail-archives.apache.org/mod_mbox/incubator-jspwiki-dev/]
-
-!JSPWiki-commits
-
-¶ÇÊûúËÆ¢ÈòÖ??ÜËøô???ÂàóË°®Ôºå????ºöÂú®Âêë SVN Â?ìÊèê??§??ÜÊñ?ÁöÑÊàñ?øÆÊî?ËøáÁöÑÊñá?ª?Êó??ºöÊî?Âà?ÈÇÆ?ª?ÈÄöÁü??ÄÇ
-jspwiki-commits ÂàóË°®Áî± Apache ÊâòÁÆ°ÔºåÊÇ®ÂèØ?ª?ÈÄöËøáÁªô??ãÈù¢ÁöÑÂú?ÂùÄÂèëÈÄÅÈÇÆ?ª?Âä?ÂÖ?Ôºö[jspwiki-dev-subscribe@incubator.apache.org|mailto:jspwiki-dev-subscribe@incubator.apache.org]?ÄÇÈÇÆ?ª?ÂàóË°®Â?íÊ°£??ç??é http://mail-archives.apache.org/mod_mbox/incubator-jspwiki-commits/
-
-!ÂèñÊ?àËÆ¢ÈòÖ
-
-ÂèñÊ?àËÆ¢ÈòÖÂêåÊ??ÂÆ?ÊòìÔºöÊÇ®Âè?ÈúÄÁî®ËÆ¢ÈòÖÂàóË°®Êó???øÁî®ÁöÑÈÇÆ?ª?Âú?ÂùÄÁªô jspwiki-<user|dev|commits>-unsubscribe@incubator.apache.org ÂèëÈÄÅÈÇÆ?ª?Âç?ÂèØÂÆåÊàê?ÄÇ
-
-¶ÇÊûúÊÇ®ÊÉ?Êé¢Á©???Ä??õÊúâË?£ÁöÑÈóÆÈ¢òÁöÑËØùÔºå?ª?ÂâçÁöÑ JSPWiki-devÔºàÂà? 2007Â?¥10ÊúàÔºâÂ?íÊ°£[ËøòÂèØ?ª?Áî®|http://www.ecyrd.com/pipermail/jspwiki-dev/]?ÄÇ
-
-!! ÂÖ??ªñ˵ÑÊ?ê
-
-! IrcChannel - ??éºÄÂèëËÄÖÂú®Á?øËÅ䧩ԺÅ
-
-Âú® [Freenode|http://www.freenode.net] ??äÊúâ??? JSPWiki [IRC|http://www.mirc.com/irc.html] È¢ëÈÅìÔºåÂêçÁß????Ôºö#jspwiki. ¶ÇÊûúÊúâ?ªª??ïÁñëÈóÆÔºåÊàñËÄÖÂè?ÊòØÊÉ?ËÅäËÅäÔºåÂèØ?ª?ËøõÂéªÁúãÁúã?ÄÇ
-
-ÈúÄ˶ÅÊ?®ÊÑèÁöÑÊòØÔºåÊúâ??õÊó?ÊƵËøô???È¢ëÈÅìÈáåÈù¢?ºöÁõ?Â?ìÂÆâÈùôÔºå¶ÇÊûúÂèë??ÜÊ?àÊÅØÊ?°ÊúâÂõû§çÁöÑËØùÔºå±û??éÊ?£Â??Ôºå??ç˶ÅÊ?ÑÊ?î?ÄÇÂ?±Âú®Á?øÁ?â??Ä?ºöÂÑøÁúãÁúã?Ķ?Ķ
-
-È¢ëÈÅì??äÁöÑÂ??ÂÆ¢Ôºõ
-* [Janne Jalkanen|http://www.jspwiki.org/wiki/JanneJalkanen] (Ecyrd)ÔºöÊó?Âå???? GMT+2.
-
-! [FaceBook | http://www.facebook.com/group.php?gid=11138025370]
-
-Âè¶Â§ñÔºåÊàëËøòÂú® Facebook ??äª???Ü??Ä??? JSPWiki Áî®Êà?ÁªÑ??ú???®±??ê?ÄǶÇÊûúÊÇ®ÊòØ Facebook ??äÁöÑÂ??ÂÆ¢ÔºåÂèØ?ª?ÂéªÁúãÁúãÔºÅ
-
-ÔºàÂ?ìÁÑ?ÔºåÊàë?ª¨??ç?ºöÁî®Ëøô???ÊõøÊç¢?ªª??ïÁé?ÊúâÁöÑÁ´ôÁÇ??ÄÇ??çËøáÔºåÊØè??????ËøòÊúâ?ªñ?ª¨ÁöÑ???Âèã?ºº??é??üÂú® Facebook ??äÔºåÊàë?ºº??éËßâÂæóÂÜçÂä???Ä???È¢ëÈÅì??ü??çÈîôÔºâ
--- Janne 2007Â?¥9Êúà17Êó?
-
-* [JSPWiki 开发博客|http://blog.jspwiki.org/]
+[{TableOfContents}]
+
+!! é®ä»¶å表
+å¨è¿ä¸ª wiki ä¹å¤æ个ç¨äºè®¨è®ºç JSPWiki é®ä»¶å表ãå¾éå讨论诸å¦è¡¥ä¸ãé®é¢ãå¼åçççé®é¢ã
+
+ç®åæ两个é®ä»¶å表ï¼''jspwiki-users'' å ''jspwiki-dev''ã
+
+!JSPWiki-user
+
+jspwiki-user é®ä»¶åè¡¨ç± Apache Incubator æ管ãå¯ä»¥éè¿åéé®ä»¶å°ä»¥ä¸å°åç³è¯·å å
¥ï¼[jspwiki-user-subscribe@incubator.apache.org|mailto:jspwiki-user-subscribe@incubator.apache.org]ãé®ä»¶å表å½æ¡£ä½äº [http://mail-archives.apache.org/mod_mbox/incubator-jspwiki-user/|http://mail-archives.apache.org/mod_mbox/incubator-jspwiki-user/]
+
+[以åçå表å½æ¡£|http://www.ecyrd.com/pipermail/jspwiki-users/] è¿å¨ãå¦å¤ï¼å¨ Nabble ä¸è¿æä¸ä¸ª [å¯å½æ¡£|http://www.nabble.com/JspWiki---User-f2680.html]ã
+
+!JSPWiki-dev
+
+è¿ä¸ªå表主è¦é对 JSPWiki å¼åè
ãå¦ææ
å¿æ»¡å¤©é£çæè¯çè¯ï¼æ好è¿æ¯å«å å
¥ãjspwiki-dev åè¡¨ç± Apache æ管ï¼æ以æ¨å¯ä»¥éè¿ç»ä¸é¢çå°åå个é®ä»¶æ¥å å
¥ï¼[jspwiki-dev-subscribe@incubator.apache.org|mailto:jspwiki-dev-subscribe@incubator.apache.org]ãé®ä»¶å表å½æ¡£ä½äº [http://mail-archives.apache.org/mod_mbox/incubator-jspwiki-dev/|http://mail-archives.apache.org/mod_mbox/incubator-jspwiki-dev/]
+
+!JSPWiki-commits
+
+å¦æ订é
äºè¿ä¸ªå表ï¼ä½ ä¼å¨å SVN åºæ交äºæ°çæä¿®æ¹è¿çæ件æ¶ä¼æ¶å°é®ä»¶éç¥ã
+jspwiki-commits åè¡¨ç± Apache æ管ï¼æ¨å¯ä»¥éè¿ç»ä¸é¢çå°ååéé®ä»¶å å
¥ï¼[jspwiki-dev-subscribe@incubator.apache.org|mailto:jspwiki-dev-subscribe@incubator.apache.org]ãé®ä»¶å表å½æ¡£ä½äº http://mail-archives.apache.org/mod_mbox/incubator-jspwiki-commits/
+
+!åæ¶è®¢é
+
+åæ¶è®¢é
åæ ·å®¹æï¼æ¨åªéç¨è®¢é
å表æ¶ä½¿ç¨çé®ä»¶å°åç» jspwiki-<user|dev|commits>-unsubscribe@incubator.apache.org åéé®ä»¶å³å¯å®æã
+
+å¦ææ¨æ³æ¢ç©¶ä¸äºæ趣çé®é¢çè¯ï¼ä»¥åç JSPWiki-devï¼å° 2007å¹´10æï¼å½æ¡£[è¿å¯ä»¥ç¨|http://www.ecyrd.com/pipermail/jspwiki-dev/]ã
+
+!! å
¶ä»èµæº
+
+! IrcChannel - ä¸å¼åè
å¨çº¿è天ï¼
+
+å¨ [Freenode|http://www.freenode.net] ä¸æ个 JSPWiki [IRC|http://www.mirc.com/irc.html] é¢éï¼å称为ï¼#jspwiki. å¦ææä»»ä½çé®ï¼æè
åªæ¯æ³èèï¼å¯ä»¥è¿å»ççã
+
+éè¦æ³¨æçæ¯ï¼æäºæ¶æ®µè¿ä¸ªé¢ééé¢ä¼ç¸å½å®éï¼å¦æåäºæ¶æ¯æ²¡æåå¤çè¯ï¼å±äºæ£å¸¸ï¼ä¸è¦æ³æ°ãå°±å¨çº¿çä¸ä¼å¿ççâ¦â¦
+
+é¢éä¸ç常客ï¼
+* [Janne Jalkanen|http://www.jspwiki.org/wiki/JanneJalkanen] (Ecyrd)ï¼æ¶åºä¸º GMT+2.
+
+! [FaceBook | http://www.facebook.com/group.php?gid=11138025370]
+
+å¦å¤ï¼æè¿å¨ Facebook ä¸å»ºäºä¸ä¸ª JSPWiki ç¨æ·ç»ä½ä¸ºå¨±ä¹ãå¦ææ¨æ¯ Facebook ä¸ç常客ï¼å¯ä»¥å»ççï¼
+
+ï¼å½ç¶ï¼æ们ä¸ä¼ç¨è¿ä¸ªæ¿æ¢ä»»ä½ç°æçç«ç¹ãä¸è¿ï¼æ¯ä¸ªäººè¿æä»ä»¬ç亲åä¼¼ä¹ä¹å¨ Facebook ä¸ï¼æä¼¼ä¹è§å¾åå ä¸ä¸ªé¢éä¹ä¸éï¼
+-- Janne 2007å¹´9æ17æ¥
+
+* [JSPWiki å¼åå客|http://blog.jspwiki.org/]
\ No newline at end of file
Modified: incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/wikipages/zh_CN/CopyrightNotice.txt
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/wikipages/zh_CN/CopyrightNotice.txt?rev=712929&r1=712928&r2=712929&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/wikipages/zh_CN/CopyrightNotice.txt (original)
+++ incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/wikipages/zh_CN/CopyrightNotice.txt Mon Nov 10 19:49:06 2008
@@ -1 +1 @@
-Êää???ÁöÑ[ÁâàÊùÉ?ø°ÊÅØ|CopyrightNotice]ÊîæÂú®ËøôÂÑøÔºÅ
+æä½ ç[çæä¿¡æ¯|CopyrightNotice]æ¾å¨è¿å¿ï¼
Modified: incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/wikipages/zh_CN/EditFindAndReplaceHelp.txt
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/wikipages/zh_CN/EditFindAndReplaceHelp.txt?rev=712929&r1=712928&r2=712929&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/wikipages/zh_CN/EditFindAndReplaceHelp.txt (original)
+++ incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/wikipages/zh_CN/EditFindAndReplaceHelp.txt Mon Nov 10 19:49:06 2008
@@ -1,26 +1,26 @@
-ÂèØ?ª?Âú®?ÄúÊü?ÊâæÂÜÖÂÆ??ÄùÂ?óÊƵ??øÁî®ÂÖÉÂ?óÁ¨¶Ôºö
-
-|. |Èô§Êç¢Ë°å§ñÁöÑ?ªªÊÑèÂ?óÁ¨¶ |+ |??Äʨ°Êàñ§öʨ°
-|* |Èõ?ʨ°Êàñ§öʨ° |? |Èõ?ʨ°Êàñ??Äʨ°
-|{n} |Âè?Âå?ÈÖç n ʨ° |{n,m} |ÊúÄÂ?ë n ʨ°ÔºåÊúħö m ʨ°
-|~| |ÁÆ°ÈÅìÁ¨¶Ôºö{{a~|b}} Âå?ÈÖç a Êàñ b | - |ËøûÂ?óÁ¨¶ÔºåÂå?ÈÖçÂ?óÁ¨¶Âå?Èó¥
-|^ |??ÄË°åÁöÑ˵?Âßã??çÁ?Æ |$ |Ë°åÂ?æ
-|[[...] |ÈõÜÂêà???ÁöÑ??Ä???Â?óÁ¨¶ |[[^...] |Âê¶ÂÆöÂ?óÁ¨¶ÈõÜÂêà
-|\b |单词分界符 |\B |非单词分界符
-|\d |Êï?Â?ó [[0-9] |\D |ÈùûÊï?Â?ó [[^0-9]
-|\s |Âçï???Á©?Áô?Â?óÁ¨¶ |\S |Âçï???ÈùûÁ©?Áô?Â?óÁ¨¶
-|\w |[[A-Za-z0-9_] |\W |[[^A-Za-z0-9_]
-|(...) |ÂàÜÁªÑ?øùÂ?ò??? $1..$9 |\. |ÂØ?ÂÖÉÂ?óÁ¨¶ÁöÑË?¨??â
-
-?ÄúÊõøÊç¢?ÄùËá?Âä®ÂèØ?ª???øÁî® $1..$9 ??ú???ÂØ??ÄúÊü?Êâæ?ÄùÂ?óÊƵ???Êã¨Âè????ÂÜÖÂÆ?ÁöÑÂèçÂêëºïÁî®?ÄÇ
-----
-Á§??æãÔºö\\
-
-Êü?Êâæ __/abc|def/__ ?ºöÂå?ÈÖçÂçïËØç 'abc' Êàñ 'def'\\
-Êü?Êâæ __/bwiki/b__ ?ºöÂå?ÈÖç 'wiki' ??Ü??çÂå?ÈÖç 'jspwiki'?ÄÇ\\
-Êü?Êâæ __^[[IVXMDCL]+\.__ ?ºöÂå?ÈÖç?ªªÊÑèÁªÑÂêàÁöÑÁ?óÈ©¨Êï?Â?ó?ª?ÂèäÁ¥ßË?üÂÖ?ÂêéÁöÑÂè?ÁÇ? '.'\\
-Êü?Êâæ __/(-?\d+)(\d{3})/__ Â??Áî® __$1,$2__ ÊõøÊç¢?ºöÂú®Â§ßÁöÑÊï?Â?ó???ÊèíÂÖ?ÈÄóÂè? ','?ÄÇ
-
-Ëøô???ÊòØ [EditFindAndReplaceHelp] È°µÈù¢?ÄÇ
-[Êõ¥Â§öÂÖ???éÊ?£ÂàôË°®ËææºèÁöÑ?ø°ÊÅØ|http://www.regular-expressions.info/javascript.html]
-?ª?Âèä [RegExp Ê?ôÁõí|http://www.regular-expressions.info/javascriptexample.html]\\
+å¯ä»¥å¨âæ¥æ¾å
容âå段使ç¨å
å符ï¼
+
+|. |é¤æ¢è¡å¤çä»»æå符 |+ |ä¸æ¬¡æå¤æ¬¡
+|* |é¶æ¬¡æå¤æ¬¡ |? |é¶æ¬¡æä¸æ¬¡
+|{n} |åªå¹é
n 次 |{n,m} |æå° n 次ï¼æå¤ m 次
+|~| |管é符ï¼{{a~|b}} å¹é
a æ b | - |è¿å符ï¼å¹é
å符åºé´
+|^ |ä¸è¡çèµ·å§ä½ç½® |$ |è¡å°¾
+|[[...] |éåä¸çä¸ä¸ªå符 |[[^...] |å¦å®å符éå
+|\b |åè¯åç符 |\B |éåè¯åç符
+|\d |æ°å [[0-9] |\D |éæ°å [[^0-9]
+|\s |å个空ç½å符 |\S |å个é空ç½å符
+|\w |[[A-Za-z0-9_] |\W |[[^A-Za-z0-9_]
+|(...) |åç»ä¿å为 $1..$9 |\. |对å
å符ç转ä¹
+
+âæ¿æ¢âèªå¨å¯ä»¥ä½¿ç¨ $1..$9 ä½ä¸ºå¯¹âæ¥æ¾âå段ä¸æ¬å·ä¸å
容çååå¼ç¨ã
+----
+示ä¾ï¼\\
+
+æ¥æ¾ __/abc|def/__ ä¼å¹é
åè¯ 'abc' æ 'def'\\
+æ¥æ¾ __/bwiki/b__ ä¼å¹é
'wiki' ä½ä¸å¹é
'jspwiki'ã\\
+æ¥æ¾ __^[[IVXMDCL]+\.__ ä¼å¹é
ä»»æç»åçç½é©¬æ°å以åç´§è·å
¶åçå¥ç¹ '.'\\
+æ¥æ¾ __/(-?\d+)(\d{3})/__ å¹¶ç¨ __$1,$2__ æ¿æ¢ä¼å¨å¤§çæ°åä¸æå
¥éå· ','ã
+
+è¿ä¸ªæ¯ [EditFindAndReplaceHelp] 页é¢ã
+[æ´å¤å
³äºæ£å表达å¼çä¿¡æ¯|http://www.regular-expressions.info/javascript.html]
+以å [RegExp æ²ç|http://www.regular-expressions.info/javascriptexample.html]\\
Modified: incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/wikipages/zh_CN/EditPageHelp.txt
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/wikipages/zh_CN/EditPageHelp.txt?rev=712929&r1=712928&r2=712929&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/wikipages/zh_CN/EditPageHelp.txt (original)
+++ incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/wikipages/zh_CN/EditPageHelp.txt Mon Nov 10 19:49:06 2008
@@ -1,35 +1,35 @@
-ËøôÈáåÂàóÂá???ÜÊÇ®ÂèØ?ª??ªªÊÑè??øÁî®ÁöÑÂÖÉÁ¥?Ôºö
-{{{
----- Ê?¥Â??ÂàÜÈöîÁ?ø
-\\ º?Âà?Êñ?Ë°å
-[link] Âàõª? "link" ÁöÑË?ÖÈìæÊé?ÔºåÂÖ???? "link" ÂèØ?ª?ÊòØÂÜÖÈÉ® Wiki ÂêçÁß?ÔºàWiki È°µÈù¢
- ÂêçÁß?ÔºâÊàñËÄÖ§ñÈÉ®ÈìæÊé?Ôºàhttp://Ôºâ
-[text|link] Âàõª???Ä???ÊòæÁ§?ÊñáÊú¨ÂíåÂÆûÈôÖË?ÖÈìæÊé???çÂêåÁöÑË?ÖÈìæÊé?ÔºåÂÖ?????Äútext?Äù???˶ŠÊòæÁ§?ÁöÑÊñáÊú¨Ôºõ?Äúlink?Äù???ÂÆûÈôÖÁöÑË?ÖÈìæÊé??ÄÇ
-[text|wiki:link] Âàõª???Ä???ÊòæÁ§?ÊñáÊú¨ÂíåÂÆûÈôÖË?ÖÈìæÊé???çÂêåÁöÑË?ÖÈìæÊé?Ôºå
- Â????îË?ÖÈìæÊé?ÊåáÂêëÊåáÂÆöÁöÑ WikiÔºàÊØî如 JSPWiki?ÄÅMediaWiki Á?âÁ?âÔºâ?ÄÇ
- ËøôÁßçÈìæÊé?ÊîØÊåÅ Wiki ??ãÈó¥ÁöÑÈìæÊé??ÄÇ
-
-* Âàõª???Ä???È°?ÁõÆÂàóË°®ÔºàÊòüÂè? '*' ÂøÖÈúÄ???ÊâÄÂú®Ë°åÁ¨¨??Ä???Â?óÁ¨¶Ôºâ?ÄÇÁî®ËøûÁª?§ö???ÊòüÂè?Ôºà**Ôºâ
- Ë°®Á§?ʨ°Á?ßÈ°?ÁõÆÁ¨¶Âè??ÄÇ
-# Âàõª???Ä???ÁºñÂè?ÂàóË°®ÔºàÊòüÂè? '*' ÂøÖÈúÄ???ÊâÄÂú®Ë°åÁ¨¨??Ä???Â?óÁ¨¶Ôºâ?ÄÇÁî®ËøûÁª?§ö???ÔºÉÂè?Ôºà##Ôºå###Ôºâ
- Ë°®Á§?Áº©Ëøõ/ʨ°Á?ßÁºñÂè??ÄÇ
-
-!, !!, !!! Âú®Ë°åȶñÂä???äÊÑüÂè?Âè?ÔºàÔºÅÔºâÁîüÊàêÊ?áÈ¢ò?ÄÇ
- ÊÑüÂè?Âè?Ë?ä§öË°®Á§?Ê?áÈ¢òË?ä§ß?ÄÇ
-
-__text__ ÊñáÊú¨Âä?Á?ó?ÄÇ
-''text'' ÁªôÊñáÊú¨Êñú??ìÊïàÊûúÔºàÊ?®ÊÑèÊòØÂçïºïÂè? 'Ôºâ
-{{text}} ??øÊñáÊú¨Âèò???Á?âʨæÂ?ó??ì?ÄÇ
-;term:def Áî® 'def' ÂÆö??â 'term'?ÄÇÁî®Á©?ÁöÑ 'term' ÂèØ?ª?Ë°®Á§?ÁÆÄÁü?Ê?®ÈáäÔºà¶ÇÔºå;:Created on 2008/02/28Ôºâ?ÄÇ
-
-|text|more text ÁîüÊàêË°®Ê?º?ÄÇ??§Êù°Á´ñÁ?ø?Äú||?ÄùË°®Á§?Ë°®Ê?ºÊ?áÈ¢ò?ÄÇ
-}}}
-
-??ç˶ÅÂ?ùËØï??øÁî® HTML Ê?áËÆ?ÔºåHTML Ê?áËÆ?Âú®ËøôÈáå??ç˵???úÁî®?ÄÇ
-
-˶ŵåÂÖ?ÂõæÂÉèÔºåÂè?ÈúÄ˶ÅÂ?Ü?ªñ?ª¨?ª?ÂÖÅËÆ?ÁöÑÊ?ºÂºèÊîæÂú®Á?ë??äÔºåÁÑ?Âêé?ªñ?ª¨?ºöËá?Âä®ÊèíÂÖ??ÄÇ˶ÅÊü?ÁúãÂÖÅËÆ?ÁöÑÂõæÂÉèÊ?ºÂºèÂàóË°®ÔºåËØ?ÂèÇÈòÖ [Á?ªÁªü?ø°ÊÅØ|SystemInfo]?ÄÇ
-
-˶ÅÂàõª??ª£Á?ÅÂùóÔºå??øÁî® 3 ???Â?¶Ëä±Êã¨Âè? '{' ºÄÂßãÔºå3 ???Âè?Ëä±Êã¨Âè? '}' ÁªìÊùü?ÄÇ
-
-''ÔºàÊÉ?Áü?ÈÅìËøôÊƵÊñáÊú¨?ªéÂì?ÈáåÊù?ÔºüËøôÊƵÊñáÊú¨Âú®??Ä???Âè´ [ÁºñËæëÈ°µÈù¢Â?ÆÂä©|Edit Page Help]ÔºåËøô???È°µÈù¢?????üÂèØ?ª?ÁºñËæëÔºÅÔºâ''
-
+è¿éååºäºæ¨å¯ä»¥ä»»æ使ç¨çå
ç´ ï¼
+{{{
+---- æ°´å¹³åé线
+\\ 强å¶æè¡
+[link] å建 "link" çè¶
é¾æ¥ï¼å
¶ä¸ "link" å¯ä»¥æ¯å
é¨ Wiki å称ï¼Wiki 页é¢
+ å称ï¼æè
å¤é¨é¾æ¥ï¼http://ï¼
+[text|link] å建ä¸ä¸ªæ¾ç¤ºææ¬åå®é
è¶
é¾æ¥ä¸åçè¶
é¾æ¥ï¼å
¶ä¸âtextâä¸ºè¦ æ¾ç¤ºçææ¬ï¼âlinkâ为å®é
çè¶
é¾æ¥ã
+[text|wiki:link] å建ä¸ä¸ªæ¾ç¤ºææ¬åå®é
è¶
é¾æ¥ä¸åçè¶
é¾æ¥ï¼
+ 并ä¸è¶
é¾æ¥æåæå®ç Wikiï¼æ¯å¦ JSPWikiãMediaWiki ççï¼ã
+ è¿ç§é¾æ¥æ¯æ Wiki ä¹é´çé¾æ¥ã
+
+* å建ä¸ä¸ªé¡¹ç®å表ï¼æå· '*' å¿
é为æå¨è¡ç¬¬ä¸ä¸ªå符ï¼ãç¨è¿ç»å¤ä¸ªæå·ï¼**ï¼
+ 表示次级项ç®ç¬¦å·ã
+# å建ä¸ä¸ªç¼å·å表ï¼æå· '*' å¿
é为æå¨è¡ç¬¬ä¸ä¸ªå符ï¼ãç¨è¿ç»å¤ä¸ªï¼å·ï¼##ï¼###ï¼
+ 表示缩è¿/次级ç¼å·ã
+
+!, !!, !!! å¨è¡é¦å ä¸æå¹å·ï¼ï¼ï¼çææ é¢ã
+ æå¹å·è¶å¤è¡¨ç¤ºæ é¢è¶å¤§ã
+
+__text__ ææ¬å ç²ã
+''text'' ç»ææ¬æä½ææï¼æ³¨ææ¯åå¼å· 'ï¼
+{{text}} 使ææ¬å为ç款åä½ã
+;term:def ç¨ 'def' å®ä¹ 'term'ãç¨ç©ºç 'term' å¯ä»¥è¡¨ç¤ºç®ç注éï¼å¦ï¼;:Created on 2008/02/28ï¼ã
+
+|text|more text çæè¡¨æ ¼ã两æ¡ç«çº¿â||âè¡¨ç¤ºè¡¨æ ¼æ é¢ã
+}}}
+
+ä¸è¦å°è¯ä½¿ç¨ HTML æ è®°ï¼HTML æ è®°å¨è¿éä¸èµ·ä½ç¨ã
+
+è¦åµå
¥å¾åï¼åªéè¦å°ä»ä»¬ä»¥å
许çæ ¼å¼æ¾å¨ç½ä¸ï¼ç¶åä»ä»¬ä¼èªå¨æå
¥ãè¦æ¥çå
许çå¾åæ ¼å¼å表ï¼è¯·åé
[ç³»ç»ä¿¡æ¯|SystemInfo]ã
+
+è¦å建代ç åï¼ä½¿ç¨ 3 个左è±æ¬å· '{' å¼å§ï¼3 个å³è±æ¬å· '}' ç»æã
+
+''ï¼æ³ç¥éè¿æ®µææ¬ä»åªéæ¥ï¼è¿æ®µææ¬å¨ä¸ä¸ªå« [ç¼è¾é¡µé¢å¸®å©|Edit Page Help]ï¼è¿ä¸ªé¡µé¢ä½ ä¹å¯ä»¥ç¼è¾ï¼ï¼''
+
Modified: incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/wikipages/zh_CN/FullRecentChanges.txt
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/wikipages/zh_CN/FullRecentChanges.txt?rev=712929&r1=712928&r2=712929&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/wikipages/zh_CN/FullRecentChanges.txt (original)
+++ incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/src/wikipages/zh_CN/FullRecentChanges.txt Mon Nov 10 19:49:06 2008
@@ -1,3 +1,3 @@
-Ëøô??õÊòØÂØ?ÊâÄÊúâÈ°µÈù¢ÂÅöÁöÑ?øÆÊî??ÄÇÁü???Ä??õÁöÑÂàóË°®ÂèØ?ª?Âú® [RecentChanges] ???ÊâæÂà??ÄÇ
-
-[{INSERT com.ecyrd.jspwiki.plugin.RecentChangesPlugin}]
+è¿äºæ¯å¯¹ææ页é¢åçä¿®æ¹ãçä¸äºçå表å¯ä»¥å¨ [RecentChanges] ä¸æ¾å°ã
+
+[{INSERT com.ecyrd.jspwiki.plugin.RecentChangesPlugin}]