[Checkins] SVN: z3c.formdemo/trunk/src/z3c/formdemo/ Added a new
demo demonstrating groups.
Stephan Richter
srichter at cosmos.phy.tufts.edu
Wed Jun 27 16:49:03 EDT 2007
Log message for revision 77158:
Added a new demo demonstrating groups.
Changed:
U z3c.formdemo/trunk/src/z3c/formdemo/browser/index.pt
U z3c.formdemo/trunk/src/z3c/formdemo/configure.zcml
A z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/
A z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/__init__.py
A z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/browser.py
A z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/configure.zcml
A z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/interfaces.py
A z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/questionnaire.css
A z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/questionnaire.py
A z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/results.pt
-=-
Modified: z3c.formdemo/trunk/src/z3c/formdemo/browser/index.pt
===================================================================
--- z3c.formdemo/trunk/src/z3c/formdemo/browser/index.pt 2007-06-27 20:48:14 UTC (rev 77157)
+++ z3c.formdemo/trunk/src/z3c/formdemo/browser/index.pt 2007-06-27 20:49:02 UTC (rev 77158)
@@ -9,6 +9,11 @@
<div>
<a href="../++skin++Z3CFormDemo/widgets.html">All widgets</a>
</div>
+ <div>
+ <a href="../++skin++Z3CFormDemo/questionnaireResults.html">
+ Questionnaire
+ </a>
+ </div>
<h4>Table based layout</h4>
<div>
@@ -17,6 +22,11 @@
<div>
<a href="../++skin++Z3CTableFormDemo/widgets.html">All widgets</a>
</div>
+ <div>
+ <a href="../++skin++Z3CTableFormDemo/questionnaireResults.html">
+ Questionnaire
+ </a>
+ </div>
<h4>Advanced Demos</h4>
<div>
Modified: z3c.formdemo/trunk/src/z3c/formdemo/configure.zcml
===================================================================
--- z3c.formdemo/trunk/src/z3c/formdemo/configure.zcml 2007-06-27 20:48:14 UTC (rev 77157)
+++ z3c.formdemo/trunk/src/z3c/formdemo/configure.zcml 2007-06-27 20:49:02 UTC (rev 77158)
@@ -16,6 +16,7 @@
<include package=".message" />
<include package=".sqlmessage" />
<include package=".widgets" />
+ <include package=".questionnaire" />
<include package=".calculator" />
<include package=".wizard" />
<include package=".spreadsheet" />
Added: z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/__init__.py
===================================================================
--- z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/__init__.py (rev 0)
+++ z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/__init__.py 2007-06-27 20:49:02 UTC (rev 77158)
@@ -0,0 +1 @@
+# Make a package.
Property changes on: z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/__init__.py
___________________________________________________________________
Name: svn:keywords
+ Id
Added: z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/browser.py
===================================================================
--- z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/browser.py (rev 0)
+++ z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/browser.py 2007-06-27 20:49:02 UTC (rev 77158)
@@ -0,0 +1,133 @@
+##############################################################################
+#
+# Copyright (c) 2007 Zope Foundation 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.
+#
+##############################################################################
+"""
+$Id$
+"""
+__docformat__ = "reStructuredText"
+import zope.interface
+from zope.traversing.browser import absoluteURL
+from zope.viewlet.viewlet import CSSViewlet
+from z3c.pagelet import browser
+from z3c.form import button, field, form, group, widget
+from zc.table import column
+
+from z3c.formdemo.browser import formatter
+from z3c.formdemo.questionnaire import interfaces, questionnaire
+from z3c.formui import layout
+
+QuestionnaireCSSViewlet = CSSViewlet('questionnaire.css')
+
+class IQuestionnaireGroup(zope.interface.Interface):
+ """Questionnaire Group"""
+
+class IQuestionnairePage(zope.interface.Interface):
+ """Questionnaire Page"""
+
+
+class DevelopmentExperienceGroup(group.Group):
+ zope.interface.implements(IQuestionnaireGroup)
+ label = u'Development Experience'
+ fields = field.Fields(interfaces.IQuestionnaire).select(
+ 'zope2', 'plone', 'zope3', 'five')
+
+
+class ContributorExperienceGroup(group.Group):
+ zope.interface.implements(IQuestionnaireGroup)
+ label = u'Contributor Experience'
+ fields = field.Fields(interfaces.IQuestionnaire).select(
+ 'contributor', 'years', 'zopeId')
+
+
+class QuestionnaireAddForm(layout.AddFormLayoutSupport,
+ group.GroupForm, form.AddForm):
+ zope.interface.implements(IQuestionnairePage)
+
+ label = u'Zope Developer Questionnaire'
+ fields = field.Fields(interfaces.IQuestionnaire).select('name', 'age')
+ groups = (DevelopmentExperienceGroup, ContributorExperienceGroup)
+
+ def create(self, data):
+ return questionnaire.Questionnaire(**data)
+
+ def add(self, object):
+ count = 0
+ while 'questionnaire-%i' %count in self.context:
+ count += 1;
+ self._name = 'questionnaire-%i' %count
+ self.context[self._name] = object
+ return object
+
+ def nextURL(self):
+ url = absoluteURL(self.context, self.request)
+ return url + '/questionnaireResults.html'
+
+SubmitLabel = button.StaticButtonActionAttribute(
+ u'Submit Questionnaire', button=form.AddForm.buttons['add'],
+ form=QuestionnaireAddForm)
+
+
+def getDescriptionAsLabel(value):
+ return value.field.description
+
+QuestionLabel = widget.ComputedWidgetAttribute(
+ getDescriptionAsLabel, view=IQuestionnaireGroup)
+
+
+class DataColumn(column.SortingColumn):
+
+ def __init__(self, field):
+ super(DataColumn, self).__init__(field.title, field.__name__)
+
+ def renderCell(self, item, formatter):
+ return item.widgets[self.name].render()
+
+ def getSortKey(self, item, formatter):
+ return item.widgets[self.name].value
+
+
+class QuestionnaireRow(form.DisplayForm):
+ fields = field.Fields(interfaces.IQuestionnaire)
+
+
+class QuestionnaireResults(browser.BrowserPagelet):
+ zope.interface.implements(IQuestionnairePage)
+
+ rowFields = field.Fields(interfaces.IQuestionnaire)
+
+ def getContent(self):
+ return [obj for obj in self.context.values()
+ if interfaces.IQuestionnaire.providedBy(obj)]
+
+ def update(self):
+ super(QuestionnaireResults, self).update()
+
+ rows = []
+ for questionnaire in self.getContent():
+ row = QuestionnaireRow(questionnaire, self.request)
+ row.update()
+ rows.append(row)
+
+ columns = [DataColumn(field.field)
+ for field in self.rowFields.values()]
+
+ self.table = formatter.ListFormatter(
+ self.context, self.request, rows,
+ prefix = 'formdemo.questionnaire.', columns=columns,
+ sort_on=[('name', False)])
+ self.table.widths = (160, 45, 65, 55, 65, 50, 70, 55, 100)
+ for col in ('age', 'zope2', 'plone', 'zope3', 'five',
+ 'contributor', 'years', 'zopeId'):
+ self.table.columnCSS[col] = 'right'
+ self.table.sortKey = 'formdemo.questionnaire.sort-on'
+
Property changes on: z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/browser.py
___________________________________________________________________
Name: svn:keywords
+ Id
Added: z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/configure.zcml
===================================================================
--- z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/configure.zcml (rev 0)
+++ z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/configure.zcml 2007-06-27 20:49:02 UTC (rev 77158)
@@ -0,0 +1,70 @@
+<configure
+ xmlns="http://namespaces.zope.org/zope"
+ xmlns:browser="http://namespaces.zope.org/browser"
+ xmlns:z3c="http://namespaces.zope.org/z3c"
+ i18n_domain="z3c.formdemo">
+
+ <!-- Content Declarations -->
+
+ <class class=".questionnaire.Questionnaire">
+ <allow
+ interface=".interfaces.IQuestionnaire"
+ />
+ <require
+ permission="zope.Public"
+ set_schema=".interfaces.IQuestionnaire"
+ />
+ </class>
+
+ <!-- Resources -->
+
+ <browser:zrt-resource
+ name="questionnaire.css"
+ file="questionnaire.css"
+ layer="z3c.formdemo.layer.IDemoBrowserLayer"
+ />
+
+ <browser:viewlet
+ name="questionnaire.css"
+ view=".browser.IQuestionnairePage"
+ manager="z3c.formdemo.skin.ICSS"
+ class=".browser.QuestionnaireCSSViewlet"
+ permission="zope.Public"
+ layer="z3c.formdemo.layer.IDemoBrowserLayer"
+ />
+
+ <!-- Filling out Questionnaire -->
+
+ <adapter
+ factory=".browser.SubmitLabel"
+ name="title" />
+
+ <adapter
+ factory=".browser.QuestionLabel"
+ name="label" />
+
+ <z3c:pagelet
+ name="addQuestionnaire.html"
+ for="zope.app.folder.interfaces.IFolder"
+ class=".browser.QuestionnaireAddForm"
+ layer="z3c.formdemo.layer.IDemoBrowserLayer"
+ permission="zope.Public"
+ />
+
+ <!-- Questionnaire Results -->
+
+ <z3c:pagelet
+ name="questionnaireResults.html"
+ for="zope.app.folder.interfaces.IFolder"
+ class=".browser.QuestionnaireResults"
+ layer="z3c.formdemo.layer.IDemoBrowserLayer"
+ permission="zope.Public"
+ />
+
+ <z3c:template
+ template="results.pt"
+ for=".browser.QuestionnaireResults"
+ layer="z3c.formdemo.layer.IDemoBrowserLayer"
+ />
+
+</configure>
Property changes on: z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/configure.zcml
___________________________________________________________________
Name: svn:eol-style
+ native
Added: z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/interfaces.py
===================================================================
--- z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/interfaces.py (rev 0)
+++ z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/interfaces.py 2007-06-27 20:49:02 UTC (rev 77158)
@@ -0,0 +1,70 @@
+##############################################################################
+#
+# Copyright (c) 2007 Zope Foundation 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.
+#
+##############################################################################
+"""Questionnaire Interfaces
+
+$Id$
+"""
+__docformat__ = "reStructuredText"
+import zope.interface
+import zope.schema
+
+class IQuestionnaire(zope.interface.Interface):
+ """A questionaire about Zope users."""
+
+ name = zope.schema.TextLine(
+ title=u'Name',
+ description=u'Name of the person.',
+ required=True)
+
+ age = zope.schema.Int(
+ title=u'Age',
+ description=u'The age of the person.',
+ required=True)
+
+ zope2 = zope.schema.Bool(
+ title=u'Zope 2',
+ description=u'Have you ever developed with Zope 2?',
+ required=True)
+
+ plone = zope.schema.Bool(
+ title=u'Plone',
+ description=u'Have you ever developed with Plone?',
+ required=True)
+
+ zope3 = zope.schema.Bool(
+ title=u'Zope 3',
+ description=u'Have you ever developed with Zope 3?',
+ required=True)
+
+ five = zope.schema.Bool(
+ title=u'Five',
+ description=u'Have you ever developed with Five?',
+ required=True)
+
+ contributor = zope.schema.Bool(
+ title=u'Contrib.',
+ description=u'Are you a Zope contributor?',
+ required=True)
+
+ years = zope.schema.Int(
+ title=u'Years',
+ description=u'How many years have you contributed?',
+ default=0,
+ required=False)
+
+ zopeId = zope.schema.TextLine(
+ title=u'Zope Id',
+ description=u'What is your Zope Id?',
+ required=False)
+
Property changes on: z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/interfaces.py
___________________________________________________________________
Name: svn:keywords
+ Id
Added: z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/questionnaire.css
===================================================================
--- z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/questionnaire.css (rev 0)
+++ z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/questionnaire.css 2007-06-27 20:49:02 UTC (rev 77158)
@@ -0,0 +1,110 @@
+body {
+ background: #629C9D;
+ padding: 20px;
+ color: #5E4A32;
+}
+
+h1 {
+ border-bottom: 2px solid #C89C6B;
+ margin-bottom: 5px;
+ font-weight: bold;
+ color: #5E4A32;
+}
+
+div#content {
+ background: #ECD7C2;
+ border: 2px solid #C89C6B;
+ padding: 10px 20px;
+ width: 700px;
+ -moz-border-radius: 15px;
+}
+
+fieldset {
+ margin-top: 15px;
+ border: 1px solid #C89C6B;
+ padding: 10px 15px 5px 15px;
+ -moz-border-radius: 7px;
+}
+
+fieldset legend {
+ color: #5E4A32;
+ font-variant: small-caps;
+ font-weight: bold;
+ font-size: 110%;
+ border: 1px solid #C89C6B;
+ padding: 2px 4px;
+ -moz-border-radius: 3px;
+}
+
+a, a:link, a:visited, a:hover {
+ color: #D36938;
+}
+
+div.required-info {
+ margin-bottom: 10px;
+}
+
+div.error {
+ display: inline;
+}
+
+span.option span.label {
+ margin-right: 50px;
+}
+
+input[type=text] {
+ padding: 1px 2px;
+ background: #FFFFA0;
+}
+
+input#form-widgets-age {
+ width: 3em;
+ text-align: right;
+}
+
+input#form-widgets-years {
+ width: 2em;
+ text-align: right;
+}
+
+input#form-widgets-zopeId {
+ width: 10em;
+}
+
+input[type=submit] {
+ background: #E6B95C;
+ border: 1px solid #DB9649;
+ color: #5E4A32;
+ text-shadow: 1px 1px white;
+}
+
+table {
+ margin-top: 15px;
+ margin-bottom: 15px;
+}
+
+table th {
+ background: #5E4A32;
+ color: white;
+ padding: 3px 2px;
+}
+
+table th a:link {
+ color: white;
+}
+
+table th a:hover {
+ color: white;
+}
+
+table th a:visited {
+ color: white;
+}
+
+table tr.even {
+ background: #D3C0AE;
+}
+
+table td.right {
+ text-align: right;
+}
Property changes on: z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/questionnaire.css
___________________________________________________________________
Name: svn:eol-style
+ native
Added: z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/questionnaire.py
===================================================================
--- z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/questionnaire.py (rev 0)
+++ z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/questionnaire.py 2007-06-27 20:49:02 UTC (rev 77158)
@@ -0,0 +1,43 @@
+##############################################################################
+#
+# Copyright (c) 2007 Zope Foundation 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.
+#
+##############################################################################
+"""Questionnaire Implementation
+
+$Id$
+"""
+__docformat__ = "reStructuredText"
+import persistent
+import zope.interface
+from zope.location import location
+from zope.schema.fieldproperty import FieldProperty
+from z3c.formdemo.questionnaire import interfaces
+
+class Questionnaire(location.Location, persistent.Persistent):
+ zope.interface.implements(interfaces.IQuestionnaire)
+
+ name = FieldProperty(interfaces.IQuestionnaire['name'])
+ age = FieldProperty(interfaces.IQuestionnaire['age'])
+ zope2 = FieldProperty(interfaces.IQuestionnaire['zope2'])
+ plone = FieldProperty(interfaces.IQuestionnaire['plone'])
+ zope3 = FieldProperty(interfaces.IQuestionnaire['zope3'])
+ five = FieldProperty(interfaces.IQuestionnaire['five'])
+ contributor = FieldProperty(interfaces.IQuestionnaire['contributor'])
+ years = FieldProperty(interfaces.IQuestionnaire['years'])
+ zopeId = FieldProperty(interfaces.IQuestionnaire['zopeId'])
+
+ def __init__(self, **kw):
+ for name, value in kw.items():
+ setattr(self, name, value)
+
+ def __repr__(self):
+ return '<%s from %r>' %(self.__class__.__name__, self.name)
Property changes on: z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/questionnaire.py
___________________________________________________________________
Name: svn:keywords
+ Id
Added: z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/results.pt
===================================================================
--- z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/results.pt (rev 0)
+++ z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/results.pt 2007-06-27 20:49:02 UTC (rev 77158)
@@ -0,0 +1,7 @@
+<h1>Zope Developer Questionnaire Results</h1>
+
+<div tal:replace="structure view/table" />
+
+<div class="actions">
+ <a href="addQuestionnaire.html">[Fill out Questionnaire]</a>
+</div>
Property changes on: z3c.formdemo/trunk/src/z3c/formdemo/questionnaire/results.pt
___________________________________________________________________
Name: svn:eol-style
+ native
More information about the Checkins
mailing list