[Checkins] SVN: grokapps/grokformdemo/trunk/ Initial Import

Christian Klinger cklinger at novareto.de
Tue Sep 15 03:39:35 EDT 2009


Log message for revision 103989:
  Initial Import
  

Changed:
  A   grokapps/grokformdemo/trunk/.installed.cfg
  A   grokapps/grokformdemo/trunk/bootstrap.py
  A   grokapps/grokformdemo/trunk/buildout.cfg
  A   grokapps/grokformdemo/trunk/etc/
  A   grokapps/grokformdemo/trunk/etc/README.txt
  A   grokapps/grokformdemo/trunk/etc/debug.ini.in
  A   grokapps/grokformdemo/trunk/etc/deploy.ini.in
  A   grokapps/grokformdemo/trunk/etc/site.zcml.in
  A   grokapps/grokformdemo/trunk/etc/zdaemon.conf.in
  A   grokapps/grokformdemo/trunk/etc/zope.conf.in
  A   grokapps/grokformdemo/trunk/setup.py
  A   grokapps/grokformdemo/trunk/src/
  A   grokapps/grokformdemo/trunk/src/grokformdemo/
  A   grokapps/grokformdemo/trunk/src/grokformdemo/__init__.py
  A   grokapps/grokformdemo/trunk/src/grokformdemo/ajax.py
  A   grokapps/grokformdemo/trunk/src/grokformdemo/app.py
  A   grokapps/grokformdemo/trunk/src/grokformdemo/app.txt
  A   grokapps/grokformdemo/trunk/src/grokformdemo/app_templates/
  A   grokapps/grokformdemo/trunk/src/grokformdemo/app_templates/index.pt
  A   grokapps/grokformdemo/trunk/src/grokformdemo/app_templates/mylayout.pt
  A   grokapps/grokformdemo/trunk/src/grokformdemo/configure.zcml
  A   grokapps/grokformdemo/trunk/src/grokformdemo/ftesting.zcml
  A   grokapps/grokformdemo/trunk/src/grokformdemo/js/
  A   grokapps/grokformdemo/trunk/src/grokformdemo/js/jquery.tools.min.js
  A   grokapps/grokformdemo/trunk/src/grokformdemo/js/mytooltip.js
  A   grokapps/grokformdemo/trunk/src/grokformdemo/message/
  A   grokapps/grokformdemo/trunk/src/grokformdemo/message/__init__.py
  A   grokapps/grokformdemo/trunk/src/grokformdemo/message/browser.py
  A   grokapps/grokformdemo/trunk/src/grokformdemo/message/display.pt
  A   grokapps/grokformdemo/trunk/src/grokformdemo/message/formlayout.py
  A   grokapps/grokformdemo/trunk/src/grokformdemo/message/formlayout_templates/
  A   grokapps/grokformdemo/trunk/src/grokformdemo/message/formlayout_templates/formlayout.pt
  A   grokapps/grokformdemo/trunk/src/grokformdemo/message/interfaces.py
  A   grokapps/grokformdemo/trunk/src/grokformdemo/message/message.py
  A   grokapps/grokformdemo/trunk/src/grokformdemo/message/what-values.csv
  A   grokapps/grokformdemo/trunk/src/grokformdemo/static/
  A   grokapps/grokformdemo/trunk/src/grokformdemo/static/README.txt
  A   grokapps/grokformdemo/trunk/src/grokformdemo/static/my.css
  A   grokapps/grokformdemo/trunk/src/grokformdemo/tests.py
  A   grokapps/grokformdemo/trunk/src/grokformdemo/wizard/
  A   grokapps/grokformdemo/trunk/src/grokformdemo/wizard/__init__.py
  A   grokapps/grokformdemo/trunk/src/grokformdemo/wizard/person.py
  A   grokapps/grokformdemo/trunk/src/grokformdemo/wizard/wizard.py
  A   grokapps/grokformdemo/trunk/src/grokformdemo.egg-info/
  A   grokapps/grokformdemo/trunk/src/grokformdemo.egg-info/PKG-INFO
  A   grokapps/grokformdemo/trunk/src/grokformdemo.egg-info/SOURCES.txt
  A   grokapps/grokformdemo/trunk/src/grokformdemo.egg-info/dependency_links.txt
  A   grokapps/grokformdemo/trunk/src/grokformdemo.egg-info/entry_points.txt
  A   grokapps/grokformdemo/trunk/src/grokformdemo.egg-info/not-zip-safe
  A   grokapps/grokformdemo/trunk/src/grokformdemo.egg-info/requires.txt
  A   grokapps/grokformdemo/trunk/src/grokformdemo.egg-info/top_level.txt
  A   grokapps/grokformdemo/trunk/versions.cfg

