(!) Braindump work in process

Current Work

REPO

https://bitbucket.org/ReimarBauer/moin-2.0_experimental_plugins

Introduction

We have lots of code developed over the last decade. Some of the tools/plugins we currently have in moin1 need some work to get them into moin2. The plugin system we have in moin1 is not useable for moin2. There are several pages ... which discuss what we likly want to have. Besides of moin1 plugins we have also several monkey patches used to change some core functionality without adding a new plugin.

The work on moin-2.0_experimental_plugins tries to figure out what is needed to make from current moin2 implementations plugins which can be handled by pip. It is very draft but it is promising an easy way to install different kind of plugins and manage them per wiki instance. I have already once extracted all kind of current used xstatic packages for making experimental_moin_plugin but haven't published the changes to the repo. For all of them the current approach works. I do currently only one example per type because the API of e.g. contenttypes is in progress. The splitting makes currently too much extra effort on refactoring in different repos.

There is no decission done yet what remains builtin or will be a plugin only (besides the experimental_moin_plugin_mathjax, which is currently plugin only) For example we could have only the core base classes for contenttypes in the main code and all derivated contenttype definitions as plugins. This is similar to e.g. gnome, unity, firefox.

Some of the js libraries (jquery, svgweb) should remain builtin. Currently svgweb and also html5shiv is needed for some IE browsers. Other plugins based on jquery should not require to install this too.

Try out

Installation

For trying out here are some of the different examples for contenttype items.

mkdir ~/mointest
cd  ~/mointest

hg clone ssh://hg@bitbucket.org/ReimarBauer/moin-2.0_experimental_plugins

hg clone ssh://hg@bitbucket.org/ReimarBauer/experimental_moin_plugin_mathjax
hg clone ssh://hg@bitbucket.org/ReimarBauer/experimental_moin_plugin_twikidraw
hg clone ssh://hg@bitbucket.org/ReimarBauer/experimental_moin_plugin_ckeditor

cd moin-2.0_experimental_plugins
./quickinstall
source env/bin/activate
# those are configured into wikiconfig.py currenly
pip install --upgrade ../experimental_moin_plugin_twikidraw
pip install --upgrade ../experimental_moin_plugin_mathjax
pip install --upgrade ../experimental_moin_plugin_ckeditor

moin index-create -s -i
moin

installing httpauth

example how to add an auth plugin

cd ~/mointest
source moin-2.0_experimental_plugins/env/bin/activate

hg clone ssh://hg@bitbucket.org/ReimarBauer/experimental_moin_plugin_httpauth
pip install --upgrade experimental_moin_plugin_httpauth

(!) also you can create the dist package beforehand and install that e.g. python setup.py sdist

   1 diff -r ab838b439807 wikiconfig.py
   2 --- a/wikiconfig.py     Sat Oct 27 12:13:13 2012 +0200
   3 +++ b/wikiconfig.py     Sat Oct 27 12:13:16 2012 +0200
   4 @@ -82,7 +82,7 @@
   5      except KeyError:
   6          mplugins = None
   7      if mplugins:
   8 -        plugin_packages = ["mathjax", "twikidraw", "ckeditor",]  
   9 +        plugin_packages = ["mathjax", "twikidraw", "ckeditor", "httpauth", ]
  10  
  11          pkg = __import__('moinplugin.pkg', fromlist=plugin_packages)
  12          template_dirs = []
  13 @@ -108,6 +108,7 @@
  14              except AttributeError:
  15                  pass
  16  
  17 +    auth = [pkg.httpauth.HTTPAuthMoin()]
  18  MOINCFG = Config # Flask only likes uppercase stuff
  19  # Flask settings - see the flask documentation about their meaning
  20  SECRET_KEY = 'you need to change this so it is really secret'

Verification

Create a wiki text item and write

$ \alpha $ is a mathjax enabled greek alpha

or create a twikidraw item

MoinMoin: ReimarBauer/moin-2.0_experimental_plugins (last edited 2012-10-28 06:30:02 by ReimarBauer)