Index: main/kofacustom.skeleton/trunk/CHANGES.txt
===================================================================
--- main/kofacustom.skeleton/trunk/CHANGES.txt	(revision 11271)
+++ main/kofacustom.skeleton/trunk/CHANGES.txt	(revision 11272)
@@ -2,8 +2,8 @@
 *******
 
-0.2dev (unreleseased)
-=====================
+1.0dev (unreleased)
+===================
 
-* No changes yet
+* Diazofied complete package.
 
 
Index: main/kofacustom.skeleton/trunk/buildout-windows.cfg
===================================================================
--- main/kofacustom.skeleton/trunk/buildout-windows.cfg	(revision 11271)
+++ 	(revision )
@@ -1,87 +1,0 @@
-[buildout]
-develop = .
-parts =
-    eggbasket
-    app
-    mkdirs
-    zope_conf
-    site_zcml
-    zdaemon_conf
-    deploy_ini
-    debug_ini
-# For backward compatibility, telling buildout not to throw away
-# the data and log subdirectories from the parts directory.
-    data
-    log
-# newest = false
-
-extends = versions.cfg
-
-# eggs will be installed in the default buildout location
-# (see .buildout/default.cfg in your home directory)
-# unless you specify an eggs-directory option here.
-
-[app]
-# This creates only the paster script in bin/.
-recipe = zc.recipe.egg
-eggs = kofacustom.skeleton
-       z3c.evalexception>=2.0
-       Paste
-       PasteScript
-       PasteDeploy
-interpreter = python-console
-scripts = paster=paster
-
-[mkdirs]
-recipe = z3c.recipe.mkdir
-paths =
-    ${zope_conf:filestorage}
-    ${zope_conf:logfiles}
-    ${zope_conf:blobstorage}
-    ${buildout:directory}/var/datacenter/media
-
-[zope_conf]
-recipe = collective.recipe.template
-input = etc/zope.conf.in
-output = ${buildout:parts-directory}/etc/zope.conf
-filestorage = ${buildout:directory}/var/filestorage
-blobstorage = ${buildout:directory}/var/blobstorage
-logfiles = ${buildout:directory}/var/log
-extra =
-# extra = <grokwarnings>True</grokwarnings>
-# 'extra' is copied verbatim. Use it for product config sections and so.
-
-# The [data] and [log] parts are still in here to instruct buildout to not
-# unintentionally throw away the parts/data and parts/log subdirectories
-# that contain the Data.fs and the log files. These files should be
-# copied to the new locations. See the upgrade notes for more information.
-[data]
-recipe = zc.recipe.filestorage
-
-[log]
-recipe = zc.recipe.filestorage
-
-[site_zcml]
-recipe = collective.recipe.template
-input = etc/site.zcml.in
-output = ${buildout:parts-directory}/etc/site.zcml
-
-[zdaemon_conf]
-recipe = collective.recipe.template
-input = etc/zdaemon.conf.in
-output = ${buildout:parts-directory}/etc/zdaemon.conf
-
-[deploy_ini]
-recipe = collective.recipe.template
-input = etc/deploy.ini.in
-output = ${buildout:parts-directory}/etc/deploy.ini
-
-[debug_ini]
-recipe = collective.recipe.template
-input = etc/debug.ini.in
-output = ${buildout:parts-directory}/etc/debug.ini
-
-[eggbasket]
-recipe = z3c.recipe.eggbasket
-eggs = grok
-url = http://grok.zope.org/releaseinfo/grok-eggs-1.1.tgz
Index: main/kofacustom.skeleton/trunk/buildout-zeo.cfg
===================================================================
--- main/kofacustom.skeleton/trunk/buildout-zeo.cfg	(revision 11271)
+++ main/kofacustom.skeleton/trunk/buildout-zeo.cfg	(revision 11272)
@@ -13,6 +13,8 @@
     site_zcml
     zdaemon_conf
-    deploy_ini
-    debug_ini
+    raw_deploy_ini
+    raw_debug_ini
+    themed_deploy_ini
+    themed_debug_ini
     profile_ini
     zeo1_ini
@@ -23,4 +25,6 @@
 # kofactl creation must be _after_ app!
     kofactl
+    lxml
+    diazo
 # For backward compatibility, telling buildout not to throw away
 # the data and log subdirectories from the parts directory.
@@ -93,11 +97,11 @@
 [zeo1_ini]
 recipe = collective.recipe.template
-input = etc/zeo1.ini.in
-output = ${buildout:parts-directory}/etc/zeo1.ini
+input = etc/themed/zeo1.ini.in
+output = ${buildout:parts-directory}/etc/themed-zeo1.ini
 
 [zeo2_ini]
 recipe = collective.recipe.template
-input = etc/zeo2.ini.in
-output = ${buildout:parts-directory}/etc/zeo2.ini
+input = etc/themed/zeo2.ini.in
+output = ${buildout:parts-directory}/etc/themed-zeo2.ini
 
 [zeo1_conf]
@@ -115,5 +119,5 @@
 # See http://pypi.python.org/pypi/zc.recipe.egg for details...
 recipe = zc.recipe.egg
-eggs = kofacustom.skeleton [beaker]
+eggs = kofacustom.skeleton [beaker, diazo]
 arguments = "${buildout:parts-directory}/etc/zeo1.conf"
 scripts = kofactl=zeo_client1
@@ -122,5 +126,5 @@
 # See http://pypi.python.org/pypi/zc.recipe.egg for details...
 recipe = zc.recipe.egg
-eggs = kofacustom.skeleton [beaker]
+eggs = kofacustom.skeleton [beaker, diazo]
 arguments = "${buildout:parts-directory}/etc/zeo2.conf"
 scripts = kofactl=zeo_client2
Index: main/kofacustom.skeleton/trunk/buildout.cfg
===================================================================
--- main/kofacustom.skeleton/trunk/buildout.cfg	(revision 11271)
+++ main/kofacustom.skeleton/trunk/buildout.cfg	(revision 11272)
@@ -18,6 +18,8 @@
     site_zcml
     zdaemon_conf
