Emacs, this is -*- Text -*- for you.


                        JSPWiki documentation
                        =====================

                         $Revision: 1.12 $
                             $Date: 2002-03-10 09:59:00 $
                           $Author: jalkanen $

What is it?
-----------

JSPWiki is a very simple WikiWiki clone.  It keeps all of its
formatting in JSP files, and uses a custom Java class called
'com.ecyrd.jspwiki.WikiEngine' to all interfacing with the Wiki
system.


    Copyright (C) 2001 Janne Jalkanen

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU 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 General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA


The license file can be found in doc/LICENSE.

(No, the GPL does not mean that all the content in your new wiki will
be under the GPL, anymore than any text you write using Emacs becomes
GPL.)

One small request I have.  If you really, really like this software,
donate a small amount of money to the World Wildlife Foundation
(WWF), Free Software Foundation (FSF), or Electronic Freedom
Foundation (EFF), or whichever charity is close to your heart.

The world doesn't need to become a bad place.

Oh yeah, and if you run a Wiki based on this software, let me know.
I'm always interested in hearing from my users =).


Pre-requirements
----------------

Okay, so you wanna Wiki?  You'll need the following things:

* A JSP engine.  I recommend Tomcat from
  http://jakarta.apache.org/tomcat for a really easy installation.

* JavaMail package from java.sun.com, if you want to use log4j mailing
  capabilities.  You'll also need the Java Activation Framework.

* RCS versioning system installed and available in your PATH if you
  want to use versioning.

* Some previous administration experience...  If you've ever installed
  Apache or any other web server, you should be pretty well off.

* And of course, a server to run the JSP engine on.



Installation
------------

First, install a JSP engine and a web server.  You can download Tomcat
from http://jakarta.apache.org/tomcat/.  This software was built
originally on top of Tomcat 3.2.2, but probably most other versions
work, too, and most other JSP containers.

After you've installed the engine and checked that it works, you just
make a subdirectory under $TOMCAT_HOME/webapps/.  For example, if you
want your application to be called 'MyWiki', just create a directory
called 'MyWiki', then extract all files from the war files into that
directory, preserving the directory structure.

Edit the WEB-INF/jspwiki.properties file to your liking.  The only
thing you need to set is the directory where you want your wiki pages
to be stored.  I recommend a directory that is regularly backed up.

Unzip the contents of jspwiki-samplepages.zip into your newly created
directory.

(Re)start tomcat.

Point your browser at http://<where your Tomcat is installed>/MyWiki/.
You should see the Main Wiki page.  See the next section if you want
to edit the pages =).


Installation with Windows
-------------------------

If you are using a version of Microsoft Windows, you'll find that
getting the version control functioning may be a bit problematic.
There is some documentation within the samplepages archive, on page
"WindowsInstall".



Upgrading from previous versions
--------------------------------

First of all, you should read ReleaseNotes and ChangeLog =).

Shut down Tomcat.

Unzip the war-file anywhere you like.

Copy the contents of WEB-INF/classes into the WEB-INF/classes
directory of your currently running wiki.

If you've done no changes to the JSP pages, or have done only minor
changes, then you probably want to copy all of the JSP pages as well.
If you've done extensive modifications, I recommend that you take a
good look at the new JSP pages and consider whether the additions are
worth your while.  JSPWiki should in theory stay backwards compatible
=).

Check the contents of web.xml as well - there may have been some
changes.  It's also a good idea to check "jspwiki.properties" as well
- there might be some new properties which you might find useful.

Restart Tomcat.


Setting access controls
-----------------------

If you don't want everyone to have access to your Wiki, take a look a
the "web.xml" file.  It contains sample configuration for someone who
wants a Wiki that's viewable by all, but editable only be few.  By
default, this is disabled, so your new Wiki is a free-for-all.

Remove the marked comments from web.xml.

Add a user to the "user" role in $TOMCAT_HOME/conf/tomcat-users.xml.
For example:
    <user name="wiki" password="wiki" roles="user" /
adds an user called "wiki" with a password "wiki".

Restart Tomcat.


Configuring JSPWiki
-------------------

All configuration information is kept in WEB_INF/jspwiki.properties.
The file is pretty well documented, so I recommend you read it through
first. 



Notes:
~~~~~~

