Index: main/waeup.imostate/trunk/CHANGES.txt
===================================================================
--- main/waeup.imostate/trunk/CHANGES.txt	(revision 11308)
+++ main/waeup.imostate/trunk/CHANGES.txt	(revision 11309)
@@ -2,9 +2,8 @@
 *******
 
-0.1.1 (unreleased)
-==================
+1.0dev (unreleased)
+===================
 
-* No changes yet.
-
+* Diazofied whole package.
 
 0.1 (2014-02-22)
Index: main/waeup.imostate/trunk/buildout-windows.cfg
===================================================================
--- main/waeup.imostate/trunk/buildout-windows.cfg	(revision 11308)
+++ 	(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 = waeup.imostate
-       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/waeup.imostate/trunk/buildout-zeo.cfg
===================================================================
--- main/waeup.imostate/trunk/buildout-zeo.cfg	(revision 11308)
+++ main/waeup.imostate/trunk/buildout-zeo.cfg	(revision 11309)
@@ -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.
@@ -44,5 +48,4 @@
     address ${kofa_params:server_port}
   </zeo>
-
   <blobstorage 1>
     blob-dir ${zope_conf:blobstorage}
@@ -51,9 +54,7 @@
     </filestorage>
   </blobstorage>
-
   <filestorage async>
     path ${zope_conf:filestorage}/Data.async.fs
   </filestorage>
-
   <eventlog>
     # This sets up logging to a file.
@@ -96,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]
@@ -118,5 +119,5 @@
 # See http://pypi.python.org/pypi/zc.recipe.egg for details...
 recipe = zc.recipe.egg
-eggs = waeup.imostate [beaker]
+eggs = waeup.imostate [beaker, diazo]
 arguments = "${buildout:parts-directory}/etc/zeo1.conf"
 scripts = kofactl=zeo_client1
@@ -125,5 +126,5 @@
 # See http://pypi.python.org/pypi/zc.recipe.egg for details...
 recipe = zc.recipe.egg
-eggs = waeup.imostate [beaker]
+eggs = waeup.imostate [beaker, diazo]
 arguments = "${buildout:parts-directory}/etc/zeo2.conf"
 scripts = kofactl=zeo_client2
Index: main/waeup.imostate/trunk/buildout.cfg
===================================================================
--- main/waeup.imostate/trunk/buildout.cfg	(revision 11308)
+++ main/waeup.imostate/trunk/buildout.cfg	(revision 11309)
@@ -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/tags/0.2.1
-kofacustom.nigeria = svn https://svn.waeup.org/repos/main/kofacustom.nigeria/tags/0.1
+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]
@@ -52,5 +56,5 @@
 zeo1_port = 7071
 zeo2_port = 7072
-zeo3_port = 7073
+# zeo3_port = 7073
 server_port = 7070
 # default 7. Number of pre-opened ZODB threads/client
@@ -62,9 +66,10 @@
 # number of preopened paster threads, default 10
 threadpool_workers = 10
+devel_pkg = waeup.imostate
 
 [app]
 # This creates all scripts in bin/. The kofactl created here is 'faulty'.
 recipe = zc.recipe.egg
-eggs = waeup.imostate [beaker]
+eggs = waeup.imostate [beaker, diazo]
        z3c.evalexception>=2.0
        Paste
@@ -80,5 +85,5 @@
 # fixed path to zdaemon.conf as argument.
 recipe = zc.recipe.egg
-eggs = waeup.imostate [beaker]
+eggs = waeup.imostate [beaker, diazo]
 arguments = "${buildout:parts-directory}/etc/zdaemon.conf"
 scripts = kofactl=kofactl