-    deploy_ini
-    debug_ini
+    raw_deploy_ini
+    raw_debug_ini
+    themed_deploy_ini
+    themed_debug_ini
     profile_ini
     waeupdocs
@@ -26,4 +28,6 @@
 # kofactl creation must be _after_ app!
     kofactl
+    lxml
+    diazo
 # For backward compatibility, telling buildout not to throw away
 # the data and log subdirectories from the parts directory.
@@ -41,6 +45,6 @@
 
 [sources]
-waeup.kofa = svn https://svn.waeup.org/repos/main/waeup.kofa/branches/0.2
-kofacustom.nigeria = svn https://svn.waeup.org/repos/main/kofacustom.nigeria/branches/0.x
+waeup.kofa = svn https://svn.waeup.org/repos/main/waeup.kofa/branches/uli-diazo-themed
+kofacustom.nigeria = svn https://svn.waeup.org/repos/main/kofacustom.nigeria/trunk
 
 [kofa_params]
@@ -51,8 +55,8 @@
 base_port = 8080
 
-# zeo1_port = 7011
-# zeo2_port = 7012
-# zeo3_port = 7013
-# server_port = 7010
+zeo1_port = 8011
+zeo2_port = 8012
+# zeo3_port = 8013
+server_port = 8010
 # default 7. Number of pre-opened ZODB threads/client
 pool_size = 7
@@ -63,9 +67,10 @@
 # number of preopened paster threads, default 10
 threadpool_workers = 10
+devel_pkg = kofacustom.skeleton
 
 [app]
 # This creates all scripts in bin/. The kofactl created here is 'faulty'.
 recipe = zc.recipe.egg
-eggs = kofacustom.skeleton [beaker]
+eggs = kofacustom.skeleton [beaker, diazo]
        z3c.evalexception>=2.0
        Paste
@@ -81,5 +86,5 @@
 # fixed path to zdaemon.conf as argument.
 recipe = zc.recipe.egg
-eggs = kofacustom.skeleton [beaker]
+eggs = kofacustom.skeleton [beaker, diazo]
 arguments = "${buildout:parts-directory}/etc/zdaemon.conf"
 scripts = kofactl=kofactl
@@ -147,13 +152,23 @@
 output = ${buildout:parts-directory}/etc/zdaemon.conf
 
-[deploy_ini]
-recipe = collective.recipe.template
-input = etc/deploy.ini.in
-output = ${buildout:parts-directory}/etc/deploy.ini
-
-[debug_ini]
-recipe = collective.recipe.template
-input = etc/debug.ini.in
-output = ${buildout:parts-directory}/etc/debug.ini
+[raw_debug_ini]
+recipe = collective.recipe.template
+input = etc/raw/debug.ini.in
+output = ${buildout:parts-directory}/etc/raw-debug.ini
+
+[raw_deploy_ini]
+recipe = collective.recipe.template
+input = etc/raw/deploy.ini.in
+output = ${buildout:parts-directory}/etc/raw-deploy.ini
+
+[themed_debug_ini]
+recipe = collective.recipe.template
+input = etc/themed/debug.ini.in
+output = ${buildout:parts-directory}/etc/themed-debug.ini
+
+[themed_deploy_ini]
+recipe = collective.recipe.template
+input = etc/themed/deploy.ini.in
+output = ${buildout:parts-directory}/etc/themed-deploy.ini
 
 [profile_ini]
@@ -187,2 +202,13 @@
 scripts = coveragereport
 arguments = ('${buildout:parts-directory}/coverage-detect/working-directory/coverage', '${buildout:directory}/coverage-report')
