Mediawiki collection extension installation
Definition
The Mediawiki collection extension allows a user to organize personal selections of pages in a collection. Collections can be:
- edited and structured using chapters
- persisted, loaded and shared
- rendered as PDF (see Extension:PDF_Writer)
- exported as ODF Text Document (see Extension:OpenDocument_Export)
- exported as DocBook XML (see Extension:XML_Bridge)
- ordered as a printed book at http://pediapress.com/
This page includes some centralized help links and installation tips made for our own use - Daniel K. Schneider 16:31, 4 May 2009 (UTC).
See also:
Help pages
Bugs and feature requests:
- http://meta.wikimedia.org/wiki/Book_tool/Feedback
- http://code.pediapress.com/wiki/report/1 (Issue tracker for technical people)
Help (can also be used for informal bug reports)
- http://groups.google.com/group/mwlib/topics (Google forums)
Information about the collection extension and related server-side software
- http://www.mediawiki.org/wiki/Extension:Collection
- http://www.mediawiki.org/wiki/Extension:PDF_Writer
- http://code.pediapress.com/wiki/wiki (PediaPress Open Source Repository, Wiki and Bug Tracking System)
- http://code.pediapress.com/hg/mwlib/raw-file/tip/docs/commands.txt (command line options, important!)
- http://code.pediapress.com/wiki/wiki/Examples
Installing the whole suite requires some installation skills, but should go fairly smoothly on any Unix system and should be easy on a Debian-based Linux.
Collection extension installation
The collection extension installs like any other Mediawiki extensions. Really easy with Mediawiki=> 1.14 (Spring 2009).
Get it from [1]
- You then can just leave all the defaults and the PDF will be generated by PediaPress. However, if you have a slow server like this one, you also should install a local render server (read the whole rest of this page, the pediapress server will likely loose pages due to server overload ....)
I suggest changing file Collection.i18n.php and change the string.
'coll-rendering_text' => "<p><strong>Please wait while the document is being generated.
Depending on the size of book you may have to wait 5, 10, 15 minutes or longer.
</strong></p>
......"
'coll-save_collection_text' => 'Choose a storage location for your book and enter a name:',
Finally, you should defined the following (language-dependant) templates and categories:
- Template:Saved_book (Grab a copy from a wikipedia and modify).
- Category:Books
- Category:Book tool (not really needed)
mwlib installation
Not needed if you have a fast server and want to use the pediapress server. Installation notes made for Solaris.
Prerequisites
Install these if don't have them (usually you do)
- Python => 2.5
- Perl => 5
- g++
- Latex
Install Blahtexml
- (not done so far)
Install setuptools-0.6c9-py2.5.egg
sh setuptools-0.6c9-py2.5.egg
Install python imaging library (PIL)
- http://www.pythonware.com/products/pil/
- Get Python Imaging Library 1.1.6 Source Kit
- Unzip and cd Imaging-1.1.6
python setup.py install
Install odfpy 0.7.0 (not 0.8.0)
- http://opendocumentfellowship.com/projects/odfpy
- Get it from http://odfpy.forge.osor.eu/
- I.E. as tar ball froom http://forge.osor.eu/frs/?group_id=33
python setup.py build python setup.py install
Install rec2c
- http://re2c.org/
- Get it from http://www.sunfreeware.com/
pkgadd -d re2c-0.13.5-sol10-sparc-local
Install ocaml
- http://caml.inria.fr/
- Get if from http://www.sunfreeware.com/
pkgadd -d ocaml-3.10.2-sol10-sparc-local
Mwlib
Mwlib can be installed from a tar ball, alternatively through mercurial with easy_install.
I had to install manually, since I wanted to make some light patches to the code.
- Get if from http://code.pediapress.com/hg/mwlib/ (click on gz)
- Dezip gtar zxf mwlib-db30ecca003a.tar.gz (or whatever file name)
- Slowing down the page pulling
Problem: One ought to able to slow down the server. mw-render has an option for reducing threads. But no parameter can be set in the mw extension or the mwserver itself. Therefore, one has to build mwlib from source. Changes made:
mwlib/options.py
In about line 60, change the default, e.g. from 10 to 3 if your server can't cope.
- Not suported (unimportant) tags
- Added in mwlib/tagtext.py around line 100 a tag to exclude:
'pageby'
Then go:
python setup.py install
Alternative if you don't plan any changes
easy_install mwlib && rehash
Other libraries needed by mwlib
- pygments
easy_install Pygments
- Fribidi - both a library and the Python bindings
./configure --prefix=/usr/local make make install
(this is difficult to install)
setenv fribidi_CFLAGS "-L/usr/local/lib -I/usr/local/include" setenv fribidi_LIBS -lfribidi ./configure make make install
- Ploticus
(not installed)
- mwlib.rl
easy_install mwlib.rl
Alternatively from a tarball:
- texvc
- Is in your mediawiki installation
- Compile with gmake it if not already done (needs ocaml, see above)
cd /XXX/mediawiki/math gmake ./texvc_test
- Add the directory to the system path
Testing
- mw-render --config=http://edutechwiki.unige.ch/mediawiki/ --writer=odf --output=./edutech.odt Educational_technology
- OK - Daniel K. Schneider 16:23, 4 May 2009 (UTC) (using version mwlib-41c207e76b28/)
mw-render --config=http://edutechwiki.unige.ch/mediawiki/ --writer=rl --output=./flash-cs3.pdf Flash_CS3_desktop_tutorial
- OK - Daniel K. Schneider 16:23, 4 May 2009 (UTC) (using version mwlib-41c207e76b28/)
- mw-zip --config=http://edutechwiki.unige.ch/mediawiki/ --output=./edutech.zip Educational_technology
- OK
mw-serv
MW Serv provides a server interface for the mw-render engine and mw-zip.
- Run the server
- http://code.pediapress.com/hg/mwlib/raw-file/tip/docs/commands.txt
- By default this service runs on port 8899
mw-serve --cache-dir=/data/mwcache/mwlibcache/ --logfile=/data/mwcache/logs/mwserve.log --mwrender-logfile=/data/mwcache/logs/mwrender.log --mwzip-logfile=/data/mwcache/logs/mwzip.log --mwpost-logfile=/data/mwcache/logs/mwpost.log --mwzip-logfile=/data/mwcache/logs/mwzip.log
An init script
- Create a user, e.g. something like
useradd -u 70002 -g 16100 -s /bin/sh -d /data/mwcache mwserv
- Chown the cache and log directories to this user
chown -R mwserv mwcache/
- /etc/init.d script
(to do ....)
Tuning and tips
See also some changes to the source code above.
Tweaking the collection extension
Add in Localsettings.php (if not already done) the rendering engines you will support. Typing mw-render --list-writers will list the ones you installed. E.g.
$wgCollectionFormats = array( 'rl' => 'PDF', 'odf' => 'ODT', );
Add in Localsettings.php if not already done the name and port of the server (altenatively you also could install a cgi script).
$wgCollectionMWServeURL = "http://xxx.yyy:8899";
Extra stuff:
For the license, make sure to give the correct RAW wiki URL. Or if this doesn't work, remove the line and the user will see a URL.
$wgLicenseURL = "http://edutechwiki.unige.ch/mediawiki/index.php?title=EduTech_Wiki:Copyrights&action=raw";
Limit to 100 articles:
$wgCollectionMaxArticles = 100;
Tips
- User the source extension (CodeSyntaxHighlight MediaWiki for formatting computer code. E.g. if you use XML within "pre" tags, the parser may become confused.