@@ -146,13 +151,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]
@@ -186,2 +201,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
+    waeup.imostate [beaker, diazo]
Index: main/waeup.imostate/trunk/docs/INSTALLWIN.txt
===================================================================
--- main/waeup.imostate/trunk/docs/INSTALLWIN.txt	(revision 11308)
+++ 	(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/waeup.imostate/trunk/etc/raw/debug.ini.in
===================================================================
--- main/waeup.imostate/trunk/etc/raw/debug.ini.in	(revision 11309)
+++ main/waeup.imostate/trunk/etc/raw/debug.ini.in	(revision 11309)
@@ -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/waeup.imostate/trunk/etc/raw/deploy.ini.in
===================================================================
--- main/waeup.imostate/trunk/etc/raw/deploy.ini.in	(revision 11309)
+++ main/waeup.imostate/trunk/etc/raw/deploy.ini.in	(revision 11309)
@@ -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/waeup.imostate/trunk/etc/themed/debug.ini.in
===================================================================
--- main/waeup.imostate/trunk/etc/themed/debug.ini.in	(revision 11309)
+++ main/waeup.imostate/trunk/etc/themed/debug.ini.in	(revision 11309)
@@ -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/waeup.imostate/trunk/etc/themed/deploy.ini.in
===================================================================
--- main/waeup.imostate/trunk/etc/themed/deploy.ini.in	(revision 11309)
+++ main/waeup.imostate/trunk/etc/themed/deploy.ini.in	(revision 11309)
@@ -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/waeup.imostate/trunk/etc/themed/zeo1.ini.in
===================================================================
--- main/waeup.imostate/trunk/etc/themed/zeo1.ini.in	(revision 11309)
+++ main/waeup.imostate/trunk/etc/themed/zeo1.ini.in	(revision 11309)
@@ -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/waeup.imostate/trunk/etc/themed/zeo2.ini.in
===================================================================
--- main/waeup.imostate/trunk/etc/themed/zeo2.ini.in	(revision 11309)
+++ main/waeup.imostate/trunk/etc/themed/zeo2.ini.in	(revision 11309)
@@ -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/waeup.imostate/trunk/etc/zdaemon.conf.in
===================================================================
--- main/waeup.imostate/trunk/etc/zdaemon.conf.in	(revision 11308)
+++ main/waeup.imostate/trunk/etc/zdaemon.conf.in	(revision 11309)
@@ -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/waeup.imostate/trunk/etc/zeo1.conf.in
===================================================================
--- main/waeup.imostate/trunk/etc/zeo1.conf.in	(revision 11308)
+++ main/waeup.imostate/trunk/etc/zeo1.conf.in	(revision 11309)
@@ -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/waeup.imostate/trunk/etc/zeo2.conf.in
===================================================================
--- main/waeup.imostate/trunk/etc/zeo2.conf.in	(revision 11308)
+++ main/waeup.imostate/trunk/etc/zeo2.conf.in	(revision 11309)
@@ -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/waeup.imostate/trunk/etc/zope_zeo1.conf.in
===================================================================
--- main/waeup.imostate/trunk/etc/zope_zeo1.conf.in	(revision 11308)
+++ main/waeup.imostate/trunk/etc/zope_zeo1.conf.in	(revision 11309)
@@ -24,5 +24,5 @@
 # Uncomment this if you want to connect to a ZEO server instead:
   <zeoclient>
-    server localhost:7040
+    server localhost:7070
     storage 1
     # ZEO client cache, in bytes
@@ -64,5 +64,5 @@
 <zodb async>
   <zeoclient>
-    server localhost:7040
+    server localhost:7070
     storage async
     name async
Index: main/waeup.imostate/trunk/etc/zope_zeo2.conf.in
===================================================================
--- main/waeup.imostate/trunk/etc/zope_zeo2.conf.in	(revision 11308)
+++ main/waeup.imostate/trunk/etc/zope_zeo2.conf.in	(revision 11309)
@@ -24,5 +24,5 @@
 # Uncomment this if you want to connect to a ZEO server instead:
   <zeoclient>
-    server localhost:7040
+    server localhost:7070
     storage 1
     # ZEO client cache, in bytes
@@ -64,5 +64,5 @@
 <zodb async>
   <zeoclient>
-    server localhost:7040
+    server localhost:7070
     storage async
     name async
Index: main/waeup.imostate/trunk/layout/error-zope.html
===================================================================
--- main/waeup.imostate/trunk/layout/error-zope.html	(revision 11309)
+++ main/waeup.imostate/trunk/layout/error-zope.html	(revision 11309)
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <title>waeup.kofa Portal - Error</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta name="description" content="">
+    <meta name="author" content="">
+    <link rel="shortcut icon" href="static/ico/favicon.ico">
+
+    <!-- stylesheets -->
+    <link href="static/bootstrap/css/bootstrap.min.css"
+	  rel="stylesheet">
+    <link href="static/css/base.css" rel="stylesheet">
+  </head>
+  <body id="kofa-body" class="errorpage">
+    <div class="container">
+      <div class="jumbotron">
+        <h1 id="kofa-error-heading">Error</h1>
+        <div id="kofa-error-message">Error Message</div>
+        <div>We are terribly sorry.</div>
+      </div>
+    </div>
+
+  </body>
+</html>
Index: main/waeup.imostate/trunk/layout/rules.xml
===================================================================
--- main/waeup.imostate/trunk/layout/rules.xml	(revision 11309)
+++ main/waeup.imostate/trunk/layout/rules.xml	(revision 11309)
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<rules
+    xmlns="http://namespaces.plone.org/diazo"
+    xmlns:css="http://namespaces.plone.org/diazo/css"
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:xi="http://www.w3.org/2001/XInclude">
+
+  <!-- Cases where we do not want themes... -->
+  <notheme if-path="/++grokui++" />  <!-- do not theme GrokUI -->
+  <notheme if-path="/_debug" /><!-- output by debugger -->
+  <notheme css:if-content="div#error-area" />
+
+  <!-- use error page if there is a <table class="layout">
+       tag in content. This tag is rendered in Zope 3 errors. -->
+  <rules css:if-content="table#layout">
+    <theme href="error-zope.html" />
+    <replace css:theme-children="#kofa-error-message"
+             css:content-children="h3" />
+  </rules>
+  <!-- use error page if there is no <div> tag in content.
+       This happens if something in the application went wrong. -->
+  <rules css:if-not-content="div">
+    <theme href="error-zope.html" />
+    <replace css:theme-children="#kofa-error-message"
+             css:content-children="body" />
+  </rules>
+
+  <!-- regular rules -->
+  <rules css:if-content="body.kofa-body">
+
+    <theme href="theme.html" />
+
+    <!-- head elements -->
+    <replace css:theme="html head title"
+             css:content="html head title" />
+
+    <!-- brand (upper left) -->
+    <copy attributes="href" css:theme="a.kofa-brand-link"
+          css:content="a.kofa-brand-link" />
+    <replace css:theme-children="a.kofa-brand-link"
+             css:content-children="a.kofa-brand-link" />
+
+    <!-- left top navigation -->
+    <replace css:theme-children="ul.kofa-navbar-left"
+             css:content-children="ul.kofa-navbar-left" />
+
+    <!-- right side top navigation -->
+    <replace css:theme-children="ul.kofa-navbar-right"
+             css:content-children="ul.kofa-navbar-right" />
+
+    <!-- breadcrumbs -->
+    <drop css:theme="div.kofa-breadcrumbs-box-long"
+          css:if-not-content="ul.breadcrumb" />
+    <drop css:theme="div.kofa-breadcrumbs-box-long"
+          css:if-content="div.wfstatus" />
+    <drop css:theme="div.kofa-breadcrumbs-box-short"
+          css:if-not-content="ul.breadcrumb" />
+    <drop css:theme="div.kofa-breadcrumbs-box-short"
+          css:if-not-content="div.wfstatus" />
+    <replace css:theme-children="ol.kofa-breadcrumbs"
+             css:content-children="ul.breadcrumb" />
+
+    <!-- student status -->
+    <drop css:theme="div.kofa-student-status-box"
+          css:if-not-content="div.wfstatus" />
+    <replace css:theme-children="div.wfstatus"
+             css:content-children="div.wfstatus" />
+
+    <!-- sidebar -->
+
+    <drop css:theme="div.kofa-sidebar"
+          css:if-not-content="div.sidebar" />
+    <replace css:theme-children="div.sidebar-nav"
+             css:content-children="div.sidebar" />
+
+    <!-- content -->
+
+    <!-- drop one of the both content areas, depending on sidebar -->
+
+    <drop css:theme="div.kofa-content-narrow"
+          css:if-not-content="div.sidebar" />
+    <drop css:theme="div.kofa-content-wide"
+          css:if-content="div.sidebar" />
+    <replace css:theme-children="div.kofa-content"
+             css:content-children="div.kofa-content" />
+
+
+    <!-- scripts -->
+    <drop css:theme="script.kofa-script-tooltip"
+          css:if-not-content="[data-toggle=tooltip]" />
+
+    <drop css:theme="script.kofa-script-datepicker"
+          css:if-not-content="input.datepicker-le-year" />
+
+    <drop css:theme="script.kofa-script-datatable"
+          css:if-not-content="table.kofa-data-table" />
+
+<!--
+    <after css:theme-children="html head"
+           css:content="html head meta" />
+-->
+<!--
+    <after css:theme-children="html head"
+           css:content="html head base" />
+-->
+
+    <!-- top navigation -->
+    <!-- left top navigation -->
+<!--
+    <replace css:theme-children="ul.kofa-navbar-left"
+             css:content-children="ul.kofa-navbar-left" />
+-->
+
+    <!-- Make all data tables responsive -->
+
+    <replace css:content="table.kofa-data-table">
+      <div class="table-responsive">
+        <xsl:apply-templates css:select="table.kofa-data-table" mode="raw"/>
+      </div>
+    </replace>
+
+   </rules>
+
+</rules>
Index: main/waeup.imostate/trunk/layout/static/custom.css
===================================================================
--- main/waeup.imostate/trunk/layout/static/custom.css	(revision 11309)
+++ main/waeup.imostate/trunk/layout/static/custom.css	(revision 11309)
@@ -0,0 +1,36 @@
+a {
+  color: #398240;
+}
+
+a:hover {
+  color: #215026;
+}
+
+.topbar a {
+    color: white;
+}
+
+.navbar-inverse {
+  background-color: #215026;
+  background-image: -webkit-linear-gradient(top, #215026 0%, #398240 100%);
+  background-image: linear-gradient(to bottom, #215026 0%, #398240 100%);
+  background-repeat: repeat-x;
+}
+
+.navbar-inverse .navbar-brand,
+.navbar-inverse .navbar-nav > li > a {
+  color: #cccccc;
+}
+
+.navbar-inverse .navbar-nav > li > a:hover,
+.navbar-inverse .navbar-nav > .active > a,
+.navbar-inverse .navbar-nav > .active > a:hover,
+.navbar-inverse .navbar-nav > .active > a:focus {
+  color: #ffffff;
+  background-color: #398240;
+  background-image: none;
+  background-image: none;
+  filter: none;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
Index: main/waeup.imostate/trunk/layout/theme.html
===================================================================
--- main/waeup.imostate/trunk/layout/theme.html	(revision 11309)
+++ main/waeup.imostate/trunk/layout/theme.html	(revision 11309)
@@ -0,0 +1,533 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <title>Base · Twitter Bootstrap</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta name="description" content="">
+    <meta name="author" content="">
+
+    <!-- stylesheets -->
+    <link href="static/bootstrap/css/bootstrap.min.css"
+          rel="stylesheet">
+    <link href="static/bootstrap/css/bootstrap-theme.min.css"
+          rel="stylesheet">
+    <link href="static/css/jquery.dataTables.css"
+          rel="stylesheet">
+    <link href="static/css/jquery-ui.css"
+          rel="stylesheet">
+    <link href="static/css/base.css" rel="stylesheet">
+    <link href="static_custom/custom.css" rel="stylesheet">
+
+    <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
+    <!--[if lt IE 9]>
+      <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
+      <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
+      <link href="static/css/IE8.css" rel="stylesheet">
+    <![endif]-->
+
+    <script src="static/js/kofa-recaptcha_white.js"></script>
+
+    <!-- icons -->
+    <link rel="shortcut icon" href="static_custom/favicon.ico">
+
+
+  </head>
+
+  <body id="kofa-body">
+
+    <div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
+      <div class="navbar-header">
+        <button type="button" class="navbar-toggle" data-toggle="collapse"
+                  data-target="#kofa-primary-nav">
+          <span class="icon-bar"></span>
+          <span class="icon-bar"></span>
+          <span class="icon-bar"></span>
+        </button>
+        <a class="navbar-brand active kofa-brand-link" href="/">WAeUP.Kofa</a>
+      </div>
+      <div class="navbar-collapse collapse"
+           id="kofa-primary-nav">
+        <ul class="nav navbar-nav kofa-navbar-left">
+          <li class="active"><a href="#">Academics</a></li>
+          <li><a href="#about">Applicants</a></li>
+          <li><a href="#contact">Students</a></li>
+          <li><a href="#contact">Hostels</a></li>
+          <li class="dropdown">
+            <a href="#" class="dropdown-toggle"
+               data-toggle="dropdown">My Data
+               <b class="caret"></b>
+            <ul class="dropdown-menu">
+              <li><a href="#">Base Data</a></li>
+              <li><a href="#">Clearance Data</a></li>
+              <li><a href="#">Personal Data</a></li>
+              <li><a href="#">History</a></li>
+            </ul>
+          </li>
+        </ul>
+
+        <ul class="nav navbar-nav navbar-right kofa-navbar-right">
+          <li class="dropdown kofa-langselect">
+            <a href="#" class="dropdown-toggle"
+               data-toggle="dropdown">
+               <img src="static/img/earth.png" />
+            <ul class="dropdown-menu">
+              <li class="kofa-language"><a href="#">English</a></li>
+              <li class="kofa-language"><a href="#">Français</a></li>
+              <li class="kofa-language"><a href="#">Deutsch</a></li>
+              <li class="kofa-language"><a href="#">Hausa</a></li>
+              <li class="kofa-language"><a href="#">Yoruba</a></li>
+              <li class="kofa-language"><a href="#">Igbo</a></li>
+            </ul>
+          </li>
+          <li><a href="#">Contact</a></li>
+          <li><a href="#">Logout</a></li>
+        </ul>
+      </div><!--/.nav-collapse -->
+    </div><!-- /.navbar -->
+
+    <div class="container">
+
+      <div class="row">
+        <div class="col-md-12 container kofa-breadcrumbs-box-long">
+          <div class="well">
+            <ol class="breadcrumb kofa-breadcrumbs">
+              <li>
+                <a href="#">
+                  Home
+                </a>
+              </li>
+              <li>
+                <a href="#">
+                  Subtopic 1
+                </a>
+              </li>
+              <li>
+                <a href="#">
+                  Subtopic 2
+                </a>
+              </li>
+              <li>
+                <a href="#">
+                  Subtopic 3
+                </a>
+              </li>
+            </ol><!-- /kofa-breadcrumbs -->
+          </div> <!-- /well -->
+        </div> <!-- /kofa-breadcrumbs-box-short -->
+      </div>
+
+      <div class="row">
+        <div class="col-md-8 container kofa-breadcrumbs-box-short">
+          <div class="well">
+            <ol class="breadcrumb kofa-breadcrumbs">
+              <li>
+                <a href="#">
+                  Home
+                </a>
+              </li>
+              <li>
+                <a href="#">
+                  Subtopic 1
+                </a>
+              </li>
+              <li>
+                <a href="#">
+                  Subtopic 2
+                </a>
+              </li>
+              <li>
+                <a href="#">
+                  Subtopic 3
+                </a>
+              </li>
+            </ol><!-- /kofa-breadcrumbs -->
+          </div> <!-- /well -->
+        </div> <!-- /kofa-breadcrumbs-box-short -->
+
+        <div class="col-md-4 container kofa-student-status-box">
+          <div class="well">
+            <div class="wfstatus">
+                K1000000 &bull; quite long student status
+            </div> <!-- /wfstatus -->
+          </div> <!-- /well -->
+        </div> <!-- /kofa-student-status-box -->
+
+      </div> <!-- /row -->
+
+      <div class="row">
+        <div class="col-md-2 kofa-sidebar">
+          <div class="sidebar-nav well">
+            <div>
+              <div class="kofa-sidebar-title">Student Name</div>
+              <ul class="nav">
+                <li><a href="#">Base Data</a></li>
+                <li><a href="#">Clearance Data</a></li>
+                <li><a href="#">Personal Data</a></li>
+                <li><a href="#">Study Course</a></li>
+                <li><a href="#">Payments</a></li>
+                <li><a href="#">Accommodation</a></li>
+                <li><a href="#">History</a></li>
+              </ul>
+            </div>
+            <div>
+              <div class="kofa-sidebar-title">Manager Name</div>
+              <ul class="nav">
+                <li><a href="#">Portal Configuration</a></li>
+                <li><a href="#">Portal Users</a></li>
+                <li><a href="#">Data Center</a></li>
+                <li><a href="#">Reports</a></li>
+                <li><a href="#">Access Codes</a></li>
+                <li><a href="#">My Preferences</a></li>
+                <li><a href="#">My Roles</a></li>
+              </ul>
+            </div>
+          </div> <!-- /well -->
+        </div> <!-- /kofa-sidebar -->
+
+        <div class="col-md-10 content kofa-content-narrow">
+          <div class="well">
+            <div class="kofa-content">
+              <div class="actionbar">
+                <a class="btn btn-default" href="">
+                  <img src="static/img/actionicon_modify.png"
+                       alt="Manage" />
+                       Manage
+                </a>
+                <a class="btn btn-default" href="">
+                  <img src="static/img/actionicon_trigtrans.png"
+                       alt="Trigger transition" />
+                       Trigger transition
+                </a>
+              </div>
+              <div class="alert alert-danger">
+                  There were errors ...
+              </div>
+              <div class="alert alert-warning">
+                  Be careful ...
+              </div>
+              <div class="alert alert-success">
+                  You have successfully ...
+              </div>
+              <h1>WAeUP.Kofa Theme</h1>
+
+              <p class="kofa-content-desc">
+                A sample Diazo theme for WAeUP.Kofa
+                <br />
+                Fusce dapibus, tellus ac cursus commodo.
+              </p>
+              <p>
+                Donec id elit non mi porta gravida at eget metus. Fusce
+                dapibus, tellus ac cursus commodo, tortor mauris
+                condimentum nibh, ut fermentum massa justo sit amet
+                risus. Etiam porta sem malesuada magna mollis
+                euismod. Donec sed odio dui.
+              </p>
+              <img src="static/img/bg.png" />
+
+              <!-- Tabs... -->
+              <br /><br />
+              <h3>Sample Tabs</h3>
+              <ul id="tabs" class="tabs nav nav-tabs" data-tabs="tabs">
+                <li class="active">
+                  <a href="#tab-1" data-toggle="tab">Tab 1</a>
+                </li>
+                <li class="">
+                  <a href="#tab-2" data-toggle="tab">Tab 2</a>
+                </li>
+                <li class="">
+                  <a href="#tab-3" data-toggle="tab">Tab 3</a>
+                </li>
+              </ul>
+              <div class="tab-content">
+                <div id="tab-1" class="tab-pane active">
+                  <br />
+                  <p>
+                    Tab 1 content...<br />  Donec id elit non mi porta
+                    gravida at eget metus. Fusce dapibus, tellus ac
+                    cursus commodo.
+                  </p>
+                </div>
+                <div id="tab-2" class="tab-pane">
+                  <br />
+                  <p>
+                    Tab 2 content...<br />  Tortor mauris condimentum
+                    nibh, ut fermentum massa justo sit amet
+                    risus. Etiam porta sem malesuada.
+                  </p>
+                </div>
+                <div id="tab-3" class="tab-pane">
+                  <br />
+                  <p>
+                    Tab 3 content...<br /> Magna mollis euismod. Donec
+                    sed odio dui.
+                  </p>
+                </div>
+
+                <br>
+
+                <h3>Sample Tooltip</h3>
+                <br>Move the mouse over the button:
+                <div class="btn btn-default" data-toggle="tooltip"
+                     title="This is a tooltip">Sample Tooltip
+                </div>
+                <br><br>
+
+              </div><!-- /tab-content -->
+            </div> <!-- /kofa-content -->
+          </div> <!-- /well -->
+        </div> <!-- /kofa-content-narrow -->
+      </div> <!-- /row -->
+
+      <div class="row">
+        <div class="col-md-12 content kofa-content-wide">
+          <div class="well kofa-content">
+            <div class="actionbar">
+              <a class="btn btn-default" href="">
+                <img src="static/img/actionicon_modify.png"
+                     alt="Manage" />
+                     Manage
+              </a>
+              <a class="btn btn-default" href="">
+                <img src="static/img/actionicon_trigtrans.png"
+                     alt="Trigger transition" />
+                     Trigger transition
+              </a>
+            </div>
+            <div class="hero-unit">
+              <h1>Hello there!</h1>
+              <p>this is...</p>
+            </div>
+            <div>...content that spans the whole page.</div>
+            <br><br>
+            <div id="#sampleform">
+              <form method="post">
+                <fieldset id="form-fieldset">
+                  <legend>A Sample Form</legend>
+                  <div class="form-group variable-form">
+                    <label>Some Label</label>
+                    <input type="text" class="textType"
+                           name="myinput[]" placeholder="A name..." />
+                  </div>
+                  <button type="submit" class="btn rowadd btn-default">
+                    Add row
+                  </button>
+                  <br />
+                  <button type="submit" class="btn btn-primary">Save</button>
+                </fieldset>
+              </form>
+            </div> <!-- /sampleform -->
+            <br><br>
+            <h3>A Sample Data Table</h3>
+            <div class="table-responsive">
+              <table id="#dadatable" class="table table-striped dataTable">
+                <thead>
+                  <tr>
+                    <th>Id</th>
+                    <th>Name</th>
+                    <th>Portal Roles</th>
+                    <th>Local Roles</th>
+                    <th></th>
+                  </tr>
+                </thead><tbody><tr><td>admin</td>
+                    <td>John</td>
+                    <td nowrap="nowrap">Portal Manager <br />
+                      Academics Officer (view only)
+                    </td>
+                    <td>Owner</td>
+                    <td class="text-right">
+                      <form method="post">
+                        <input type="hidden" name="userid" value="admin" />
+                        <input class="btn btn-sm btn-primary" type="submit"
+                               name="manage" value="Manage" />
+                        <input class="btn btn-sm btn-default" type="submit"
+                               name="delete" value="Remove" />
+                      </form>
+                    </td>
+                  </tr>
+                  <tr>
+                    <td>tester</td>
+                    <td>Vitali</td>
+                    <td nowrap="nowrap">Academics Officer (view only)</td>
+                    <td>Owner</td>
+                    <td class="text-right">
+                      <form method="post">
+                        <input type="hidden" name="userid" value="your_id" />
+                        <input class="btn btn-sm btn-primary" type="submit"
+                               name="manage" value="Manage" />
+                        <input class="btn btn-sm btn-default" type="submit"
+                               name="delete" value="Remove" />
+                      </form>
+                    </td>
+                  </tr>
+                </tbody>
+              </table>
+            </div>
+
+            <br><br>
+            <h3>A Sample Inline Form</h3>
+            <form method="POST" class="form-inline">
+            <br />
+              <div class="form-group">
+                <input class="btn btn-primary" type="submit" name="search"
+                  value="Find student(s)" />
+              </div>
+              <div class="form-group">
+                <select name="searchtype" class="form-control">
+                  <option value="student_id">with id</option>
+                  <option value="fullname">with name</option>
+                  <option value="reg_number">with registration number</option>
+                  <option value="matric_number">with matric number</option>
+                  <option value="current_session">in session</option>
+                  <option value="depcode">in department</option>
+                  <option value="current_mode">in study mode</option>
+                  <option value="suspended">
+                    with deactivated account (search term omitted)
+                  </option>
+                  <option value="transcript">
+                    who requested transcript (search term omitted)
+                  </option>
+                </select>
+              </div>
+              <div class="form-group">
+                <input type="text" class="form-control" name="searchterm" />
+              </div>
+            </form>
+
+            <br><br>
+            <h3>A Sample Display Form Table</h3>
+            <table class="form-table">
+              <tbody>
+                <tr>
+                  <td class="fieldname">Code:</td>
+                  <td>app2012</td>
+                </tr>
+                <tr>
+                 <td class="fieldname">Application Target:</td>
+                  <td>General Studies</td>
+                </tr>
+                 <tr>
+                  <td class="fieldname">
+                    Application Mode (Donec id elit non mi porta gravida.):
+                  </td>
+                  <td>Create Application Records</td>
+                </tr>
+              </tbody>
+            </table>
+
+            <br><br>
+            <h3>A Sample Edit/Manage Form Table</h3>
+            <table class="form-table">
+              <tbody>
+                <tr>
+                  <td class="fieldname">Code:</td>
+                  <td>app2012</td>
+                </tr>
+                <tr>
+                  <td class="fieldname">* Title:</td>
+                  <td>
+                    <input class="textType" id="form.title" name="form.title"
+                           size="20" type="text"
+                           value="General Studies 2012/2013" />
+                  </td>
+                </tr>
+                <tr>
+                  <td class="fieldname">Any phone number:</td>
+                  <td>
+                    <select id="form.phone.country" name="form.phone.country"
+                              size="1" class="phone-input">
+                      <option value="+234">Nigeria (+234)</option>
+                      <option value="+49">Germany (+49)</option>
+                      <option value="+1">U.S. (+1)</option>
+                    </select>-
+                    <input class=" phone-input textType" id="form.phone.area"
+                           name="form.phone.area" size="20" type="text"
+                           value="" />-
+                    <input class=" phone-input textType" id="form.phone.ext"
+                           name="form.phone.ext" size="20" type="text" value="" />
+                  </td>
+                </tr>
+                <tr>
+                  <td class="fieldname">Any text field:</td>
+                  <td>
+                      <textarea id="any_id"
+                          name="any_name" rows="5">Placeholder text</textarea>
+                  </td>
+                </tr>
+                <tr>
+                  <td class="fieldname">*
+                      Application Mode
+                      (A select field coming from zope.formlib):
+                  </td>
+                  <td>
+                    <div class="value">
+                      <select id="form.mode" name="form.mode" size="1">
+                        <option selected="selected" value="create">
+                          Create Application Records
+                        </option>
+                        <option value="update">Update Application Records
+                        </option>
+                      </select>
+                    </div>
+                    <input name="form.mode-empty-marker"
+                           type="hidden" value="1" />
+                  </td>
+                </tr>
+                <tr>
+                  <td class="fieldname">A datepicker field:</td>
+                  <td>
+                    <input class="datepicker-le-year textType"
+                                 id="form.any_date" name="form.any_date"
+                                 size="20" type="text" value="" />
+                  </td>
+                </tr>
+
+                <tr>
+                  <td class="fieldname">
+                      A select field in Kofa pagetemplates:
+                  </td>
+                  <td>
+                      <select id="any_id" name="any_name" size="1"
+                              class="form-control half">
+                        <option selected="selected" value="create">
+                            Create Application Records
+                        </option>
+                        <option value="update">
+                            Update Application Records
+                        </option>
+                      </select>
+                  </td>
+                </tr>
+              </tbody>
+            </table>
+          </div> <!-- /well kofa-content-->
+        </div> <!-- /kofa-content-wide -->
+      </div> <!-- /row -->
+      <div class="footer">
+        <p class="credit muted text-right">
+          Kofa - Student Management System<br />
+          Copyright &copy; WAeUP Group 2014
+        </p>
+      </div>
+    </div> <!-- /container -->
+
+    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
+    <script src="static/bootstrap/js/bootstrap.min.js"></script>
+    <script src="static/js/kofa-tooltip.js"></script>
+    <script src="static/js/kofa-button-rowadd.js"></script>
+    <script src="static/js/kofa-toggleall.js"></script>
+    <script class="kofa-script-datatable"
+        src="static/js/jquery.dataTables.min.js">
+    </script>
+    <script class="kofa-script-datatable"
+        src="static/js/kofa-datatables.js">
+    </script>
+    <script class="kofa-script-datepicker"
+        src="static/js/jquery-ui.min.js">
+    </script>
+    <script class="kofa-script-datepicker"
+        src="static/js/kofa-datepicker.js">
+    </script>
+
+  </body>
+</html>
Index: main/waeup.imostate/trunk/setup.py
===================================================================
--- main/waeup.imostate/trunk/setup.py	(revision 11308)
+++ main/waeup.imostate/trunk/setup.py	(revision 11309)
@@ -2,5 +2,5 @@
 from setuptools import setup, find_packages
 
-version = '0.1.1dev'
+version = '1.0dev'
 
 install_requires =[
@@ -9,6 +9,6 @@
     'grokui.admin',
     'grokcore.startup',
-    'waeup.kofa',
-    'kofacustom.nigeria',
+    'waeup.kofa >= 1.0',
+    'kofacustom.nigeria >= 1.0',
     ],
 
@@ -21,4 +21,9 @@
     'dolmen.beaker',
     ]
+
+diazo_require = [
+    'diazo',
+    'webob',
+]
 
 tests_require = [
@@ -86,9 +91,7 @@
         docs = docs_require,
         beaker = beaker_require,
+        diazo = diazo_require,
         ),
       entry_points="""
-      # Add entry points here
-      [hurry.resource.libraries]
-      waeup_custom = waeup.imostate.browser.resources:waeup_custom
       [console_scripts]
       kofa-debug = grokcore.startup:interactive_debug_prompt
Index: main/waeup.imostate/trunk/src/waeup/imostate/browser/resources.py
===================================================================
--- main/waeup.imostate/trunk/src/waeup/imostate/browser/resources.py	(revision 11308)
+++ 	(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/waeup.imostate/trunk/src/waeup/imostate/browser/static/custom_theme.css
===================================================================
--- main/waeup.imostate/trunk/src/waeup/imostate/browser/static/custom_theme.css	(revision 11308)
+++ 	(revision )
@@ -1,72 +1,0 @@
-.topbar-inner, .topbar .fill {
-  background-color: #398240;
-  background-image: -moz-linear-gradient(center top , #215026, #398240);
-  background-image: -khtml-gradient(linear, left top, left bottom, from(#215026), to(#398240));
-  background-image: -moz-linear-gradient(top, #215026, #398240);
-  background-image: -ms-linear-gradient(top, #215026, #398240);
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #215026), color-stop(100%, #398240));
-  background-image: -webkit-linear-gradient(top, #215026, #398240);
-  background-image: -o-linear-gradient(top, #215026, #398240);
-  background-image: linear-gradient(top, #215026, #398240);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#215026', endColorstr='#398240', GradientType=0);
-}
-
-.topbar div > ul .active > a, .nav .active > a {
-  background-color: #398240;
-}
-
-.topbar h3 a:hover, .topbar .brand:hover, .topbar ul .active > a {
-  background-color: #398240;
-}
-
-.topbar div > ul a:hover, .nav a:hover {
-  background-color: #398240;
-}
-
-
-.topbar div > ul .menu-dropdown,
-.nav .menu-dropdown,
-.topbar div > ul .dropdown-menu,
-.nav .dropdown-menu {
-  background-color: #398240;
-}
-
-.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: #398240;
-}
-
-body {
-  background-color: #f3eff2;
-}
-
-.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: #215026;
-  background-repeat: repeat-x;
-  background-image: -khtml-gradient(linear, left top, left bottom, from(#398240), to(#191919));
-  background-image: -moz-linear-gradient(top, #215026, #215026);
-  background-image: -ms-linear-gradient(top, #215026, #215026);
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #215026), color-stop(100%, #215026));
-  background-image: -webkit-linear-gradient(top, #215026, #215026);
-  background-image: -o-linear-gradient(top, #215026, #215026);
-  background-image: linear-gradient(top, #215026, #215026);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#215026', endColorstr='#215026', GradientType=0);
-  color: #ffffff;
-}
-
-a {
-  color: #398240;
-}
-
-a:hover {
-  color: #215026;
-}
Index: main/waeup.imostate/trunk/src/waeup/imostate/browser/tests.py
===================================================================
--- main/waeup.imostate/trunk/src/waeup/imostate/browser/tests.py	(revision 11308)
+++ main/waeup.imostate/trunk/src/waeup/imostate/browser/tests.py	(revision 11309)
@@ -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('...ImoState 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/waeup.imostate/trunk/src/waeup/imostate/browser/theming.py
===================================================================
--- main/waeup.imostate/trunk/src/waeup/imostate/browser/theming.py	(revision 11308)
+++ 	(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 waeup.imostate.browser.resources import custom_theme, favicon
-
-from waeup.imostate.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'ImoState Theme')
-
-    def getResources(self):
-        return [custom_theme, favicon]
Index: main/waeup.imostate/trunk/versions.cfg
===================================================================
--- main/waeup.imostate/trunk/versions.cfg	(revision 11308)
+++ main/waeup.imostate/trunk/versions.cfg	(revision 11309)
@@ -7,6 +7,4 @@
 
 [versions]
-waeup.kofa = 0.2.1
-kofacustom.nigeria = 0.1
 collective.recipe.sphinxbuilder = 0.7.0
 hurry.workflow = 0.11
@@ -133,4 +131,23 @@
 pycryptopp = 0.6.0.1206569328141510525648634803928199668821045408958
 
-# Added by buildout at 2014-02-22 14:45:15.540521
+# Added by buildout at 2014-02-20 10:44:36.832966
+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:41:09.587051
 zc.zodbrecipes = 2.0.0