+
+[lxml]
+recipe = z3c.recipe.staticlxml
+egg = lxml
+
+[diazo]
+recipe = zc.recipe.egg
+eggs =
+    diazo [wsgi]
+    PasteScript
+    kofacustom.skeleton [beaker, diazo]
Index: main/kofacustom.skeleton/trunk/docs/INSTALLWIN.txt
===================================================================
--- main/kofacustom.skeleton/trunk/docs/INSTALLWIN.txt	(revision 11271)
+++ 	(revision )
@@ -1,87 +1,0 @@
-Installation on Windows (XP, 2000, Vista, 7)
-********************************************
-
-.. note:: `waeup.kofa` has been developed to run on Linux servers,
-          preferarbly with an Ubuntu OS. The installation on Windows computers
-          is for demonstration purposes only.
-
-Install Python
-==============
-
-**Step 1.** Install Python. Currently, version 2.6.x is supported.
-Note that these links point to installers for the ordinary x86 processor architecture.
-We recommend to download the follwoing software and install into ``C:\Python26``:
-
-| http://www.python.org/ftp/python/2.6.0/python-2.6.0.msi
-| http://sourceforge.net/project/downloading.php?group_id=78018&filename=pywin32-213.win32-py2.6.exe
-| http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11.win32-py2.6.exe
-
-**Step 2**. Add ``C:\Python26\Scripts\`` to your system path:
-
-- Right-click on the My Computer icon. (Under Windows XP, Vista, or Windows 7, the My Computer Icon may be located in the start menu.)
-
-- Choose Properties from the context menu. Alternatively, you can double-click on the System icon in the Control Panel.
-
-- Click the Advanced tab or "Advanced system settings" on Windows Vista or Windows 7
-
-- Click the Environment Variables button.
-
-- Click on the variable called 'Path' and then click on Edit. Now add ``C:\Python26\Scripts\`` to the value of the variable, using a semi-colon as a separator.
-
-- Reboot Windows
-
-Install a Virtual Python Environment
-====================================
-
-**Step 3**. Open up a command window and change to the folder where you want to place the sandbox
-that will contain your Kofa project. In this HowTo we will assume and recommend this folder is ``C:\`` ::
-
-  C:\[any_path]> cd c:\
-
-**Step 4**. Install virtualenv by using the command::
-
- C:\> easy_install virtualenv
-
-**Step 5**. Create an isolated environment (sandbox) using the command::
-
- C:\> virtualenv winkofa
-
-**Step 6**. Activate the environment::
-
- C:\> cd winkofa
- C:\winkofa> Scripts\activate
-
-Note that the system prompt has changed.
-
-Run Kofa
-========
-
-**Step 7**. Copy the ``waeup.kofa`` folder into ``C:\winkofa``.
-
-**Step 8**. Run the bootstrap script::
-
- (winkofa) C:\winkofa\waeup.kofa> cd waeup.kofa
- (winkofa) C:\winkofa\waeup.kofa> python bootstrap\bootstrap.py -c buildout-windows.cfg
-
-**Step 9**. Run buildout (this takes a while)::
-
- C:\winkofa\waeup.kofa> bin\buildout.exe -c buildout-windows.cfg
-
-**Step 10**. You can deactivate your environment again::
-
- (winkofa) C:\winkofa\waeup.kofa> ..\Scripts\deactivate
-
-**Step 11**. Start your Kofa::
-
- C:\winkofa\waeup.kofa> bin\paster serve parts\etc\deploy.ini
-
-or from anywhere in your system::
-
- C:\[any_path]> C:\winkofa\trunk\bin\paster serve C:\winkofa\trunk\parts\etc\deploy.ini
-
-**Step 12**. Visit the Kofa website and create your university instance:
-
-| http://localhost:8080
-| user name: grok
-| password: grok
-
Index: main/kofacustom.skeleton/trunk/etc/raw/debug.ini.in
===================================================================
--- main/kofacustom.skeleton/trunk/etc/raw/debug.ini.in	(revision 11272)
+++ main/kofacustom.skeleton/trunk/etc/raw/debug.ini.in	(revision 11272)
@@ -0,0 +1,94 @@
+# debug.ini
+#
+# Debugging configuration for use with paster/WSGI
+#
+
+[loggers]
+keys = root, wsgi
+
+[handlers]
+keys = console, accesslog, asynclog, async_tracelog
+
+[formatters]
+keys = generic, accesslog
+
+[formatter_generic]
+format = %(asctime)s %(levelname)s [%(name)s] %(message)s
+
+[formatter_accesslog]
+format = %(message)s
+
+[handler_asynclog]
+class = FileHandler
+args = (os.path.join(r'${zope_conf:logfiles}', 'async.log'),
+        'a')
+level = INFO
+formatter = generic
+
+[handler_async_tracelog]
+class = FileHandler
+args = (os.path.join(r'${zope_conf:logfiles}', 'async_trace.log'),
+        'a')
+level = INFO
+formatter = generic
+
+[handler_console]
+class = StreamHandler
+args = (sys.stderr,)
+level = NOTSET
+formatter = generic
+
+[handler_accesslog]
+class = FileHandler
+args = (os.path.join(r'${zope_conf:logfiles}', 'access.log'),
+        'a')
+level = INFO
+formatter = accesslog
+
+[logger_root]
+level = INFO
+handlers = console
+
+[logger_wsgi]
+level = INFO
+handlers = accesslog
+qualname = wsgi
+propagate = 0
+
+[logger_async]
+level = INFO
+handlers = asynclog
+qualname = zc.async
+propagate = 0
+
+[logger_async_trace]
+level = INFO
+handlers = async_tracelog
+qualname = zc.async.trace
+propagate = 0
+
+[filter:translogger]
+use = egg:Paste#translogger
+setup_console_handler = False
+logger_name = wsgi
+
+[filter-app:main]
+# Change the last part from 'ajax' to 'pdb' for a post-mortem debugger
+# on the console:
+use = egg:z3c.evalexception#ajax
+next = zope
+
+[app:zope]
+use = egg:${kofa_params:devel_pkg}#debug
+filter-with = translogger
+exempt-exceptions = zope.security.interfaces.IUnauthorized
+
+[server:main]
+use = egg:Paste#http
+host = ${kofa_params:host}
+port = ${kofa_params:base_port}
+
+[DEFAULT]
+# set the name of the zope.conf file
+zope_conf = %(here)s/zope.conf
+env_vars = ZC_ASYNC_UUID ${buildout:directory}/var/uuid1.txt
Index: main/kofacustom.skeleton/trunk/etc/raw/deploy.ini.in
===================================================================
--- main/kofacustom.skeleton/trunk/etc/raw/deploy.ini.in	(revision 11272)
+++ main/kofacustom.skeleton/trunk/etc/raw/deploy.ini.in	(revision 11272)
@@ -0,0 +1,94 @@
+# deploy.ini
+#
+# Deployment configuration for use with paster/WSGI
+#
+
+[loggers]
+keys = root, wsgi, async, async_trace
+
+[handlers]
+keys = null, console, accesslog, asynclog, async_tracelog
+
+[formatters]
+keys = generic, accesslog
+
+[logger_root]
+level = INFO
+handlers = console
+
+[logger_wsgi]
+level = INFO
+#handlers = accesslog
+handlers = null
+qualname = wsgi
+propagate = 0
+
+[logger_async]
+level = INFO
+handlers = asynclog
+qualname = zc.async
+propagate = 0
+
+[logger_async_trace]
+level = INFO
+handlers = async_tracelog
+qualname = zc.async.trace
+propagate = 0
+
+[handler_null]
+# you can use 'NullHandler' (w/o the path) if under Python 2.7+
+class = waeup.kofa.utils.helpers.NullHandler
+args = ()
+level = NOTSET
+
+[handler_console]
+class = StreamHandler
+args = (sys.stderr,)
+level = NOTSET
+formatter = generic
+
+[handler_accesslog]
+class = FileHandler
+args = (os.path.join(r'${zope_conf:logfiles}', 'access.log'),
+        'a')
+level = INFO
+formatter = accesslog
+
+[handler_asynclog]
+class = FileHandler
+args = (os.path.join(r'${zope_conf:logfiles}', 'async.log'),
+        'a')
+level = INFO
+formatter = generic
+
+[handler_async_tracelog]
+class = FileHandler
+args = (os.path.join(r'${zope_conf:logfiles}', 'async_trace.log'),
+        'a')
+level = INFO
+formatter = generic
+
+[formatter_generic]
+format = %(asctime)s %(levelname)s [%(name)s] %(message)s
+
+[formatter_accesslog]
+format = %(message)s
+
+[filter:translogger]
+use = egg:Paste#translogger
+setup_console_handler = False
+logger_name = wsgi
+
+[app:main]
+use = egg:${kofa_params:devel_pkg}
+filter-with = translogger
+
+[server:main]
+use = egg:Paste#http
+host = ${kofa_params:host}
+port = ${kofa_params:base_port}
+
+[DEFAULT]
+# set the name of the zope.conf file
+zope_conf = %(here)s/zope.conf
+env_vars = ZC_ASYNC_UUID ${buildout:directory}/var/uuid1.txt
Index: main/kofacustom.skeleton/trunk/etc/themed/debug.ini.in
===================================================================
--- main/kofacustom.skeleton/trunk/etc/themed/debug.ini.in	(revision 11272)
+++ main/kofacustom.skeleton/trunk/etc/themed/debug.ini.in	(revision 11272)
@@ -0,0 +1,125 @@
+# debug.ini
+#
+# Debugging configuration for use with paster/WSGI and diazo
+#
+
+[loggers]
+keys = root, wsgi
+
+[handlers]
+keys = console, accesslog, asynclog, async_tracelog
+
+[formatters]
+keys = generic, accesslog
+
+[formatter_generic]
+format = %(asctime)s %(levelname)s [%(name)s] %(message)s
+
+[formatter_accesslog]
+format = %(message)s
+
+[handler_asynclog]
+class = FileHandler
+args = (os.path.join(r'${zope_conf:logfiles}', 'async.log'),
+        'a')
+level = INFO
+formatter = generic
+
+[handler_async_tracelog]
+class = FileHandler
+args = (os.path.join(r'${zope_conf:logfiles}', 'async_trace.log'),
+        'a')
+level = INFO
+formatter = generic
+
+[handler_console]
+class = StreamHandler
+args = (sys.stderr,)
+level = NOTSET
+formatter = generic
+
+[handler_accesslog]
+class = FileHandler
+args = (os.path.join(r'${zope_conf:logfiles}', 'access.log'),
+        'a')
+level = INFO
+formatter = accesslog
+
+[logger_root]
+level = INFO
+handlers = console
+
+[logger_wsgi]
+level = INFO
+handlers = accesslog
+qualname = wsgi
+propagate = 0
+
+[logger_async]
+level = INFO
+handlers = asynclog
+qualname = zc.async
+propagate = 0
+
+[logger_async_trace]
+level = INFO
+handlers = async_tracelog
+qualname = zc.async.trace
+propagate = 0
+
+[filter:translogger]
+use = egg:Paste#translogger
+setup_console_handler = False
+logger_name = wsgi
+
+[filter:debugger]
+# Change the last part from 'ajax' to 'pdb' for a post-mortem debugger
+# on the console:
+use = egg:z3c.evalexception#ajax
+
+[app:zope]
+use = egg:${kofa_params:devel_pkg}#debug
+exempt-exceptions = zope.security.interfaces.IUnauthorized
+
+[app:static]
+use = egg:Paste#static
+document_root = %(LAYOUT_DIR)s/static
+
+[app:static_custom]
+use = egg:Paste#static
+document_root = %(LAYOUT_CUSTOM_DIR)s/static/
+
+[composite:main]
+use = egg:Paste#urlmap
+/static = static
+/static_custom = static_custom
+/ = default
+
+[filter:theme]
+use = egg:diazo
+rules = file:///%(LAYOUT_CUSTOM_DIR)s/rules.xml
+prefix = /
+doctype = <!DOCTYPE html>
+# set to false, if you don't want rules.xml being rebuild on each request
+debug = true
+
+[pipeline:default]
+pipeline = theme
+           translogger
+           debugger
+           zope
+
+[server:main]
+use = egg:Paste#http
+host = ${kofa_params:host}
+port = ${kofa_params:base_port}
+
+[DEFAULT]
+# set the name of the zope.conf file
+zope_conf = %(here)s/zope.conf
+env_vars = ZC_ASYNC_UUID ${buildout:directory}/var/uuid1.txt
+# the directory where all real diazo config is done (no trailing slash)
+LAYOUT_DIR = ${buildout:directory}/sources/waeup.kofa/layout
+STATIC_DIR = %(LAYOUT_DIR)s/static
+LAYOUT_CUSTOM_DIR = ${buildout:directory}/layout
+STATIC_CUSTOM_DIR = %(LAYOUT_CUSTOM_DIR)s/static
Index: main/kofacustom.skeleton/trunk/etc/themed/deploy.ini.in
===================================================================
--- main/kofacustom.skeleton/trunk/etc/themed/deploy.ini.in	(revision 11272)
+++ main/kofacustom.skeleton/trunk/etc/themed/deploy.ini.in	(revision 11272)
@@ -0,0 +1,125 @@
+# deploy.ini
+#
+# Deployment configuration for use with paster/WSGI
+#
+
+[loggers]
+keys = root, wsgi, async, async_trace
+
+[handlers]
+keys = null, console, accesslog, asynclog, async_tracelog
+
+[formatters]
+keys = generic, accesslog
+
+[logger_root]
+level = INFO
+handlers = console
+
+[logger_wsgi]
+level = INFO
+#handlers = accesslog
+handlers = null
+qualname = wsgi
+propagate = 0
+
+[logger_async]
+level = INFO
+handlers = asynclog
+qualname = zc.async
+propagate = 0
+
+[logger_async_trace]
+level = INFO
+handlers = async_tracelog
+qualname = zc.async.trace
+propagate = 0
+
+[handler_null]
+# you can use 'NullHandler' (w/o the path) if under Python 2.7+
+class = waeup.kofa.utils.helpers.NullHandler
+args = ()
+level = NOTSET
+
+[handler_console]
+class = StreamHandler
+args = (sys.stderr,)
+level = NOTSET
+formatter = generic
+
+[handler_accesslog]
+class = FileHandler
+args = (os.path.join(r'${zope_conf:logfiles}', 'access.log'),
+        'a')
+level = INFO
+formatter = accesslog
+
+[handler_asynclog]
+class = FileHandler
+args = (os.path.join(r'${zope_conf:logfiles}', 'async.log'),
+        'a')
+level = INFO
+formatter = generic
+
+[handler_async_tracelog]
+class = FileHandler
+args = (os.path.join(r'${zope_conf:logfiles}', 'async_trace.log'),
+        'a')
+level = INFO
+formatter = generic
+
+[formatter_generic]
+format = %(asctime)s %(levelname)s [%(name)s] %(message)s
+
+[formatter_accesslog]
+format = %(message)s
+
+[filter:translogger]
+use = egg:Paste#translogger
+setup_console_handler = False
+logger_name = wsgi
+
+[app:content]
+use = egg:${kofa_params:devel_pkg}
+filter-with = translogger
+
+[app:static]
+use = egg:Paste#static
+document_root = %(LAYOUT_DIR)s/static/
+
+[app:static_custom]
+use = egg:Paste#static
+document_root = %(LAYOUT_CUSTOM_DIR)s/static/
+
+[composite:main]
+use = egg:Paste#urlmap
+/static = static
+/static_custom = static_custom
+/ = default
+
+[server:main]
+use = egg:Paste#http
+host = ${kofa_params:host}
+port = ${kofa_params:base_port}
+
+[filter:theme]
+use = egg:diazo
+rules = file:///%(LAYOUT_CUSTOM_DIR)s/rules.xml
+prefix = /
+doctype = <!DOCTYPE html>
+# set to true, if you want rules.xml being rebuild on each request
+debug = false
+
+[pipeline:default]
+pipeline = theme
+           content
+
+[DEFAULT]
+# set the name of the zope.conf file
+zope_conf = %(here)s/zope.conf
+env_vars = ZC_ASYNC_UUID ${buildout:directory}/var/uuid1.txt
+# the directory where all real diazo config is done (no trailing slash)
+LAYOUT_DIR = ${buildout:directory}/sources/waeup.kofa/layout
+STATIC_DIR = %(LAYOUT_DIR)s/static
+LAYOUT_CUSTOM_DIR = ${buildout:directory}/layout
+STATIC_CUSTOM_DIR = %(LAYOUT_CUSTOM_DIR)s/static
Index: main/kofacustom.skeleton/trunk/etc/themed/zeo1.ini.in
===================================================================
--- main/kofacustom.skeleton/trunk/etc/themed/zeo1.ini.in	(revision 11272)
+++ main/kofacustom.skeleton/trunk/etc/themed/zeo1.ini.in	(revision 11272)
@@ -0,0 +1,126 @@
+# deploy.ini
+#
+# Deployment configuration for use with paster/WSGI
+#
+
+[loggers]
+keys = root, wsgi, async, async_trace
+
+[handlers]
+keys = null, console, accesslog, asynclog, async_tracelog
+
+[formatters]
+keys = generic, accesslog
+
+[logger_root]
+level = INFO
+handlers = console
+
+[logger_wsgi]
+level = INFO
+#handlers = accesslog
+handlers = null
+qualname = wsgi
+propagate = 0
+
+[logger_async]
+level = INFO
+handlers = asynclog
+qualname = zc.async
+propagate = 0
+
+[logger_async_trace]
+level = INFO
+handlers = async_tracelog
+qualname = zc.async.trace
+propagate = 0
+
+[handler_null]
+# you can use 'NullHandler' (w/o the path) if under Python 2.7+
+class = waeup.kofa.utils.helpers.NullHandler
+args = ()
+level = NOTSET
+
+[handler_console]
+class = StreamHandler
+args = (sys.stderr,)
+level = NOTSET
+formatter = generic
+
+[handler_accesslog]
+class = FileHandler
+args = (os.path.join(r'${zope_conf:logfiles}', 'zeo1.log'),
+        'a')
+level = INFO
+formatter = accesslog
+
+[handler_asynclog]
+class = FileHandler
+args = (os.path.join(r'${zope_conf:logfiles}', 'zeo1_async.log'),
+        'a')
+level = INFO
+formatter = generic
+
+[handler_async_tracelog]
+class = FileHandler
+args = (os.path.join(r'${zope_conf:logfiles}', 'zeo1_async_trace.log'),
+        'a')
+level = INFO
+formatter = generic
+
+[formatter_generic]
+format = %(asctime)s %(levelname)s [%(name)s] %(message)s
+
+[formatter_accesslog]
+format = %(message)s
+
+[filter:translogger]
+use = egg:Paste#translogger
+setup_console_handler = False
+logger_name = wsgi
+
+[app:content]
+use = egg:${kofa_params:devel_pkg}
+filter-with = translogger
+
+[app:static]
+use = egg:Paste#static
+document_root = %(LAYOUT_DIR)s/static/
+
+[app:static_custom]
+use = egg:Paste#static
+document_root = %(LAYOUT_CUSTOM_DIR)s/static/
+
+[composite:main]
+use = egg:Paste#urlmap
+/static = static
+/static_custom = static_custom
+/ = default
+
+[server:main]
+use = egg:Paste#http
+host = ${kofa_params:host}
+port = ${kofa_params:zeo1_port}
+threadpool_workers = ${kofa_params:threadpool_workers}
+use_threadpool = True
+
+[filter:theme]
+use = egg:diazo
+rules = file:///%(LAYOUT_CUSTOM_DIR)s/rules.xml
+prefix = /
+doctype = <!DOCTYPE html>
+# set to true, if you want rules.xml being rebuild on each request
+debug = false
+
+[pipeline:default]
+pipeline = theme
+           content
+[DEFAULT]
+# set the name of the zope.conf file
+zope_conf = %(here)s/zope_zeo1.conf
+env_vars = ZC_ASYNC_UUID ${buildout:directory}/var/uuid1.txt
+# the directory where all real diazo config is done (no trailing slash)
+LAYOUT_DIR = ${buildout:directory}/sources/waeup.kofa/layout
+STATIC_DIR = %(LAYOUT_DIR)s/static
+LAYOUT_CUSTOM_DIR = ${buildout:directory}/layout
+STATIC_CUSTOM_DIR = %(LAYOUT_CUSTOM_DIR)s/static
Index: main/kofacustom.skeleton/trunk/etc/themed/zeo2.ini.in
===================================================================
--- main/kofacustom.skeleton/trunk/etc/themed/zeo2.ini.in	(revision 11272)
+++ main/kofacustom.skeleton/trunk/etc/themed/zeo2.ini.in	(revision 11272)
@@ -0,0 +1,126 @@
+# deploy.ini
+#
+# Deployment configuration for use with paster/WSGI
+#
+
+[loggers]
+keys = root, wsgi, async, async_trace
+
+[handlers]
+keys = null, console, accesslog, asynclog, async_tracelog
+
+[formatters]
+keys = generic, accesslog
+
+[logger_root]
+level = INFO
+handlers = console
+
+[logger_wsgi]
+level = INFO
+#handlers = accesslog
+handlers = null
+qualname = wsgi
+propagate = 0
+
+[logger_async]
+level = INFO
+handlers = asynclog
+qualname = zc.async
+propagate = 0
+
+[logger_async_trace]
+level = INFO
+handlers = async_tracelog
+qualname = zc.async.trace
+propagate = 0
+
+[handler_null]
+# you can use 'NullHandler' (w/o the path) if under Python 2.7+
+class = waeup.kofa.utils.helpers.NullHandler
+args = ()
+level = NOTSET
+
+[handler_console]
+class = StreamHandler
+args = (sys.stderr,)
+level = NOTSET
+formatter = generic
+
+[handler_accesslog]
+class = FileHandler
+args = (os.path.join(r'${zope_conf:logfiles}', 'zeo2.log'),
+        'a')
+level = INFO
+formatter = accesslog
+
+[handler_asynclog]
+class = FileHandler
+args = (os.path.join(r'${zope_conf:logfiles}', 'zeo2_async.log'),
+        'a')
+level = INFO
+formatter = generic
+
+[handler_async_tracelog]
+class = FileHandler
+args = (os.path.join(r'${zope_conf:logfiles}', 'zeo2_async_trace.log'),
+        'a')
+level = INFO
+formatter = generic
+
+[formatter_generic]
+format = %(asctime)s %(levelname)s [%(name)s] %(message)s
+
+[formatter_accesslog]
+format = %(message)s
+
+[filter:translogger]
+use = egg:Paste#translogger
+setup_console_handler = False
+logger_name = wsgi
+
+[app:content]
+use = egg:${kofa_params:devel_pkg}
+filter-with = translogger
+
+[app:static]
+use = egg:Paste#static
+document_root = %(LAYOUT_DIR)s/static/
+
+[app:static_custom]
+use = egg:Paste#static
+document_root = %(LAYOUT_CUSTOM_DIR)s/static/
+
+[composite:main]
+use = egg:Paste#urlmap
+/static = static
+/static_custom = static_custom
+/ = default
+
+[server:main]
+use = egg:Paste#http
+host = ${kofa_params:host}
+port = ${kofa_params:zeo2_port}
+threadpool_workers = ${kofa_params:threadpool_workers}
+use_threadpool = True
+
+[filter:theme]
+use = egg:diazo
+rules = file:///%(LAYOUT_CUSTOM_DIR)s/rules.xml
+prefix = /
+doctype = <!DOCTYPE html>
+# set to true, if you want rules.xml being rebuild on each request
+debug = false
+
+[pipeline:default]
+pipeline = theme
+           content
+[DEFAULT]
+# set the name of the zope.conf file
+zope_conf = %(here)s/zope_zeo2.conf
+env_vars = ZC_ASYNC_UUID ${buildout:directory}/var/uuid2.txt
+# the directory where all real diazo config is done (no trailing slash)
+LAYOUT_DIR = ${buildout:directory}/sources/waeup.kofa/layout
+STATIC_DIR = %(LAYOUT_DIR)s/static
+LAYOUT_CUSTOM_DIR = ${buildout:directory}/layout
+STATIC_CUSTOM_DIR = %(LAYOUT_CUSTOM_DIR)s/static
Index: main/kofacustom.skeleton/trunk/etc/zdaemon.conf.in
===================================================================
--- main/kofacustom.skeleton/trunk/etc/zdaemon.conf.in	(revision 11271)
+++ main/kofacustom.skeleton/trunk/etc/zdaemon.conf.in	(revision 11272)
@@ -1,4 +1,4 @@
 <runner>