Feel free to edit the JSP pages anyway you like.  Just don't touch any
of the Java code, unless you know what you're doing, because otherwise
the Wiki might stop to work.  Most modern HTML editors are smart
enough not to mess with the JSP tags (all the stuff between <% and
%>).

While Tomcat is also a fully featured Web server, it is not
particularly fast.  You might also have a web server already running.
Tomcat does integrate itself pretty well with existing web servers,
such as Apache, so you can just see the instructions at
http://jakarta.apache.org/ to see how to get Tomcat and Apache talking
to each other using mod_jk.  (Don't use mod_jserv, it's outdated and
confusing.)

RCS may be a bit troublesome to set up.  I recommend you just run it
without RCS at first, then switch over when you understand how Wiki
works.


Files
-----

Files are kept in a subdirectory, which is defined in the
jspwiki.properties file.  All files are in text format (usually in the
system's native format), with a file ending defined in
WikiEngine.java.  This is ".txt" by default.

There are some default files with the distribution archive.  Feel free
to use them to bootstrap your own Wiki.


Internationalisation
--------------------

JSPWiki can also handle UTF-8.  However, you need to switch this at
install-time, since the old method of handling ISO-8859-1 and the new
method of handling UTF-8 are not compatible, and I did not wish to
break previous installations that are already using the ISO-8859-1
charset.

If you're interested, the reason is as follows:  W3C forgot to define
a standard how URLs that are not US-ASCII should be handled.  The Web
de-facto standard is to use ISO-8859-1 (Latin1) and encode it with
(%xy), where xy is the hexadecimal representation.  However, this
means that everyone else in the world can't use this.  So, very
logically, you can also encode UTF-8 in this format.  Unfortunately,
there is NO way to distinguish between these URLs that are really
UTF-8 and those URLs that are ISO-8859-1, since they look exactly the
same.  This is why you must tell JSPWiki which character set to use
to start with.

The FileSystemProvider and RCSFileProvider save the files on the disk
just as if they were URLs.  This can get really messy with Japanese
language page names, for example.  You can always check the URL to the
page, to find how they are named on the disk =).

There are some known issues with UTF-8 support on some older browsers.
Please check
http://www.ecyrd.com/JSPWiki/Wiki.jsp?page=JSPWikiBrowserCompatibility
for more information.


Plugins
-------

Since v1.6.3 you can now define your own plugins.  These are just
simply Java classes that implement the
'com.ecyrd.jspwiki.plugin.WikiPlugin' interface and can be found from
somewhere in your class path.  The plugins work so that when you write
a special code on the Wiki page, the plugins are invoked and their
output is inserted into the page, verbatim.

The form is:

  [{INSERT <plugin class> WHERE <param1=value1>,<param2=value2>,...}]

Check out the JSPWikiPlugins page from the JSPWiki distribution for
more information.


XML-RPC
-------

JSPWiki comes configured with two XML-RPC interfaces.  The first
interface, which lives by default in <your-wiki-url>/RPC2, is a fully
XML-RPC spec compliant version, whereas the other one, which lives at
<your-wiki-url>/RPCU makes things easier by accepting UTF-8 -format
strings.

You can configure the URLs and other things from the web.xml file.  By
default, the XML-RPC interface is NOT enabled.

For more information about the XML-RPC interface, see the
"WikiRPCInterface" page in the default JSPWiki distribution.


Acknowledgements
----------------