-=-
Added: grokapps/grokformdemo/trunk/.installed.cfg
===================================================================
--- grokapps/grokformdemo/trunk/.installed.cfg	                        (rev 0)
+++ grokapps/grokformdemo/trunk/.installed.cfg	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,413 @@
+[buildout]
+installed_develop_eggs = /Users/cklinger/work/demos/grokformdemo/develop-eggs/grokformdemo.egg-link
+parts = i18n test data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app
+
+[i18n]
+__buildout_installed__ = /Users/cklinger/work/demos/grokformdemo/bin/i18nextract
+	/Users/cklinger/work/demos/grokformdemo/bin/i18nmergeall
+	/Users/cklinger/work/demos/grokformdemo/bin/i18nstats
+__buildout_signature__ = z3c.recipe.i18n-0.5.0-py2.5.egg zope.configuration-3.4.0-py2.5.egg zope.testing-3.6.0-py2.5.egg zc.recipe.egg-1.1.0-py2.5.egg zc.buildout-1.4.1-py2.5.egg setuptools-0.6c9-py2.5.egg ZConfig-2.5.1-py2.5.egg zope.schema-3.4.0-py2.5.egg zope.interface-3.4.1-py2.5-macosx-10.5-i386.egg zope.i18nmessageid-3.4.3-py2.5-macosx-10.5-i386.egg zope.deprecation-3.4.0-py2.5.egg zc.buildout-1.4.1-py2.5.egg zope.event-3.4.0-py2.5.egg
+_b = /Users/cklinger/work/demos/grokformdemo/bin
+_d = /Users/cklinger/work/demos/grokformdemo/develop-eggs
+_e = /Users/cklinger/.buildout/eggs
+bin-directory = /Users/cklinger/work/demos/grokformdemo/bin
+develop-eggs-directory = /Users/cklinger/work/demos/grokformdemo/develop-eggs
+domain = grokformdemo
+eggs = grokformdemo
+	zope.app.locales
+eggs-directory = /Users/cklinger/.buildout/eggs
+executable = /Users/cklinger/work/demos/bin/python2.5
+find-links = http://download.zope.org/distribution/
+output = src/grokformdemo/locales
+packages = grokformdemo
+recipe = z3c.recipe.i18n:i18n
+zcml = 
+
+[test]
+__buildout_installed__ = /Users/cklinger/work/demos/grokformdemo/parts/test
+	/Users/cklinger/work/demos/grokformdemo/bin/test
+__buildout_signature__ = zc.recipe.testrunner-1.0.0-py2.5.egg zc.recipe.egg-1.1.0-py2.5.egg setuptools-0.6c9-py2.5.egg zope.testing-3.6.0-py2.5.egg zc.buildout-1.4.1-py2.5.egg zc.buildout-1.4.1-py2.5.egg zope.interface-3.4.1-py2.5-macosx-10.5-i386.egg
+_b = /Users/cklinger/work/demos/grokformdemo/bin
+_d = /Users/cklinger/work/demos/grokformdemo/develop-eggs
+_e = /Users/cklinger/.buildout/eggs
+bin-directory = /Users/cklinger/work/demos/grokformdemo/bin
+defaults = ['--tests-pattern', '^f?tests$', '-v']
+develop-eggs-directory = /Users/cklinger/work/demos/grokformdemo/develop-eggs
+eggs = grokformdemo
+eggs-directory = /Users/cklinger/.buildout/eggs
+executable = /Users/cklinger/work/demos/bin/python2.5
+find-links = http://download.zope.org/distribution/
+location = /Users/cklinger/work/demos/grokformdemo/parts/test
+recipe = zc.recipe.testrunner
+script = /Users/cklinger/work/demos/grokformdemo/bin/test
+
+[data]
+__buildout_installed__ = 
+__buildout_signature__ = zc.recipe.filestorage-1.0.1-py2.5.egg setuptools-0.6c9-py2.5.egg zope.testing-3.6.0-py2.5.egg zc.buildout-1.4.1-py2.5.egg zope.interface-3.4.1-py2.5-macosx-10.5-i386.egg
+blob-dir = 
+path = /Users/cklinger/work/demos/grokformdemo/parts/data/Data.fs
+recipe = zc.recipe.filestorage
+zconfig = <zodb>
+	%(__buildout_space__)s%(__buildout_space__)s<filestorage>
+	%(__buildout_space__)s%(__buildout_space__)s%(__buildout_space__)s%(__buildout_space__)spath /Users/cklinger/work/demos/grokformdemo/parts/data/Data.fs
+	%(__buildout_space__)s%(__buildout_space__)s</filestorage>
+	</zodb>%(__buildout_space_n__)s
+
+[log]
+__buildout_installed__ = 
+__buildout_signature__ = zc.recipe.filestorage-1.0.1-py2.5.egg setuptools-0.6c9-py2.5.egg zope.testing-3.6.0-py2.5.egg zc.buildout-1.4.1-py2.5.egg zope.interface-3.4.1-py2.5-macosx-10.5-i386.egg
+blob-dir = 
+path = /Users/cklinger/work/demos/grokformdemo/parts/log/Data.fs
+recipe = zc.recipe.filestorage
+zconfig = <zodb>
+	%(__buildout_space__)s%(__buildout_space__)s<filestorage>
+	%(__buildout_space__)s%(__buildout_space__)s%(__buildout_space__)s%(__buildout_space__)spath /Users/cklinger/work/demos/grokformdemo/parts/log/Data.fs
+	%(__buildout_space__)s%(__buildout_space__)s</filestorage>
+	</zodb>%(__buildout_space_n__)s
+
+[zpasswd]
+__buildout_installed__ = /Users/cklinger/work/demos/grokformdemo/bin/zpasswd
+__buildout_signature__ = z3c.recipe.dev-0.5.4-py2.5.egg zope.testing-3.6.0-py2.5.egg zc.recipe.egg-1.1.0-py2.5.egg zc.buildout-1.4.1-py2.5.egg setuptools-0.6c9-py2.5.egg ZConfig-2.5.1-py2.5.egg zope.interface-3.4.1-py2.5-macosx-10.5-i386.egg zc.buildout-1.4.1-py2.5.egg
+_b = /Users/cklinger/work/demos/grokformdemo/bin
+_d = /Users/cklinger/work/demos/grokformdemo/develop-eggs
+_e = /Users/cklinger/.buildout/eggs
+bin-directory = /Users/cklinger/work/demos/grokformdemo/bin
+develop-eggs-directory = /Users/cklinger/work/demos/grokformdemo/develop-eggs
+eggs = grokformdemo
+eggs-directory = /Users/cklinger/.buildout/eggs
+executable = /Users/cklinger/work/demos/bin/python2.5
+find-links = http://download.zope.org/distribution/
+location = /Users/cklinger/work/demos/grokformdemo/parts/zpasswd
+method = main
+module = zope.app.server.zpasswd
+recipe = z3c.recipe.dev:script
+script = /Users/cklinger/work/demos/grokformdemo/bin/zpasswd
+
+[base]
+__buildout_installed__ = /Users/cklinger/work/demos/grokformdemo/parts/base
+__buildout_signature__ = zerokspot.recipe.git-0.4.2-py2.5.egg zc.buildout-1.4.1-py2.5.egg setuptools-0.6c9-py2.5.egg
+as_egg = True
+location = /Users/cklinger/work/demos/grokformdemo/parts/base
+newest = True
+recipe = zerokspot.recipe.git
+repository = git://devel.dolmen-project.org/megrok.z3cform.base.git
+
+[layout]
+__buildout_installed__ = /Users/cklinger/work/demos/grokformdemo/parts/layout
+__buildout_signature__ = zerokspot.recipe.git-0.4.2-py2.5.egg zc.buildout-1.4.1-py2.5.egg setuptools-0.6c9-py2.5.egg
+as_egg = True
+location = /Users/cklinger/work/demos/grokformdemo/parts/layout
+newest = True
+recipe = zerokspot.recipe.git
+repository = git://devel.dolmen-project.org/megrok.z3cform.layout.git
+
+[wizard]
+__buildout_installed__ = /Users/cklinger/work/demos/grokformdemo/parts/wizard
+__buildout_signature__ = zerokspot.recipe.git-0.4.2-py2.5.egg zc.buildout-1.4.1-py2.5.egg setuptools-0.6c9-py2.5.egg
+as_egg = True
+location = /Users/cklinger/work/demos/grokformdemo/parts/wizard
+newest = True
+recipe = zerokspot.recipe.git
+repository = git://devel.dolmen-project.org/megrok.z3cform.wizard.git
+
+[zope_conf]
+__buildout_installed__ = /Users/cklinger/work/demos/grokformdemo/parts/etc
+	/Users/cklinger/work/demos/grokformdemo/parts/etc/zope.conf
+__buildout_signature__ = z3c.recipe.template-0.1-py2.5.egg zc.buildout-1.4.1-py2.5.egg setuptools-0.6c9-py2.5.egg
+input = etc/zope.conf.in
+output = /Users/cklinger/work/demos/grokformdemo/parts/etc/zope.conf
+recipe = z3c.recipe.template
+
+[site_zcml]
+__buildout_installed__ = /Users/cklinger/work/demos/grokformdemo/parts/etc/site.zcml
+__buildout_signature__ = z3c.recipe.template-0.1-py2.5.egg zc.buildout-1.4.1-py2.5.egg setuptools-0.6c9-py2.5.egg
+input = etc/site.zcml.in
+output = /Users/cklinger/work/demos/grokformdemo/parts/etc/site.zcml
+recipe = z3c.recipe.template
+
+[zdaemon_conf]
+__buildout_installed__ = /Users/cklinger/work/demos/grokformdemo/parts/etc/zdaemon.conf
+__buildout_signature__ = z3c.recipe.template-0.1-py2.5.egg zc.buildout-1.4.1-py2.5.egg setuptools-0.6c9-py2.5.egg
+input = etc/zdaemon.conf.in
+output = /Users/cklinger/work/demos/grokformdemo/parts/etc/zdaemon.conf
+recipe = z3c.recipe.template
+
+[deploy_ini]
+__buildout_installed__ = /Users/cklinger/work/demos/grokformdemo/parts/etc/deploy.ini
+__buildout_signature__ = z3c.recipe.template-0.1-py2.5.egg zc.buildout-1.4.1-py2.5.egg setuptools-0.6c9-py2.5.egg
+input = etc/deploy.ini.in
+output = /Users/cklinger/work/demos/grokformdemo/parts/etc/deploy.ini
+recipe = z3c.recipe.template
+
+[debug_ini]
+__buildout_installed__ = /Users/cklinger/work/demos/grokformdemo/parts/etc/debug.ini
+__buildout_signature__ = z3c.recipe.template-0.1-py2.5.egg zc.buildout-1.4.1-py2.5.egg setuptools-0.6c9-py2.5.egg
+input = etc/debug.ini.in
+output = /Users/cklinger/work/demos/grokformdemo/parts/etc/debug.ini
+recipe = z3c.recipe.template
+
+[eggbasket]
+__buildout_installed__ = 
+__buildout_signature__ = z3c.recipe.eggbasket-0.4.1-py2.5.egg zc.recipe.egg-1.1.0-py2.5.egg zc.buildout-1.4.1-py2.5.egg setuptools-0.6c9-py2.5.egg zc.buildout-1.4.1-py2.5.egg
+_d = /Users/cklinger/work/demos/grokformdemo/develop-eggs
+_e = /Users/cklinger/.buildout/eggs
+develop-eggs-directory = /Users/cklinger/work/demos/grokformdemo/develop-eggs
+eggs = grok
+eggs-directory = /Users/cklinger/.buildout/eggs
+executable = /Users/cklinger/work/demos/bin/python2.5
+find-links = http://download.zope.org/distribution/
+recipe = z3c.recipe.eggbasket
+url = http://grok.zope.org/releaseinfo/grok-eggs-1.0a4.tgz
+
+[app]
+__buildout_installed__ = /Users/cklinger/work/demos/grokformdemo/bin/grokformdemo-ctl
+	/Users/cklinger/work/demos/grokformdemo/bin/grokformdemo-debug
+	/Users/cklinger/work/demos/grokformdemo/bin/paster
+	/Users/cklinger/work/demos/grokformdemo/bin/python-console
+__buildout_signature__ = zc.recipe.egg-1.1.0-py2.5.egg setuptools-0.6c9-py2.5.egg zc.buildout-1.4.1-py2.5.egg
+_b = /Users/cklinger/work/demos/grokformdemo/bin
+_d = /Users/cklinger/work/demos/grokformdemo/develop-eggs
+_e = /Users/cklinger/.buildout/eggs
+bin-directory = /Users/cklinger/work/demos/grokformdemo/bin
+develop-eggs-directory = /Users/cklinger/work/demos/grokformdemo/develop-eggs
+eggs = grokformdemo
+	z3c.evalexception>=2.0
+	Paste
+	PasteScript
+	PasteDeploy
+eggs-directory = /Users/cklinger/.buildout/eggs
+executable = /Users/cklinger/work/demos/bin/python2.5
+find-links = http://download.zope.org/distribution/
+interpreter = python-console
+recipe = zc.recipe.egg
+
+[buildout]
+parts = test data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n
+
+[buildout]
+parts = data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test
+
+[buildout]
+parts = log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data
+
+[buildout]
+parts = zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log
+
+[buildout]
+parts = base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log zpasswd
+
+[buildout]
+parts = layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log zpasswd base
+
+[buildout]
+parts = wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log zpasswd base layout
+
+[buildout]
+parts = zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log zpasswd base layout wizard
+
+[buildout]
+parts = site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log zpasswd base layout wizard zope_conf
+
+[buildout]
+parts = zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log zpasswd base layout wizard zope_conf site_zcml
+
+[buildout]
+parts = deploy_ini debug_ini eggbasket app i18n test data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf
+
+[buildout]
+parts = debug_ini eggbasket app i18n test data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini
+
+[buildout]
+parts = eggbasket app i18n test data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini
+
+[buildout]
+installed_develop_eggs = /Users/cklinger/work/demos/grokformdemo/develop-eggs/grokformdemo.egg-link
+
+[buildout]
+parts = app i18n test data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket
+
+[buildout]
+parts = i18n test data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app
+
+[buildout]
+parts = test data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n
+
+[buildout]
+parts = data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test
+
+[buildout]
+parts = log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data
+
+[buildout]
+parts = zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log
+
+[buildout]
+parts = base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log zpasswd
+
+[buildout]
+parts = layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log zpasswd base
+
+[buildout]
+parts = wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log zpasswd base layout
+
+[buildout]
+parts = zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log zpasswd base layout wizard
+
+[buildout]
+parts = site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log zpasswd base layout wizard zope_conf
+
+[buildout]
+parts = zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log zpasswd base layout wizard zope_conf site_zcml
+
+[buildout]
+parts = deploy_ini debug_ini eggbasket app i18n test data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf
+
+[buildout]
+parts = debug_ini eggbasket app i18n test data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini
+
+[buildout]
+parts = eggbasket app i18n test data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini
+
+[buildout]
+installed_develop_eggs = /Users/cklinger/work/demos/grokformdemo/develop-eggs/grokformdemo.egg-link
+
+[buildout]
+parts = app i18n test data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket
+
+[buildout]
+parts = i18n test data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app
+
+[buildout]
+parts = test data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n
+
+[buildout]
+parts = data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test
+
+[buildout]
+parts = log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data
+
+[buildout]
+parts = zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log
+
+[buildout]
+parts = base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log zpasswd
+
+[buildout]
+parts = layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log zpasswd base
+
+[buildout]
+parts = wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log zpasswd base layout
+
+[buildout]
+parts = zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log zpasswd base layout wizard
+
+[buildout]
+parts = site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log zpasswd base layout wizard zope_conf
+
+[buildout]
+parts = zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log zpasswd base layout wizard zope_conf site_zcml
+
+[buildout]
+parts = deploy_ini debug_ini eggbasket app i18n test data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf
+
+[buildout]
+parts = debug_ini eggbasket app i18n test data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini
+
+[buildout]
+parts = eggbasket app i18n test data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini
+
+[buildout]
+installed_develop_eggs = /Users/cklinger/work/demos/grokformdemo/develop-eggs/grokformdemo.egg-link
+
+[buildout]
+parts = app i18n test data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket
+
+[buildout]
+parts = i18n test data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app
+
+[buildout]
+parts = test data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n
+
+[buildout]
+parts = data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test
+
+[buildout]
+parts = log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data
+
+[buildout]
+parts = zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log
+
+[buildout]
+parts = base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log zpasswd
+
+[buildout]
+parts = layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log zpasswd base
+
+[buildout]
+parts = wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log zpasswd base layout
+
+[buildout]
+parts = zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log zpasswd base layout wizard
+
+[buildout]
+parts = site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log zpasswd base layout wizard zope_conf
+
+[buildout]
+parts = zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log zpasswd base layout wizard zope_conf site_zcml
+
+[buildout]
+parts = deploy_ini debug_ini eggbasket app i18n test data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf
+
+[buildout]
+parts = debug_ini eggbasket app i18n test data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini
+
+[buildout]
+parts = eggbasket app i18n test data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini
+
+[buildout]
+installed_develop_eggs = /Users/cklinger/work/demos/grokformdemo/develop-eggs/grokformdemo.egg-link
+
+[buildout]
+parts = app i18n test data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket
+
+[buildout]
+parts = i18n test data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app
+
+[buildout]
+parts = test data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n
+
+[buildout]
+parts = data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test
+
+[buildout]
+parts = log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data
+
+[buildout]
+parts = zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log
+
+[buildout]
+parts = base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log zpasswd
+
+[buildout]
+parts = layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log zpasswd base
+
+[buildout]
+parts = wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log zpasswd base layout
+
+[buildout]
+parts = zope_conf site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log zpasswd base layout wizard
+
+[buildout]
+parts = site_zcml zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log zpasswd base layout wizard zope_conf
+
+[buildout]
+parts = zdaemon_conf deploy_ini debug_ini eggbasket app i18n test data log zpasswd base layout wizard zope_conf site_zcml
+
+[buildout]
+parts = deploy_ini debug_ini eggbasket app i18n test data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf
+
+[buildout]
+parts = debug_ini eggbasket app i18n test data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini
+
+[buildout]
+parts = eggbasket app i18n test data log zpasswd base layout wizard zope_conf site_zcml zdaemon_conf deploy_ini debug_ini