-  program ${buildout:directory}/bin/paster serve ${buildout:directory}/parts/etc/deploy.ini
+  program ${buildout:directory}/bin/paster serve ${buildout:directory}/parts/etc/themed-deploy.ini
   daemon on
   transcript ${zope_conf:logfiles}/zdaemon.log
Index: main/kofacustom.skeleton/trunk/etc/zeo1.conf.in
===================================================================
--- main/kofacustom.skeleton/trunk/etc/zeo1.conf.in	(revision 11271)
+++ main/kofacustom.skeleton/trunk/etc/zeo1.conf.in	(revision 11272)
@@ -1,8 +1,8 @@
 <runner>
-  program ${buildout:directory}/bin/paster serve --pid-file ${buildout:directory}/var/zeo1.pid ${buildout:directory}/parts/etc/zeo1.ini
+  program ${buildout:directory}/bin/paster serve --pid-file ${buildout:directory}/var/zeo1.pid ${buildout:directory}/parts/etc/themed-zeo1.ini
   daemon on
   transcript ${zope_conf:logfiles}/zdaemon-zeo1.log
   socket-name ${zope_conf:logfiles}/zeo1.sock
   # Enable this to run the child process as a different user
-  user kofa
+  # user kofa
 </runner>
Index: main/kofacustom.skeleton/trunk/etc/zeo2.conf.in
===================================================================
--- main/kofacustom.skeleton/trunk/etc/zeo2.conf.in	(revision 11271)
+++ main/kofacustom.skeleton/trunk/etc/zeo2.conf.in	(revision 11272)
@@ -1,8 +1,8 @@
 <runner>