This product includes software developed by the Apache Software Foundation 
(http://www.apache.org/).  See doc/LICENCE.Apache for more information.



Contact
-------

JSPWiki was written by Janne Jalkanen.  You may send email to me at
Janne.Jalkanen@nospam.ecyrd.com.  (Remove the nospam from the
address).  Feel free to send me patches, suggestions, whatever.

JSPWiki is available at http://www.iki.fi/~jalkanen/JSPWiki/

My PGP key is below.

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGP 5.0i

mQENAzhx4k0AAAEIAJgD8PD7FAmrZuzJ5SXjDtD6fSPa5UCoxXVFSuS7G5mLwgGp
Di/iQtyt3Roxvu1f1G/DfG/DMHmQ/VLNK5svCKsg1RGUdDY40OWJAtYGtAXDKEBP
NrxHhnYqgnPCmrMNND7Gz7vbJFQGyTxNVKpof9vg+We7gZDo+7VGpHlGbuL0yeFD
ylOxZ8qZ+Dw5XiRBOvtOhoOPxbZuvq+pBUSZJPa3G4BQ53++qlhta7YiUUnUzXW7
xHgv164BGUX3NKQaB0tb+gu3jkSOv4SBfEQ/Aej2yNPLSIZHLk1s2Ls6fpQzQo99
P0sMW7uRG3CUOZ5Slsfb0XH67TibjBac+FSOr7MABRG0KEphbm5lIEphbGthbmVu
IDxKYW5uZS5KYWxrYW5lbkByZWdleC5maT6JARUDBRA4ceJNjBac+FSOr7MBATr9
B/9nUAAZvhtLKv1jAFw9eQALWvkXEKRpWJK92/fT4fTkuSr9JTrM/VGPs7mz6tcp
1SwFtfQHIc3qUbZv0j50HE8OF8ibGSaD0eitYuBcn302TbNDXYTs4aPJix5Tp7or
hapafBqy+1nda97mcDcgk9+riKx/awsMhyvyXi15qrv7/MMcsPSbZCsNwvkbENp6
5WTMy0PI6PBXTws/sSM5yMj9XN0cZkvC/EbtXdt/FJWJNEhd5kUBUUeHeCHPVGUS
LZ81OqnqFTncZiT3TxoQuf6Lj14lrV+m/pQte+KmCfdTLHEf/hslsctN66Lh0O1a
83YAPm6qvUAxvS8ewJf5+WeHiQCVAwUQOHNMD+bGByqRaOUdAQGtogQAsjIqoj8K
blb54i8cbYb55R4KvqzY6aXyLj2JpUfG7oFjo+sailpqmRb6w6iai9+6lSdh5e2c
zo+E0vEErdJ/+jUGhG2cVf3ho4NYeE9C9Ac1TnMlTQntTdTlgOZY6l6C+l2suNfO
hKEeVUo5n1tIeIk1McE+Wae4wbcTCCObqke0Jkphbm5lIEphbGthbmVuIDxKYW5u
ZS5KYWxrYW5lbkBpa2kuZmk+iQEVAwUQOazF1owWnPhUjq+zAQH2bQf/SUxOks+7
Cw2uNXWBjb3DkFLX3JEvhIO1jOft4jioBQpPA0l8hslP2o+i1nyfRg2TIK9shLyx
BwTHvVdqucrGH8v4Hzb3gDOPP6KMQgdMWvvwcgFCEhSZCORMaSrInRorcOTgagkf
3h8AjG0grS3W0pFQlscL4mS9V3qAV3n7OBoPmustQJH8Ir28Enhto89bKU39PPQI
wcnlmpGcxk/Wk1+InJkov+A2TvXi/74dgPSfhSHMQM6pCBGtP8lrpYtBX6nYR+uG
rwPOs8ocYZrARBjaX1VuYJ941pZ6JwlRgpfv87jBFC7o5N7NE0+TZmOf5H1HhBXZ
g0ieP1dXfgH3ZrQsSmFubmUgSmFsa2FuZW4gPEphbm5lLkphbGthbmVuQHJlZ2V4
LmNvbS5hdT6JARUDBRA52WB8jBac+FSOr7MBAdcKCACL4EqspqIG8xU5cpA3nULq
d/HVmg9+I1jfCceTLI5+PoQB5pRqdgKK3D+El+GNTFVDIGrS9X/gI4c+P/rVMGCF
37SmuXzfB1vMsrK/WQqpKWQEqObV5qBjUg7vESx6QUoAaDRIO/7t250M+W5qGXq1
6G38qP+XFT7aEfc7MiYXyioB/oMK5XLtZufBLYa5rRZA6GIJ9dv6Cd9vLxkAtqqK
sWVGtvE0EWahEXGt+T2m60dgkiG3wMoPzvofb7UgHvltp1VSk5L7zds7pncIAP54
dXcHfSHeYLN4thyTk3F0hV/jjBrrhzBOdvsguWMAE94Ec4ePzfP2oXhl0wA9GJxk
=Z2MZ
-----END PGP PUBLIC KEY BLOCK-----