Added: grokapps/grokformdemo/trunk/bootstrap.py
===================================================================
--- grokapps/grokformdemo/trunk/bootstrap.py	                        (rev 0)
+++ grokapps/grokformdemo/trunk/bootstrap.py	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,84 @@
+##############################################################################
+#
+# Copyright (c) 2006 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Bootstrap a buildout-based project
+
+Simply run this script in a directory containing a buildout.cfg.
+The script accepts buildout command-line options, so you can
+use the -c option to specify an alternate configuration file.
+
+$Id: bootstrap.py 85041 2008-03-31 15:57:30Z andreasjung $
+"""
+
+import os, shutil, sys, tempfile, urllib2, logging
+
+def remove_old_logger_handlers():
+    # zc.buildout installs a new log stream on every call of
+    # main(). We remove any leftover handlers to avoid multiple output
+    # of same content (doubled lines etc.)
+    root_logger = logging.getLogger()
+    if 'zc.buildout' in root_logger.manager.loggerDict.keys():
+        logger = logging.getLogger('zc.buildout')
+        for handler in logger.handlers:
+            logger.removeHandler(handler)
+    return
+
+
+tmpeggs = tempfile.mkdtemp()
+
+try:
+    import pkg_resources
+except ImportError:
+    ez = {}
+    exec urllib2.urlopen('http://peak.telecommunity.com/dist/ez_setup.py'
+                         ).read() in ez
+    ez['use_setuptools'](to_dir=tmpeggs, download_delay=0)
+
+    import pkg_resources
+
+if sys.platform == 'win32':
+    def quote(c):
+        if ' ' in c:
+            return '"%s"' % c # work around spawn lamosity on windows
+        else:
+            return c
+else:
+    def quote (c):
+        return c
+
+cmd = 'from setuptools.command.easy_install import main; main()'
+ws  = pkg_resources.working_set
+assert os.spawnle(
+    os.P_WAIT, sys.executable, quote (sys.executable),
+    '-c', quote (cmd), '-mqNxd', quote (tmpeggs), 'zc.buildout',
+    dict(os.environ,
+         PYTHONPATH=
+         ws.find(pkg_resources.Requirement.parse('setuptools')).location
+         ),
+    ) == 0
+
+ws.add_entry(tmpeggs)
+ws.require('zc.buildout')
+import zc.buildout.buildout
+zc.buildout.buildout.main(sys.argv[1:] + ['bootstrap'])
+remove_old_logger_handlers()
+shutil.rmtree(tmpeggs)
+
+# grokproject specific addition to standard bootstrap.py:
+# Install eggbasket too.  This should be verbose to give the user
+# information about what is happening, since this can take a while.
+zc.buildout.buildout.main(sys.argv[1:] + ['-v', 'install', 'eggbasket'])
+if sys.platform == 'win32':
+    print "Now you can run 'bin\buildout.exe'"
+else:
+    print "Now you can run 'bin/buildout'"

Added: grokapps/grokformdemo/trunk/buildout.cfg
===================================================================
--- grokapps/grokformdemo/trunk/buildout.cfg	                        (rev 0)
+++ grokapps/grokformdemo/trunk/buildout.cfg	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,102 @@
+[buildout]
+develop = .
+parts = eggbasket app i18n test data log zpasswd base layout wizard
+        zope_conf site_zcml zdaemon_conf deploy_ini debug_ini
+newest = false
+find-links = http://download.zope.org/distribution/
+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.
+
+versions = versions
+
+[versions]
+z3c.pagelet = 1.0.3
+
+[base]
+recipe=zerokspot.recipe.git
+repository=git://devel.dolmen-project.org/megrok.z3cform.base.git
+as_egg = True
+newest = True
+
+[layout]
+recipe=zerokspot.recipe.git
+repository=git://devel.dolmen-project.org/megrok.z3cform.layout.git
+as_egg = True
+newest = True
+
+[wizard]
+recipe=zerokspot.recipe.git
+repository=git://devel.dolmen-project.org/megrok.z3cform.wizard.git
+as_egg = True
+newest = True
+
+[app]
+recipe = zc.recipe.egg
+eggs = grokformdemo
+       z3c.evalexception>=2.0
+       Paste
+       PasteScript
+       PasteDeploy
+interpreter = python-console
+
+
+[data]
+recipe = zc.recipe.filestorage
+
+[log]
+recipe = zc.recipe.filestorage
+
+[test]
+recipe = zc.recipe.testrunner
+eggs = grokformdemo
+defaults = ['--tests-pattern', '^f?tests$', '-v']
+
+# this section named so that the i18n scripts are called bin/i18n...
+[i18n]
+recipe = z3c.recipe.i18n:i18n
+packages = grokformdemo
+eggs = grokformdemo
+domain = grokformdemo
+output = src/grokformdemo/locales
+zcml =
+
+# This section is named so that the zpasswd utility is
+# called `zpasswd`
+[zpasswd]
+recipe = z3c.recipe.dev:script
+eggs = grokformdemo
+module = zope.app.server.zpasswd
+method = main
+
+[zope_conf]
+recipe = z3c.recipe.template
+input = etc/zope.conf.in
+output = ${buildout:parts-directory}/etc/zope.conf
+
+[site_zcml]
+recipe = z3c.recipe.template
+input = etc/site.zcml.in
+output = ${buildout:parts-directory}/etc/site.zcml
+
+[zdaemon_conf]
+recipe = z3c.recipe.template
+input = etc/zdaemon.conf.in
+output = ${buildout:parts-directory}/etc/zdaemon.conf
+
+[deploy_ini]
+recipe = z3c.recipe.template
+input = etc/deploy.ini.in
+output = ${buildout:parts-directory}/etc/deploy.ini
+
+[debug_ini]
+recipe = z3c.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.0a4.tgz

Added: grokapps/grokformdemo/trunk/etc/README.txt
===================================================================
--- grokapps/grokformdemo/trunk/etc/README.txt	                        (rev 0)
+++ grokapps/grokformdemo/trunk/etc/README.txt	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,26 @@
+In this directory you can find templates which are used by
+``zc.buildout`` to create the configuration files in the parts/etc/ subdir
+of your project.
+
+If you modify files in this directory, you have to run::
+
+  $ bin/buildout
+
+afterwards to rebuild the configuration files in parts/etc/.
+
+In the templates you can use placesholders recognized by zc.buildout
+to name local paths, etc. A zc.buildout placeholder looks like this::
+
+  ${buildout:directory}
+
+which gives you the path of the project directory and will be
+substituted with the real path when you run buildout the next
+time. The set of available placeholders depends on your
+buildout.cfg.
+
+You can also modify files in parts/etc directly, but those changes
+will be overwritten after running bin/buildout the next time.
+
+To run your project you can do::
+
+  $ bin/paster serve parts/etc/deploy.ini

Added: grokapps/grokformdemo/trunk/etc/debug.ini.in
===================================================================
--- grokapps/grokformdemo/trunk/etc/debug.ini.in	                        (rev 0)
+++ grokapps/grokformdemo/trunk/etc/debug.ini.in	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,66 @@
+# debug.ini
+#
+# Debugging configuration for use with paster/WSGI
+#
+
+[loggers]
+keys = root, wsgi
+
+[handlers]
+keys = console, accesslog
+
+[formatters]
+keys = generic, accesslog
+
+[formatter_generic]
+format = %(asctime)s %(levelname)s [%(name)s] %(message)s
+
+[formatter_accesslog]
+format = %(message)s
+
+[handler_console]
+class = StreamHandler
+args = (sys.stderr,)
+level = NOTSET
+formatter = generic
+
+[handler_accesslog]
+class = FileHandler
+args = (os.path.join(r'${buildout:directory}', 'parts', 'log', 'access.log'),
+        'a')
+level = INFO
+formatter = accesslog
+
+[logger_root]
+level = INFO
+handlers = console
+
+[logger_wsgi]
+level = INFO
+handlers = accesslog
+qualname = wsgi
+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:grokformdemo
+filter-with = translogger
+
+[server:main]
+use = egg:Paste#http
+host = 127.0.0.1
+port = 8080
+
+[DEFAULT]
+# set the name of the zope.conf file
+zope_conf = %(here)s/zope.conf
\ No newline at end of file

Added: grokapps/grokformdemo/trunk/etc/deploy.ini.in
===================================================================
--- grokapps/grokformdemo/trunk/etc/deploy.ini.in	                        (rev 0)
+++ grokapps/grokformdemo/trunk/etc/deploy.ini.in	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,60 @@
+# deploy.ini
+#
+# Deployment configuration for use with paster/WSGI
+#
+
+[loggers]
+keys = root, wsgi
+
+[handlers]
+keys = console, accesslog
+
+[formatters]
+keys = generic, accesslog
+
+[logger_root]
+level = INFO
+handlers = console
+
+[logger_wsgi]
+level = INFO
+handlers = accesslog
+qualname = wsgi
+propagate = 0
+
+[handler_console]
+class = StreamHandler
+args = (sys.stderr,)
+level = NOTSET
+formatter = generic
+
+[handler_accesslog]
+class = FileHandler
+args = (os.path.join(r'${buildout:directory}', 'parts', 'log', 'access.log'),
+        'a')
+level = INFO
+formatter = accesslog
+
+[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:grokformdemo
+filter-with = translogger
+
+[server:main]
+use = egg:Paste#http
+host = 127.0.0.1
+port = 8080
+
+[DEFAULT]
+# set the name of the zope.conf file
+zope_conf = %(here)s/zope.conf

Added: grokapps/grokformdemo/trunk/etc/site.zcml.in
===================================================================
--- grokapps/grokformdemo/trunk/etc/site.zcml.in	                        (rev 0)
+++ grokapps/grokformdemo/trunk/etc/site.zcml.in	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,36 @@
+<configure xmlns="http://namespaces.zope.org/zope"
+           i18n_domain="grokformdemo">
+
+  <include package="grokformdemo" />
+
+    <configure i18n_domain="grokformdemo">
+    
+      <unauthenticatedPrincipal id="zope.anybody"
+                                title="Unauthenticated User" />
+      <unauthenticatedGroup id="zope.Anybody"
+                            title="Unauthenticated Users" />
+      <authenticatedGroup id="zope.Authenticated"
+                        title="Authenticated Users" />
+      <everybodyGroup id="zope.Everybody"
+                      title="All Users" />
+      <principal id="zope.manager"
+                 title="Manager"
+                 login="admin"
+                 password_manager="SHA1"
+                 password="e04cef88d033e22ae348aeb5660fc2140aec35850c4da997"
+                 />
+
+      <!-- Replace the following directive if you do not want
+           public access -->
+      <grant permission="zope.View"
+             principal="zope.Anybody" />
+      <grant permission="zope.app.dublincore.view"
+             principal="zope.Anybody" />
+
+      <role id="zope.Manager" title="Site Manager" />
+      <role id="zope.Member" title="Site Member" />
+      <grantAll role="zope.Manager" />
+      <grant role="zope.Manager"
+             principal="zope.manager" />
+   </configure>
+</configure>
\ No newline at end of file

Added: grokapps/grokformdemo/trunk/etc/zdaemon.conf.in
===================================================================
--- grokapps/grokformdemo/trunk/etc/zdaemon.conf.in	                        (rev 0)
+++ grokapps/grokformdemo/trunk/etc/zdaemon.conf.in	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,8 @@
+<runner>
+  program bin/paster serve ${buildout:directory}/parts/etc/deploy.ini
+  daemon on
+  transcript ${buildout:directory}/parts/log/zdaemon.log
+  socket-name ${buildout:directory}/parts/log/zdaemonsock
+  # Enable this to run the child process as a different user
+  # user zope
+</runner>

Added: grokapps/grokformdemo/trunk/etc/zope.conf.in
===================================================================
--- grokapps/grokformdemo/trunk/etc/zope.conf.in	                        (rev 0)
+++ grokapps/grokformdemo/trunk/etc/zope.conf.in	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,42 @@
+# Identify the component configuration used to define the site:
+site-definition ${site_zcml:output}
+
+<zodb>
+  # Standard Filestorage
+  <filestorage>
+    path ${data:path}
+  </filestorage>
+
+# Uncomment this if you want to connect to a ZEO server instead:
+#  <zeoclient>
+#    server localhost:8100
+#    storage 1
+#    # ZEO client cache, in bytes
+#    cache-size 20MB
+#    # Uncomment to have a persistent disk cache
+#    #client zeo1
+#  </zeoclient>
+</zodb>
+
+<eventlog>
+  # This sets up logging to a file.
+  # The "path" setting can be a relative or absolute
+  # filesystem path.
+
+  <logfile>
+    path ${buildout:directory}/parts/log/z3.log
+    formatter zope.exceptions.log.Formatter
+  </logfile>
+
+  # This sets up logging to to standard output.
+  # The "path" setting can be the tokens STDOUT or STDERR
+  
+#  <logfile>
+#    path STDOUT
+#    formatter zope.exceptions.log.Formatter
+#  </logfile>
+</eventlog>
+
+# Comment this line to disable developer mode.  This should be done in
+# production
+devmode on
\ No newline at end of file

Added: grokapps/grokformdemo/trunk/setup.py
===================================================================
--- grokapps/grokformdemo/trunk/setup.py	                        (rev 0)
+++ grokapps/grokformdemo/trunk/setup.py	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,42 @@
+from setuptools import setup, find_packages
+
+version = '0.0'
+
+setup(name='grokformdemo',
+      version=version,
+      description="",
+      long_description="""\
+""",
+      # Get strings from http://www.python.org/pypi?%3Aaction=list_classifiers
+      classifiers=[], 
+      keywords="",
+      author="",
+      author_email="",
+      url="",
+      license="",
+      package_dir={'': 'src'},
+      packages=find_packages('src'),
+      include_package_data=True,
+      zip_safe=False,
+      install_requires=['setuptools',
+                        'grok',
+                        'grokui.admin',
+                        'z3c.testsetup',
+                        'grokcore.startup',
+                        'megrok.layout',
+                        'megrok.z3cform.base',
+                        'megrok.z3cform.layout',
+                        'megrok.z3cform.wizard',
+                        'z3c.csvvocabulary',
+                        'hurry.jquery',
+                        'hurry.zoperesource',
+                        # Add extra requirements here
+                        ],
+      entry_points = """
+      [console_scripts]
+      grokformdemo-debug = grokcore.startup:interactive_debug_prompt
+      grokformdemo-ctl = grokcore.startup:zdaemon_controller
+      [paste.app_factory]
+      main = grokcore.startup:application_factory
+      """,
+      )

Added: grokapps/grokformdemo/trunk/src/grokformdemo/__init__.py
===================================================================
--- grokapps/grokformdemo/trunk/src/grokformdemo/__init__.py	                        (rev 0)
+++ grokapps/grokformdemo/trunk/src/grokformdemo/__init__.py	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1 @@
+# this directory is a package

Added: grokapps/grokformdemo/trunk/src/grokformdemo/ajax.py
===================================================================
--- grokapps/grokformdemo/trunk/src/grokformdemo/ajax.py	                        (rev 0)
+++ grokapps/grokformdemo/trunk/src/grokformdemo/ajax.py	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,29 @@
+import grok
+from hurry.jquery import jquery
+from hurry.resource import Library, ResourceInclusion
+
+class jsdir(grok.DirectoryResource):
+    grok.name('js')
+    grok.path('js')
+
+localjs = Library('js')
+
+tooltip = ResourceInclusion(localjs, 'jquery.tools.min.js', depends=[jquery])
+mytooltip = ResourceInclusion(localjs, 'mytooltip.js', depends=[tooltip])
+
+from zope.interface import Interface
+from zope.security.proxy import removeSecurityProxy 
+
+class InlineValidation(grok.JSON):
+    grok.context(Interface)
+
+    def validate(self, id, value):
+        message=""
+        field_id = id.split('-')[-1]
+        context = removeSecurityProxy(self.context)
+        field = context.fields.get(field_id)
+        try:
+            field.field.validate(value)
+        except Exception, e:
+            message = '<div class="fieldError"> <div class="error"> %s </div> </div>' %e.doc() 
+        return {'id': id, 'message':message}    

Added: grokapps/grokformdemo/trunk/src/grokformdemo/app.py
===================================================================
--- grokapps/grokformdemo/trunk/src/grokformdemo/app.py	                        (rev 0)
+++ grokapps/grokformdemo/trunk/src/grokformdemo/app.py	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,21 @@
+import grok
+
+from megrok.z3cform.base.components import GrokForm
+from megrok.layout import Layout, Page
+from zope.interface import Interface
+import megrok.pagetemplate 
+import grokcore.viewlet
+
+class Grokformdemo(grok.Application, grok.Container):
+    pass
+
+
+class MyLayout(Layout):
+    grok.context(Interface)
+    grok.name('mylayout')
+
+
+class Index(Page):
+    pass # see app_templates/index.pt
+
+

Added: grokapps/grokformdemo/trunk/src/grokformdemo/app.txt
===================================================================
--- grokapps/grokformdemo/trunk/src/grokformdemo/app.txt	                        (rev 0)
+++ grokapps/grokformdemo/trunk/src/grokformdemo/app.txt	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,32 @@
+Do a functional doctest test on the app.
+========================================
+
+:Test-Layer: functional
+
+Let's first create an instance of Grokformdemo at the top level:
+
+   >>> from grokformdemo.app import Grokformdemo
+   >>> root = getRootFolder()
+   >>> root['app'] = Grokformdemo()
+
+
+Run tests in the testbrowser
+----------------------------
+
+The zope.testbrowser.browser module exposes a Browser class that
+simulates a web browser similar to Mozilla Firefox or IE.  We use that
+to test how our application behaves in a browser.  For more
+information, see http://pypi.python.org/pypi/zope.testbrowser.
+
+Create a browser and visit the instance you just created:
+
+   >>> from zope.testbrowser.testing import Browser
+   >>> browser = Browser()
+   >>> browser.open('http://localhost/app')
+
+Check some basic information about the page you visit:
+
+   >>> browser.url
+   'http://localhost/app'
+   >>> browser.headers.get('Status').upper()
+   '200 OK'

Added: grokapps/grokformdemo/trunk/src/grokformdemo/app_templates/index.pt
===================================================================
--- grokapps/grokformdemo/trunk/src/grokformdemo/app_templates/index.pt	                        (rev 0)
+++ grokapps/grokformdemo/trunk/src/grokformdemo/app_templates/index.pt	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,15 @@
+<html>
+<head>
+</head>
+<body>
+  <h2>You can try this demos!!!</h2>
+
+  <ul>
+    <li> <a href="helloworldaddform"> Message </a> </li>
+    <li> <a href="addQuestionnaire.html"> Questionnaire.html </a> </li>
+    <li> <a href="addwizard"> Person Wizard </a> </li>
+  </ul>
+
+
+</body>
+</html>

Added: grokapps/grokformdemo/trunk/src/grokformdemo/app_templates/mylayout.pt
===================================================================
--- grokapps/grokformdemo/trunk/src/grokformdemo/app_templates/mylayout.pt	                        (rev 0)
+++ grokapps/grokformdemo/trunk/src/grokformdemo/app_templates/mylayout.pt	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,18 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"                  
+                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>EXAMPLE</title>
+    <link rel="stylesheet" type="text/css" href="#" tal:attributes="href static/my.css" />
+  </head>
+  <body>
+    <h1>Grok Form Demo</h1>
+
+    <!-- Die Magie findet in der naechsten Zeile statt! -->
+    <div id="content"
+         tal:content="structure view/render">Page Content</div>
+
+    <i> For Information you can contact: cklinger at novareto.de</i>
+  </body>
+</html>
+

Added: grokapps/grokformdemo/trunk/src/grokformdemo/configure.zcml
===================================================================
--- grokapps/grokformdemo/trunk/src/grokformdemo/configure.zcml	                        (rev 0)
+++ grokapps/grokformdemo/trunk/src/grokformdemo/configure.zcml	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,12 @@
+<configure xmlns="http://namespaces.zope.org/zope"
+           xmlns:grok="http://namespaces.zope.org/grok">
+  <include package="grok" />
+  <include package="megrok.z3cform.base" file="default_form_layer.zcml" />
+    <adapter
+      factory="z3c.form.hint.FieldDescriptionAsHint"
+      name="title"/>
+  <includeDependencies package="." />
+
+
+  <grok:grok package="." />
+</configure>

Added: grokapps/grokformdemo/trunk/src/grokformdemo/ftesting.zcml
===================================================================
--- grokapps/grokformdemo/trunk/src/grokformdemo/ftesting.zcml	                        (rev 0)
+++ grokapps/grokformdemo/trunk/src/grokformdemo/ftesting.zcml	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,34 @@
+<configure
+   xmlns="http://namespaces.zope.org/zope"
+   i18n_domain="grokformdemo"
+   package="grokformdemo"
+   >
+
+  <include package="grokformdemo" />
+
+  <!-- Typical functional testing security setup -->
+  <securityPolicy
+      component="zope.securitypolicy.zopepolicy.ZopeSecurityPolicy"
+      />
+
+  <unauthenticatedPrincipal
+      id="zope.anybody"
+      title="Unauthenticated User"
+      />
+  <grant
+      permission="zope.View"
+      principal="zope.anybody"
+      />
+
+  <principal
+      id="zope.mgr"
+      title="Manager"
+      login="mgr"
+      password="mgrpw"
+      />
+
+  <role id="zope.Manager" title="Site Manager" />
+  <grantAll role="zope.Manager" />
+  <grant role="zope.Manager" principal="zope.mgr" />
+
+</configure>

Added: grokapps/grokformdemo/trunk/src/grokformdemo/js/jquery.tools.min.js
===================================================================
--- grokapps/grokformdemo/trunk/src/grokformdemo/js/jquery.tools.min.js	                        (rev 0)
+++ grokapps/grokformdemo/trunk/src/grokformdemo/js/jquery.tools.min.js	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,16 @@
+/*
+ * jquery.tools 1.1.0 - The missing UI library for the Web
+ * 
+ * [tools.tooltip-1.1.0]
+ * 
+ * Copyright (c) 2009 Tero Piirainen
+ * http://flowplayer.org/tools/
+ *
+ * Dual licensed under MIT and GPL 2+ licenses
+ * http://www.opensource.org/licenses
+ * 
+ * -----
+ * 
+ * File generated: Thu Sep 03 11:27:27 GMT+00:00 2009
+ */
+(function(c){c.tools=c.tools||{};c.tools.tooltip={version:"1.1.0",conf:{effect:"slide",direction:"up",bounce:false,slideOffset:10,slideInSpeed:200,slideOutSpeed:200,slideFade:!c.browser.msie,fadeOutSpeed:"fast",tip:null,predelay:0,delay:30,opacity:1,lazy:undefined,position:["top","center"],cancelDefault:true,offset:[0,0],api:false,events:{def:"mouseover,mouseout",input:"focus,blur",widget:"focus mouseover,blur mouseout"}},addEffect:function(e,g,f){b[e]=[g,f]}};var b={toggle:[function(e){var f=this.getConf();this.getTip().css({opacity:f.opacity}).show();e.call()},function(e){this.getTip().hide();e.call()}],fade:[function(e){this.getTip().fadeIn(this.getConf().fadeInSpeed,e)},function(e){this.getTip().fadeOut(this.getConf().fadeOutSpeed,e)}]};var d={up:["-","top"],down:["+","top"],left:["-","left"],right:["+","left"]};c.tools.tooltip.addEffect("slide",function(e){var g=this.getConf(),h=this.getTip(),i=g.slideFade?{opacity:g.opacity}:{},f=d[g.direction]||d.up;i[f[1]]=f[0]+"="+g
 .slideOffset;if(g.slideFade){h.css({opacity:0})}h.show().animate(i,g.slideInSpeed,e)},function(f){var h=this.getConf(),j=h.slideOffset,i=h.slideFade?{opacity:0}:{},g=d[h.direction]||d.up;var e=""+g[0];if(h.bounce){e=e=="+"?"-":"+"}i[g[1]]=e+"="+j;this.getTip().animate(i,h.slideOutSpeed,function(){c(this).hide();f.call()})});function a(f,g){var p=this;f.data("tooltip",p);var l=f.next();if(g.tip){l=c(g.tip);if(l.length>1){l=f.nextAll(g.tip).eq(0);if(!l.length){l=f.parent().nextAll(g.tip).eq(0)}}}function h(q,r){c(p).bind(q,function(t,s){if(r&&r.call(this,s?s.position:undefined)===false&&s){s.proceed=false}});return p}function o(){var t=f.position().top-l.outerHeight();var q=l.outerHeight()+f.outerHeight();var u=g.position[0];if(u=="center"){t+=q/2}if(u=="bottom"){t+=q}var r=f.outerWidth()+l.outerWidth();var s=f.position().left+f.outerWidth();u=g.position[1];if(u=="center"){s-=r/2}if(u=="left"){s-=r}t+=g.offset[0];s+=g.offset[1];return{top:t,left:s}}c.each(g,function(q,r){if(c.
 isFunction(r)){h(q,r)}});var j=f.is(":input"),e=j&&f.is(":checkbox, :radio, select, :button"),i=f.attr("type"),n=g.events[i]||g.events[j?(e?"widget":"input"):"def"];n=n.split(/,\s*/);f.bind(n[0],function(r){var q=l.data("trigger");if(q&&q[0]!=this){l.hide()}r.target=this;p.show(r);l.hover(p.show,function(s){p.hide()})});f.bind(n[1],function(){p.hide()});if(!c.browser.msie&&!j){f.mousemove(function(){if(!p.isShown()){f.triggerHandler("mouseover")}})}if(g.opacity<1){l.css("opacity",g.opacity)}var m=0,k=f.attr("title");if(k&&g.cancelDefault){f.removeAttr("title");f.data("title",k)}c.extend(p,{show:function(r){if(r){f=c(r.target)}clearTimeout(l.data("timer"));if(l.is(":animated")||l.is(":visible")){return p}function q(){l.data("trigger",f);var t=o();if(g.tip&&k){l.html(k)}var s={proceed:true,position:t};c(p).trigger("onBeforeShow",s);if(s.proceed===false){return p}t=o();l.css({position:"absolute",top:t.top,left:t.left});b[g.effect][0].call(p,function(){c(p).trigger("onShow")})}i
 f(g.predelay){clearTimeout(m);m=setTimeout(q,g.predelay)}else{q()}return p},hide:function(){clearTimeout(l.data("timer"));clearTimeout(m);if(!l.is(":visible")){return}function q(){var r={proceed:true};c(p).trigger("onBeforeHide",r);if(r.proceed===false){return}b[g.effect][1].call(p,function(){c(p).trigger("onHide")})}if(g.delay){l.data("timer",setTimeout(q,g.delay))}else{q()}return p},isShown:function(){return l.is(":visible, :animated")},getConf:function(){return g},getTip:function(){return l},getTrigger:function(){return f},onBeforeShow:function(q){return h("onBeforeShow",q)},onShow:function(q){return h("onShow",q)},onBeforeHide:function(q){return h("onBeforeHide",q)},onHide:function(q){return h("onHide",q)}})}c.prototype.tooltip=function(e){var f=this.eq(typeof e=="number"?e:0).data("tooltip");if(f){return f}var g=c.extend(true,{},c.tools.tooltip.conf);if(c.isFunction(e)){e={onBeforeShow:e}}else{if(typeof e=="string"){e={tip:e}}}c.extend(true,g,e);if(typeof g.position=="s
 tring"){g.position=g.position.split(/,?\s/)}if(g.lazy!==false&&(g.lazy===true||this.length>20)){this.one("mouseover",function(){f=new a(c(this),g);f.show()})}else{this.each(function(){f=new a(c(this),g)})}return g.api?f:this}})(jQuery);

Added: grokapps/grokformdemo/trunk/src/grokformdemo/js/mytooltip.js
===================================================================
--- grokapps/grokformdemo/trunk/src/grokformdemo/js/mytooltip.js	                        (rev 0)
+++ grokapps/grokformdemo/trunk/src/grokformdemo/js/mytooltip.js	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,34 @@
+$(document).ready(function() {
+
+    $("#form :input").tooltip({ 
+        position: "center right", 
+        offset: [-2, 10], 
+        effect: "fade", 
+        opacity: 0.7, 
+        tip: '.tooltip' 
+    });
+
+    $("#form :input").blur(function() {
+          var value = $(this).val();
+          var id = $(this).attr('id')
+          var url = window.location + '/@@validate'
+          console.log("input value, %s  ", value);
+          console.log("input id, %s  ", id);
+          console.log(window.location)
+          $.getJSON(url,
+                   {'value':value, 'id':id},
+                   function(data){ 
+                       console.log(data); 
+                       message = data.message;
+                       id = data.id;
+                       console.log(message);
+                       console.log(id);
+                       $("div#"+id).toggleClass('errored-field'); 
+                       $("div#"+id+"_help").append(message); 
+                       console.log("HELL");
+                       })
+         
+ 
+        
+    });
+});

Added: grokapps/grokformdemo/trunk/src/grokformdemo/message/__init__.py
===================================================================
--- grokapps/grokformdemo/trunk/src/grokformdemo/message/__init__.py	                        (rev 0)
+++ grokapps/grokformdemo/trunk/src/grokformdemo/message/__init__.py	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1 @@
+# Make me a package

Added: grokapps/grokformdemo/trunk/src/grokformdemo/message/browser.py
===================================================================
--- grokapps/grokformdemo/trunk/src/grokformdemo/message/browser.py	                        (rev 0)
+++ grokapps/grokformdemo/trunk/src/grokformdemo/message/browser.py	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,72 @@
+import grok
+import megrok.z3cform.base
+
+#
+import message
+import interfaces
+import datetime
+
+#
+from z3c.form import field, form, button, widget
+from grokformdemo.app import Grokformdemo
+from grokformdemo.ajax import mytooltip 
+from grokcore.component import global_adapter
+from z3c.form.interfaces import IAddForm
+
+DefaultDate = widget.ComputedWidgetAttribute(
+    lambda adapter: datetime.date.today(),
+    field=interfaces.IHelloWorld['when'], view=IAddForm)
+
+global_adapter(DefaultDate, name='default')
+
+
+
+
+class HelloWorldAddForm(megrok.z3cform.base.PageAddForm):
+    """ A sample add form."""
+    grok.context(Grokformdemo)
+
+    label = u'Hello World Message Add Form'
+    fields = field.Fields(interfaces.IHelloWorld)
+
+    def update(self):
+        mytooltip.need()
+
+    def create(self, data):
+        return message.HelloWorld(**data)
+
+    def add(self, object):
+        count = 0
+        while 'helloworld-%i' %count in self.context:
+            count += 1;
+        self._name = 'helloworld-%i' %count
+        self.context[self._name] = object
+        return object
+
+    def nextURL(self):
+	return self.redirect(self.url(self.context[self._name]))
+
+class HelloWorldEditForm(megrok.z3cform.base.PageEditForm):
+    grok.context(message.HelloWorld)
+    grok.name('edit.html')
+    form.extends(form.EditForm)
+    label = u'Hello World Message Edit Form'
+    fields = field.Fields(interfaces.IHelloWorld)
+
+    def update(self):
+        mytooltip.need()
+
+    @button.buttonAndHandler(u'Apply and View', name='applyView')
+    def handleApplyView(self, action):
+        self.handleApply(self, action)
+        if not self.widgets.errors:
+	    self.redirect(self.url(self.context, name='index'))
+
+
+class HelloWorldDisplayForm(megrok.z3cform.base.PageDisplayForm):
+    """ A simple Display Form"""
+    grok.context(message.HelloWorld)
+    grok.name('index')
+    template = grok.PageTemplateFile('display.pt')
+
+    fields = field.Fields(interfaces.IHelloWorld)

Added: grokapps/grokformdemo/trunk/src/grokformdemo/message/display.pt
===================================================================
--- grokapps/grokformdemo/trunk/src/grokformdemo/message/display.pt	                        (rev 0)
+++ grokapps/grokformdemo/trunk/src/grokformdemo/message/display.pt	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,9 @@
+<h1>
+  A <span tal:replace="structure view/widgets/what/render" /> Hello World
+  from <span tal:replace="structure view/widgets/who/render" />
+  on <span tal:replace="structure view/widgets/when/render" />!
+</h1>
+<a href="./edit.html"
+   tal:attributes="href string:${context/@@absolute_url}/edit.html">
+  Edit Message</a>
+

Added: grokapps/grokformdemo/trunk/src/grokformdemo/message/formlayout.py
===================================================================
--- grokapps/grokformdemo/trunk/src/grokformdemo/message/formlayout.py	                        (rev 0)
+++ grokapps/grokformdemo/trunk/src/grokformdemo/message/formlayout.py	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,7 @@
+import grokcore.view
+import megrok.pagetemplate
+from browser import HelloWorldEditForm
+
+class FormLayout(megrok.pagetemplate.PageTemplate):
+    grokcore.viewlet.view(HelloWorldEditForm)
+

Added: grokapps/grokformdemo/trunk/src/grokformdemo/message/formlayout_templates/formlayout.pt
===================================================================
--- grokapps/grokformdemo/trunk/src/grokformdemo/message/formlayout_templates/formlayout.pt	                        (rev 0)
+++ grokapps/grokformdemo/trunk/src/grokformdemo/message/formlayout_templates/formlayout.pt	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,88 @@
+<div class="tooltip"></div>
+<form action="."
+      i18n:domain="dolmen"
+      tal:attributes="action request/URL;
+              class string:form-${view/__name__}"
+      method="post"
+      id="form"
+      enctype="multipart/form-data">
+  
+  <div class="form-status"
+       tal:define="status view/status"
+       tal:condition="status">
+    
+    <dl class="info-message"
+    tal:condition="view/status">
+      <dt i18n:translate="">Status</dt>
+      <dd tal:content="view/status" />
+    </dl>
+  </div>
+  
+  <div class="errors">
+    <ul class="errors"
+    tal:condition="view/widgets/errors">
+      <li tal:repeat="error view/widgets/errors">
+    <strong tal:condition="error/widget"
+        tal:replace="error/widget/label" />
+    <span tal:replace="structure error/render">Error Type</span>
+      </li>
+    </ul>
+  </div>
+  
+  <h1 tal:condition="view/label" tal:content="view/label" />
+  
+  <p class="documentDescription"
+     tal:content="view/description|nothing" />
+  
+  <input type="hidden" name="camefrom"
+     tal:attributes="value request/camefrom | nothing" />
+  
+  <fieldset tal:define="form_name view/form_name|nothing"
+        tal:omit-tag="not:form_name">
+    <legend tal:condition="form_name"
+        tal:content="form_name">Form name</legend>
+    
+    <div id="edition-fields">
+      <tal:block tal:repeat="widget view/widgets/values">
+    <div tal:define="description python: widget.field.description;
+             error widget/error;
+             error_class python:error and 'errored-field' or ''"
+         tal:attributes="class string:field ${error_class};
+                         id widget/id">
+      <label tal:attributes="for widget/id">
+        <span i18n:translate=""
+          tal:content="widget/label">label</span>
+        <span class="fieldRequired" title="Required"
+          tal:condition="widget/required"
+          i18n:translate="label_required"
+          i18n:attributes="title title_required;">
+          <span class="textual-info">(Required)</span>
+        </span>
+      </label>
+      <div class="formHelp"
+           i18n:translate=""
+           tal:content="description"
+           tal:condition="description"
+           tal:attributes="id string:${widget/id}_help"
+           >field description</div>
+      <div class="field-error"
+           tal:condition="widget/error">
+        <span tal:replace="structure widget/error/render">error</span>
+      </div>
+      <div class="widget"
+           tal:content="structure widget/render">
+        <input type="text" />
+      </div>
+    </div>
+      </tal:block>
+    </div>
+    
+    <div id="actionsView"  tal:condition="view/actions">
+      <span class="actionButtons">
+    <input tal:repeat="action view/actions/values"
+           tal:replace="structure action/render"
+           />
+      </span>
+    </div>
+    </fieldset>
+</form>

Added: grokapps/grokformdemo/trunk/src/grokformdemo/message/interfaces.py
===================================================================
--- grokapps/grokformdemo/trunk/src/grokformdemo/message/interfaces.py	                        (rev 0)
+++ grokapps/grokformdemo/trunk/src/grokformdemo/message/interfaces.py	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,28 @@
+import os
+import zope.interface
+import zope.schema
+from z3c.csvvocabulary import CSVVocabulary
+
+WhatVocabulary = CSVVocabulary(
+    os.path.join(os.path.dirname(__file__), 'what-values.csv'))
+
+class IHelloWorld(zope.interface.Interface):
+    """Information about a hello world message"""
+
+    who = zope.schema.TextLine(
+        title=u'Who',
+        min_length=4,
+        description=u'Name of the person sending the message',
+        required=True)
+
+    when = zope.schema.Date(
+        title=u'When',
+        description=u'Date of the message sent.',
+        required=True)
+
+    what = zope.schema.Choice(
+        title=u'What',
+        description=u'What type of message it is.',
+        vocabulary=WhatVocabulary,
+        default=u'cool',
+        required=True)

Added: grokapps/grokformdemo/trunk/src/grokformdemo/message/message.py
===================================================================
--- grokapps/grokformdemo/trunk/src/grokformdemo/message/message.py	                        (rev 0)
+++ grokapps/grokformdemo/trunk/src/grokformdemo/message/message.py	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,17 @@
+import grok
+import persistent
+import zope.interface
+from zope.schema import fieldproperty
+from grokformdemo.message import interfaces
+
+class HelloWorld(grok.Model):
+    grok.implements(interfaces.IHelloWorld)
+
+    who = fieldproperty.FieldProperty(interfaces.IHelloWorld['who'])
+    when = fieldproperty.FieldProperty(interfaces.IHelloWorld['when'])
+    what = fieldproperty.FieldProperty(interfaces.IHelloWorld['what'])
+
+    def __init__(self, who, when, what):
+        self.who = who
+        self.when = when
+        self.what = what

Added: grokapps/grokformdemo/trunk/src/grokformdemo/message/what-values.csv
===================================================================
--- grokapps/grokformdemo/trunk/src/grokformdemo/message/what-values.csv	                        (rev 0)
+++ grokapps/grokformdemo/trunk/src/grokformdemo/message/what-values.csv	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,4 @@
+"cool";"cool"
+"sunny";"sunny"
+"silent";"silent"
+"best";"best"

Added: grokapps/grokformdemo/trunk/src/grokformdemo/static/README.txt
===================================================================
--- grokapps/grokformdemo/trunk/src/grokformdemo/static/README.txt	                        (rev 0)
+++ grokapps/grokformdemo/trunk/src/grokformdemo/static/README.txt	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,2 @@
+Put static files here, like javascript and css.  They will be
+available as static/<filename> in views.

Added: grokapps/grokformdemo/trunk/src/grokformdemo/static/my.css
===================================================================
--- grokapps/grokformdemo/trunk/src/grokformdemo/static/my.css	                        (rev 0)
+++ grokapps/grokformdemo/trunk/src/grokformdemo/static/my.css	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,29 @@
+* {                                                                             
+   margin: 0;
+   padding: 0;
+}
+body {
+   padding: 1em;
+}
+#content{
+    border: 1px solid #999;
+    padding: 1em;
+    background: #eee;
+}
+
+
+/* simple css-based tooltip */ 
+div.tooltip { 
+    background-color:#000; 
+    border:1px solid #fff; 
+    padding:10px 15px; 
+    width:200px; 
+    display:none; 
+    color:#fff; 
+    text-align:left; 
+    font-size:12px; 
+ 
+    /* outline radius for mozilla/firefox only */ 
+    -moz-box-shadow:0 0 10px #000; 
+    -webkit-box-shadow:0 0 10px #000; 
+}

Added: grokapps/grokformdemo/trunk/src/grokformdemo/tests.py
===================================================================
--- grokapps/grokformdemo/trunk/src/grokformdemo/tests.py	                        (rev 0)
+++ grokapps/grokformdemo/trunk/src/grokformdemo/tests.py	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,12 @@
+import os.path
+import z3c.testsetup
+import grokformdemo
+from zope.app.testing.functional import ZCMLLayer
+
+
+ftesting_zcml = os.path.join(
+    os.path.dirname(grokformdemo.__file__), 'ftesting.zcml')
+FunctionalLayer = ZCMLLayer(ftesting_zcml, __name__, 'FunctionalLayer',
+                            allow_teardown=True)
+
+test_suite = z3c.testsetup.register_all_tests('grokformdemo')

Added: grokapps/grokformdemo/trunk/src/grokformdemo/wizard/__init__.py
===================================================================
--- grokapps/grokformdemo/trunk/src/grokformdemo/wizard/__init__.py	                        (rev 0)
+++ grokapps/grokformdemo/trunk/src/grokformdemo/wizard/__init__.py	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1 @@
+#

Added: grokapps/grokformdemo/trunk/src/grokformdemo/wizard/person.py
===================================================================
--- grokapps/grokformdemo/trunk/src/grokformdemo/wizard/person.py	                        (rev 0)
+++ grokapps/grokformdemo/trunk/src/grokformdemo/wizard/person.py	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,29 @@
+import grok
+import zope.schema 
+import zope.interface
+
+from z3c.wizard import wizard, step
+from megrok.z3cform import wizard as z3cwizard
+from zope.location.interfaces import ILocation
+from zope.schema.fieldproperty import FieldProperty
+
+
+
+class IPerson(ILocation):
+    """Person interface."""
+
+    firstName = zope.schema.TextLine(title=u'First Name')
+    lastName = zope.schema.TextLine(title=u'Last Name')
+    street = zope.schema.TextLine(title=u'Street')
+    city = zope.schema.TextLine(title=u'City')
+
+
+class Person(grok.Model):
+    """Person content."""
+    grok.implements(IPerson)
+
+    firstName = FieldProperty(IPerson['firstName'])
+    lastName = FieldProperty(IPerson['lastName'])
+    street = FieldProperty(IPerson['street'])
+    city = FieldProperty(IPerson['city'])
+

Added: grokapps/grokformdemo/trunk/src/grokformdemo/wizard/wizard.py
===================================================================
--- grokapps/grokformdemo/trunk/src/grokformdemo/wizard/wizard.py	                        (rev 0)
+++ grokapps/grokformdemo/trunk/src/grokformdemo/wizard/wizard.py	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,53 @@
+import grok
+import zope.schema
+import zope.interface
+
+from megrok.z3cform import wizard as z3cwizard
+from z3c.wizard import wizard, step
+from zope.location.interfaces import ILocation
+from zope.schema.fieldproperty import FieldProperty
+from z3c.form import field
+from person import Person, IPerson
+from grokformdemo.app import Grokformdemo
+
+
+class AddWizard(grok.View):
+    grok.context(Grokformdemo)
+
+    def update(self):
+        context = self.context
+        self.id = "person-%s" %(str(len(context)))
+        self.context[self.id] = Person()
+
+    def render(self):
+        self.redirect(self.url(self.context[self.id], 'personwizard'))
+
+
+class IPersonWizard(z3cwizard.IWizard):
+    """Person wizard marker."""
+
+
+class PersonWizard(z3cwizard.WizardForm):
+    """ Wizard form."""
+    grok.implements(IPersonWizard)
+    grok.context(Person)
+    fields = []
+    label = u'Person Wizard'
+
+    def setUpSteps(self):
+        return [
+            step.addStep(self, 'personstep', weight=1),
+            step.addStep(self, 'addressstep', weight=2),
+            ]
+
+
+class PersonStep(z3cwizard.LayoutStep):
+    grok.context(PersonWizard)
+    label = u'Person'
+    fields = field.Fields(IPerson).select('firstName', 'lastName')
+
+
+class AddressStep(z3cwizard.LayoutStep):
+    grok.context(PersonWizard)
+    label = u'Address'
+    fields = field.Fields(IPerson).select('street', 'city')

Added: grokapps/grokformdemo/trunk/src/grokformdemo.egg-info/PKG-INFO
===================================================================
--- grokapps/grokformdemo/trunk/src/grokformdemo.egg-info/PKG-INFO	                        (rev 0)
+++ grokapps/grokformdemo/trunk/src/grokformdemo.egg-info/PKG-INFO	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,10 @@
+Metadata-Version: 1.0
+Name: grokformdemo
+Version: 0.0
+Summary: UNKNOWN
+Home-page: UNKNOWN
+Author: UNKNOWN
+Author-email: UNKNOWN
+License: UNKNOWN
+Description: UNKNOWN
+Platform: UNKNOWN

Added: grokapps/grokformdemo/trunk/src/grokformdemo.egg-info/SOURCES.txt
===================================================================
--- grokapps/grokformdemo/trunk/src/grokformdemo.egg-info/SOURCES.txt	                        (rev 0)
+++ grokapps/grokformdemo/trunk/src/grokformdemo.egg-info/SOURCES.txt	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,20 @@
+setup.py
+src/grokformdemo/__init__.py
+src/grokformdemo/ajax.py
+src/grokformdemo/app.py
+src/grokformdemo/tests.py
+src/grokformdemo.egg-info/PKG-INFO
+src/grokformdemo.egg-info/SOURCES.txt
+src/grokformdemo.egg-info/dependency_links.txt
+src/grokformdemo.egg-info/entry_points.txt
+src/grokformdemo.egg-info/not-zip-safe
+src/grokformdemo.egg-info/requires.txt
+src/grokformdemo.egg-info/top_level.txt
+src/grokformdemo/message/__init__.py
+src/grokformdemo/message/browser.py
+src/grokformdemo/message/formlayout.py
+src/grokformdemo/message/interfaces.py
+src/grokformdemo/message/message.py
+src/grokformdemo/wizard/__init__.py
+src/grokformdemo/wizard/person.py
+src/grokformdemo/wizard/wizard.py
\ No newline at end of file

Added: grokapps/grokformdemo/trunk/src/grokformdemo.egg-info/dependency_links.txt
===================================================================
--- grokapps/grokformdemo/trunk/src/grokformdemo.egg-info/dependency_links.txt	                        (rev 0)
+++ grokapps/grokformdemo/trunk/src/grokformdemo.egg-info/dependency_links.txt	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1 @@
+

Added: grokapps/grokformdemo/trunk/src/grokformdemo.egg-info/entry_points.txt
===================================================================
--- grokapps/grokformdemo/trunk/src/grokformdemo.egg-info/entry_points.txt	                        (rev 0)
+++ grokapps/grokformdemo/trunk/src/grokformdemo.egg-info/entry_points.txt	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,7 @@
+
+      [console_scripts]
+      grokformdemo-debug = grokcore.startup:interactive_debug_prompt
+      grokformdemo-ctl = grokcore.startup:zdaemon_controller
+      [paste.app_factory]
+      main = grokcore.startup:application_factory
+      
\ No newline at end of file

Added: grokapps/grokformdemo/trunk/src/grokformdemo.egg-info/not-zip-safe
===================================================================
--- grokapps/grokformdemo/trunk/src/grokformdemo.egg-info/not-zip-safe	                        (rev 0)
+++ grokapps/grokformdemo/trunk/src/grokformdemo.egg-info/not-zip-safe	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1 @@
+

Added: grokapps/grokformdemo/trunk/src/grokformdemo.egg-info/requires.txt
===================================================================
--- grokapps/grokformdemo/trunk/src/grokformdemo.egg-info/requires.txt	                        (rev 0)
+++ grokapps/grokformdemo/trunk/src/grokformdemo.egg-info/requires.txt	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,12 @@
+setuptools
+grok
+grokui.admin
+z3c.testsetup
+grokcore.startup
+megrok.layout
+megrok.z3cform.base
+megrok.z3cform.layout
+megrok.z3cform.wizard
+z3c.csvvocabulary
+hurry.jquery
+hurry.zoperesource
\ No newline at end of file

Added: grokapps/grokformdemo/trunk/src/grokformdemo.egg-info/top_level.txt
===================================================================
--- grokapps/grokformdemo/trunk/src/grokformdemo.egg-info/top_level.txt	                        (rev 0)
+++ grokapps/grokformdemo/trunk/src/grokformdemo.egg-info/top_level.txt	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1 @@
+grokformdemo

Added: grokapps/grokformdemo/trunk/versions.cfg
===================================================================
--- grokapps/grokformdemo/trunk/versions.cfg	                        (rev 0)
+++ grokapps/grokformdemo/trunk/versions.cfg	2009-09-15 07:39:35 UTC (rev 103989)
@@ -0,0 +1,136 @@
+# This file contains a list of versions of the various grok modules that
+# belong together.
+# It was downloaded from http://grok.zope.org/releaseinfo/grok-1.0a4.cfg
+# when this project was created.
+
+[versions]
+grok = 1.0a4
+ClientForm = 0.2.9
+docutils = 0.4
+grokcore.component = 1.6
+grokcore.formlib = 1.1
+grokcore.security = 1.0
+grokcore.view = 1.7
+grokcore.viewlet = 1.0
+grokui.admin = 0.3.2
+martian = 0.11
+mechanize = 0.1.7b
+Pygments = 0.8.1
+pytz = 2007k
+RestrictedPython = 3.4.2
+simplejson = 1.7.1
+z3c.autoinclude = 0.2.2
+z3c.flashmessage = 1.0
+z3c.testsetup = 0.2.1
+zc.catalog = 1.2.0
+ZConfig = 2.5.1
+zc.recipe.testrunner = 1.0.0
+zdaemon = 2.0.2
+ZODB3 = 3.8.1
+zodbcode = 3.4.0
+zope.annotation = 3.4.1
+zope.app.apidoc = 3.4.3
+zope.app.applicationcontrol = 3.4.3
+zope.app.appsetup = 3.4.1
+zope.app.authentication = 3.4.4
+zope.app.basicskin = 3.4.0
+zope.app.broken = 3.4.0
+zope.app.catalog = 3.5.1
+zope.app.component = 3.4.1
+zope.app.container = 3.5.6
+zope.app.content = 3.4.0
+zope.app.debug = 3.4.1
+zope.app.dependable = 3.4.0
+zope.app.error = 3.5.1
+zope.app.exception = 3.4.1
+zope.app.file = 3.4.4
+zope.app.folder = 3.4.0
+zope.app.form = 3.4.1
+zope.app.generations = 3.4.1
+zope.app.http = 3.4.1
+zope.app.i18n = 3.4.4
+zope.app.interface = 3.4.0
+zope.app.intid = 3.4.1
+zope.app.keyreference = 3.4.1
+zope.app.locales = 3.4.5
+zope.app.onlinehelp = 3.4.1
+zope.app.pagetemplate = 3.4.1
+zope.app.preference = 3.4.1
+zope.app.principalannotation = 3.4.0
+zope.app.publication = 3.4.3
+zope.app.publisher = 3.5.1
+zope.app.renderer = 3.4.0
+zope.app.rotterdam = 3.4.1
+zope.app.schema = 3.4.0
+zope.app.security = 3.5.2
+zope.app.securitypolicy = 3.4.6
+zope.app.server = 3.4.2
+zope.app.session = 3.5.1
+zope.app.skins = 3.4.0
+zope.app.testing = 3.4.3
+zope.app.tree = 3.4.0
+zope.app.twisted = 3.4.1
+zope.app.wsgi = 3.4.1
+zope.app.zapi = 3.4.0
+zope.app.zcmlfiles = 3.4.3
+zope.app.zopeappgenerations = 3.4.0
+zope.cachedescriptors = 3.4.1
+zope.component = 3.4.0
+zope.configuration = 3.4.0
+zope.contentprovider = 3.4.0
+zope.contenttype = 3.4.0
+zope.copypastemove = 3.4.0
+zope.datetime = 3.4.0
+zope.deferredimport = 3.4.0
+zope.deprecation = 3.4.0
+zope.dottedname = 3.4.2
+zope.dublincore = 3.4.0
+zope.error = 3.5.1
+zope.event = 3.4.0
+zope.exceptions = 3.4.0
+zope.filerepresentation = 3.4.0
+zope.formlib = 3.4.0
+zope.hookable = 3.4.0
+zope.i18n = 3.4.0
+zope.i18nmessageid = 3.4.3
+zope.index = 3.4.1
+zope.interface = 3.4.1
+zope.lifecycleevent = 3.4.0
+zope.location = 3.4.0
+zope.minmax = 1.1.0
+zope.modulealias = 3.4.0
+zope.pagetemplate = 3.4.0
+zope.proxy = 3.4.2
+zope.publisher = 3.4.6
+zope.schema = 3.4.0
+zope.security = 3.4.1
+zope.securitypolicy = 3.4.1
+zope.server = 3.4.3
+zope.session = 3.4.1
+zope.size = 3.4.0
+zope.structuredtext = 3.4.0
+zope.tal = 3.4.1
+zope.tales = 3.4.0
+zope.testbrowser = 3.4.2
+zope.testing = 3.6.0
+zope.thread = 3.4
+zope.traversing = 3.4.1
+zope.viewlet = 3.4.2
+
+
+# Here we pin the recipes and other packages that are not in the
+# downloaded versions.cfg of grok
+Paste = 1.7.2
+PasteDeploy = 1.3.2
+PasteScript = 1.7.3
+setuptools = 0.6c9
+z3c.evalexception = 2.0
+z3c.recipe.eggbasket = 0.4.1
+z3c.recipe.i18n = 0.5.0
+z3c.recipe.template = 0.1
+zc.buildout = 1.1.1
+zc.recipe.egg = 1.1.0
+zc.recipe.filestorage = 1.0.1
+grokcore.startup = 0.2
+
+



More information about the checkins mailing list