-  program ${buildout:directory}/bin/paster serve --pid-file ${buildout:directory}/var/zeo2.pid ${buildout:directory}/parts/etc/zeo2.ini
+  program ${buildout:directory}/bin/paster serve --pid-file ${buildout:directory}/var/zeo2.pid ${buildout:directory}/parts/etc/themed-zeo2.ini
   daemon on
   transcript ${zope_conf:logfiles}/zdaemon-zeo2.log
   socket-name ${zope_conf:logfiles}/zeo2.sock
   # Enable this to run the child process as a different user
-  user kofa
+  # user kofa
 </runner>
Index: main/kofacustom.skeleton/trunk/etc/zope_zeo1.conf.in
===================================================================
--- main/kofacustom.skeleton/trunk/etc/zope_zeo1.conf.in	(revision 11271)
+++ main/kofacustom.skeleton/trunk/etc/zope_zeo1.conf.in	(revision 11272)
@@ -24,5 +24,5 @@
 # Uncomment this if you want to connect to a ZEO server instead:
   <zeoclient>
-    server localhost:7010
+    server localhost:8010
     storage 1
     # ZEO client cache, in bytes
@@ -63,5 +63,5 @@
 <zodb async>
   <zeoclient>
-    server localhost:7010
+    server localhost:8010
     storage async
     name async
Index: main/kofacustom.skeleton/trunk/etc/zope_zeo2.conf.in
===================================================================
--- main/kofacustom.skeleton/trunk/etc/zope_zeo2.conf.in	(revision 11271)
+++ main/kofacustom.skeleton/trunk/etc/zope_zeo2.conf.in	(revision 11272)
@@ -24,5 +24,5 @@
 # Uncomment this if you want to connect to a ZEO server instead:
   <zeoclient>
-    server localhost:7010
+    server localhost:8010
     storage 1
     # ZEO client cache, in bytes
@@ -63,5 +63,5 @@
 <zodb async>
   <zeoclient>
-    server localhost:7010
+    server localhost:8010
     storage async
     name async
Index: main/kofacustom.skeleton/trunk/setup.py
===================================================================
--- main/kofacustom.skeleton/trunk/setup.py	(revision 11271)
+++ main/kofacustom.skeleton/trunk/setup.py	(revision 11272)
@@ -2,5 +2,5 @@
 from setuptools import setup, find_packages
 
-version = '0.2dev'
+version = '1.0dev'
 
 install_requires = [
@@ -9,6 +9,6 @@
     'grokui.admin',
     'grokcore.startup',
-    'waeup.kofa < 1.0',
-    'kofacustom.nigeria < 1.0',
+    'waeup.kofa >= 1.0',
+    'kofacustom.nigeria >= 1.0',
     ],
 
@@ -21,4 +21,9 @@
     'dolmen.beaker',
     ]
+
+diazo_require = [
+    'diazo',
+    'webob',
+]
 
 tests_require = [
@@ -86,9 +91,8 @@
         docs = docs_require,
         beaker = beaker_require,
+        diazo = diazo_require,
         ),
       entry_points="""
       # Add entry points here
-      [hurry.resource.libraries]
-      waeup_custom = kofacustom.skeleton.browser.resources:waeup_custom
       [console_scripts]
       kofa-debug = grokcore.startup:interactive_debug_prompt
Index: main/kofacustom.skeleton/trunk/src/kofacustom/skeleton/browser/resources.py
===================================================================
--- main/kofacustom.skeleton/trunk/src/kofacustom/skeleton/browser/resources.py	(revision 11271)
+++ 	(revision )
@@ -1,30 +1,0 @@
-## $Id$
-##
-## Copyright (C) 2011 Uli Fouquet & Henrik Bettermann
-## 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
-##
-import grok
-from waeup.kofa.browser.resources import (
-    Library, ResourceInclusion, waeup_base_css,
-    )
-
-#: All local resources are registered under the name ``waeup_custom``.
-waeup_custom = Library('waeup_custom', 'static')
-
-custom_theme = ResourceInclusion(
-    waeup_custom, 'custom_theme.css',
-    depends = [waeup_base_css])
-
-favicon = ResourceInclusion(waeup_custom, 'favicon.ico')
Index: main/kofacustom.skeleton/trunk/src/kofacustom/skeleton/browser/static/custom_theme.css
===================================================================
--- main/kofacustom.skeleton/trunk/src/kofacustom/skeleton/browser/static/custom_theme.css	(revision 11271)
+++ 	(revision )
@@ -1,79 +1,0 @@
-.topbar-inner, .topbar .fill {
-  background-color: #930303;
-  background-image: -moz-linear-gradient(center top , #5f0500, #930303);
-  background-image: -khtml-gradient(linear, left top, left bottom, from(#5f0500), to(#930303));
-  background-image: -moz-linear-gradient(top, #5f0500, #930303);
-  background-image: -ms-linear-gradient(top, #5f0500, #930303);
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5f0500), color-stop(100%, #930303));
-  background-image: -webkit-linear-gradient(top, #5f0500, #930303);
-  background-image: -o-linear-gradient(top, #5f0500, #930303);
-  background-image: linear-gradient(top, #5f0500, #930303);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5f0500', endColorstr='#930303', GradientType=0);
-}
-
-.topbar div > ul .active > a, .nav .active > a {
-  background-color: #930303;
-}
-
-.topbar h3 a:hover, .topbar .brand:hover, .topbar ul .active > a {
-  background-color: #930303;
-}
-
-.topbar div > ul a:hover, .nav a:hover {
-  background-color: #930303;
-}
-
-
-.topbar div > ul .menu-dropdown,
-.nav .menu-dropdown,
-.topbar div > ul .dropdown-menu,
-.nav .dropdown-menu {
-  background-color: #930303;
-}
-
-.topbar div > ul a.menu:hover,
-.nav a.menu:hover,
-.topbar div > ul li.open .menu,
-.nav li.open .menu,
-.topbar div > ul .dropdown-toggle:hover,
-.nav .dropdown-toggle:hover,
-.topbar div > ul .dropdown.open .dropdown-toggle,
-.nav .dropdown.open .dropdown-toggle {
-  background: #930303;
-}
-
-body {
-}
-
-.topbar div > ul .menu-dropdown li a:hover,
-.nav .menu-dropdown li a:hover,
-.topbar div > ul .dropdown-menu li a:hover,
-.nav .dropdown-menu li a:hover {
-  background-color: #5f0500;
-  background-repeat: repeat-x;
-  background-image: -khtml-gradient(linear, left top, left bottom, from(#930303), to(#191919));
-  background-image: -moz-linear-gradient(top, #5f0500, #5f0500);
-  background-image: -ms-linear-gradient(top, #5f0500, #5f0500);
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5f0500), color-stop(100%, #5f0500));
-  background-image: -webkit-linear-gradient(top, #5f0500, #5f0500);
-  background-image: -o-linear-gradient(top, #5f0500, #5f0500);
-  background-image: linear-gradient(top, #5f0500, #5f0500);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5f0500', endColorstr='#5f0500', GradientType=0);
-  color: #ffffff;
-}
-
-.topbar div > ul .menu-dropdown li a, .nav .menu-dropdown li a, .topbar div > ul .dropdown-menu li a, .nav .dropdown-menu li a {
-    color: #ffffff;
-}
-
-a {
-  color: #930303;
-}
-
-a:hover {
-  color: #5f0500;
-}
-
-.topbar a {
-    color: white;
-}
Index: main/kofacustom.skeleton/trunk/src/kofacustom/skeleton/browser/tests.py
===================================================================
--- main/kofacustom.skeleton/trunk/src/kofacustom/skeleton/browser/tests.py	(revision 11271)
+++ main/kofacustom.skeleton/trunk/src/kofacustom/skeleton/browser/tests.py	(revision 11272)
@@ -49,13 +49,4 @@
         shutil.rmtree(self.dc_root)
 
-    def test_custom_theme(self):
-        self.browser.addHeader('Authorization', 'Basic mgr:mgrpw')
-        self.browser.open('http://localhost/app/configuration')
-        self.assertMatches('...Skeleton Theme...', self.browser.contents)
-        self.browser.getControl(name="form.skin").value = ['custom theme']
-        self.browser.getControl("Save").click()
-        self.browser.open('http://localhost/app/configuration')
-        return
-
     def test_access_live_url(self):
         # We can't access the system with basic authentication
Index: main/kofacustom.skeleton/trunk/src/kofacustom/skeleton/browser/theming.py
===================================================================
--- main/kofacustom.skeleton/trunk/src/kofacustom/skeleton/browser/theming.py	(revision 11271)
+++ 	(revision )
@@ -1,33 +1,0 @@
-## $Id$
-##
-## Copyright (C) 2011 Uli Fouquet & Henrik Bettermann
-## 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
-##
-import grok
-from waeup.kofa.browser.interfaces import ITheme
-from kofacustom.skeleton.browser.resources import custom_theme, favicon
-
-from kofacustom.skeleton.interfaces import MessageFactory as _
-
-class CustomTheme(grok.GlobalUtility):
-    """A custom theme based on the Kofa base theme.
-    """
-    grok.implements(ITheme)
-    grok.name('custom theme')
-
-    description = _(u'Skeleton Theme')
-
-    def getResources(self):
-        return [custom_theme, favicon]
Index: main/kofacustom.skeleton/trunk/src/kofacustom/skeleton/interswitch/browser_templates/applicant_goto_interswitch.pt
===================================================================
--- main/kofacustom.skeleton/trunk/src/kofacustom/skeleton/interswitch/browser_templates/applicant_goto_interswitch.pt	(revision 11271)
+++ main/kofacustom.skeleton/trunk/src/kofacustom/skeleton/interswitch/browser_templates/applicant_goto_interswitch.pt	(revision 11272)
@@ -71,6 +71,11 @@
   <input type="hidden" name="payment_params" value="college_split" />
   <span tal:replace="structure view/xml_data"></span>
+  <br />
 
-  <input type="submit" class="btn" tal:attributes="value view/submit_button"/>
+  <input type="submit" class="btn btn-primary" tal:attributes="value view/submit_button"/>
+
+  <br /><br />
+
+  <img src="/static/img/interswitch_verve_mastercard.gif" />
 
 </form>
Index: main/kofacustom.skeleton/trunk/src/kofacustom/skeleton/interswitch/browser_templates/student_goto_interswitch.pt
===================================================================
--- main/kofacustom.skeleton/trunk/src/kofacustom/skeleton/interswitch/browser_templates/student_goto_interswitch.pt	(revision 11271)
+++ main/kofacustom.skeleton/trunk/src/kofacustom/skeleton/interswitch/browser_templates/student_goto_interswitch.pt	(revision 11272)
@@ -71,6 +71,11 @@
   <input type="hidden" name="payment_params" value="college_split" />
   <span tal:replace="structure view/xml_data"></span>
+  <br />
 
-  <input type="submit" class="btn" tal:attributes="value view/submit_button"/>
+  <input type="submit" class="btn btn-primary" tal:attributes="value view/submit_button"/>
+
+  <br /><br />
+
+  <img src="/static/img/interswitch_verve_mastercard.gif" />
 
 </form>
Index: main/kofacustom.skeleton/trunk/versions.cfg
===================================================================
--- main/kofacustom.skeleton/trunk/versions.cfg	(revision 11271)
+++ main/kofacustom.skeleton/trunk/versions.cfg	(revision 11272)
@@ -128,2 +128,24 @@
 # zc.recipe.testrunner==2.0.0
 zope.testrunner = 4.3.3
+
+# Added by buildout at 2014-02-17 16:26:51.455299
+WebOb = 1.3.1
+diazo = 1.0.5
+repoze.xmliter = 0.5
+z3c.recipe.staticlxml = 0.10
+
+# Required by:
+# diazo==1.0.5
+experimental.cssselect = 0.3
+
+# Required by:
+# diazo==1.0.5
+# experimental.cssselect==0.3
+lxml = 3.3.1
+
+# Required by:
+# z3c.recipe.staticlxml==0.10
+zc.recipe.cmmi = 1.3.5
+
+# Added by buildout at 2014-02-21 08:11:47.544699
+zc.zodbrecipes = 2.0.0
