[Checkins] SVN: z3c.formdemo/trunk/src/z3c/formdemo/ Added another example. This time I show how non-object data can be

Stephan Richter srichter at cosmos.phy.tufts.edu
Fri Jun 22 12:13:34 EDT 2007


Log message for revision 76940:
  Added another example. This time I show how non-object data can be 
  handled using z3c.form, specifically raltional data from Gadfly.
  
  

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/sqlmessage/
  A   z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/__init__.py
  A   z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/add.pt
  A   z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/browser.py
  A   z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/configure.zcml
  A   z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/db/
  A   z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/db/msg/
  A   z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/db/msg/MSG.grl
  A   z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/db/msg/msg.gfd
  A   z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/display.pt
  A   z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/edit.pt
  A   z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/interfaces.py
  A   z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/overview.pt
  A   z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/sql.py
  A   z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/sqlmessage.css
  A   z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/what-values.csv

-=-
Modified: z3c.formdemo/trunk/src/z3c/formdemo/browser/index.pt
===================================================================
--- z3c.formdemo/trunk/src/z3c/formdemo/browser/index.pt	2007-06-22 16:07:26 UTC (rev 76939)
+++ z3c.formdemo/trunk/src/z3c/formdemo/browser/index.pt	2007-06-22 16:13:33 UTC (rev 76940)
@@ -31,4 +31,9 @@
   <div>
     <a href="../++skin++Z3CFormDemo/addressbook.html">Address Book</a>
   </div>
+  <div>
+    <a href="../++skin++Z3CFormDemo/showAllSQLHelloWorld.html">
+      SQL Hello World
+    </a>
+  </div>
 </div>

Modified: z3c.formdemo/trunk/src/z3c/formdemo/configure.zcml
===================================================================
--- z3c.formdemo/trunk/src/z3c/formdemo/configure.zcml	2007-06-22 16:07:26 UTC (rev 76939)
+++ z3c.formdemo/trunk/src/z3c/formdemo/configure.zcml	2007-06-22 16:13:33 UTC (rev 76940)
@@ -14,6 +14,7 @@
   <!-- Examples -->
 
   <include package=".message" />
+  <include package=".sqlmessage" />
   <include package=".widgets" />
   <include package=".calculator" />
   <include package=".wizard" />

Added: z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/__init__.py
===================================================================
--- z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/__init__.py	                        (rev 0)
+++ z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/__init__.py	2007-06-22 16:13:33 UTC (rev 76940)
@@ -0,0 +1 @@
+# Make a package.


Property changes on: z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/__init__.py
___________________________________________________________________
Name: svn:keywords
   + Id

Added: z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/add.pt
===================================================================
--- z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/add.pt	                        (rev 0)
+++ z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/add.pt	2007-06-22 16:13:33 UTC (rev 76940)
@@ -0,0 +1,5 @@
+<h1>Hello World Message Add Form</h1>
+
+<div id="body">
+  <div metal:use-macro="macro:form" />
+</div>


Property changes on: z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/add.pt
___________________________________________________________________
Name: svn:eol-style
   + native

Added: z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/browser.py
===================================================================
--- z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/browser.py	                        (rev 0)
+++ z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/browser.py	2007-06-22 16:13:33 UTC (rev 76940)
@@ -0,0 +1,178 @@
+##############################################################################
+#
+# 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 datetime
+import zope.interface
+import zope.component
+from zope.traversing.browser import absoluteURL
+from zope.pagetemplate.interfaces import IPageTemplate
+from zope.viewlet.viewlet import CSSViewlet
+
+from zc.table import column
+from zc.table.interfaces import ISortableColumn
+
+from z3c.pagelet import browser
+from z3c.form import button, field, form, widget
+from z3c.form.interfaces import IAddForm
+from z3c.formui import layout
+
+from z3c.formdemo.browser import formatter
+from z3c.formdemo.sqlmessage import interfaces, sql
+
+SESSION_KEY = 'z3c.formdemo.sqlmessage'
+
+SQLMessageCSSViewlet = CSSViewlet('sqlmessage.css')
+
+DefaultDate = widget.ComputedWidgetAttribute(
+    lambda adapter: datetime.date.today(),
+    field=interfaces.IHelloWorld['when'], view=IAddForm)
+
+class ISQLMessagePage(zope.interface.Interface):
+    """A marker interface for all SQL Hello World pages."""
+
+class HelloWorldAddForm(layout.AddFormLayoutSupport, form.AddForm):
+    zope.interface.implements(ISQLMessagePage)
+
+    template = None
+    layout = None
+    contentName = None
+    label = u'Add Form'
+
+    fields = field.Fields(interfaces.IHelloWorld)
+
+    def create(self, data):
+        return data
+
+    def add(self, data):
+        data['id'] = sql.getNextId()
+        data['when'] = data['when'].toordinal()
+        sql.addMessage(data)
+        return data
+
+    def nextURL(self):
+        url = absoluteURL(self.context, self.request)
+        return url + '/showAllSQLHelloWorld.html'
+
+
+class HelloWorldEditForm(layout.FormLayoutSupport, form.EditForm):
+    zope.interface.implements(ISQLMessagePage)
+
+    form.extends(form.EditForm)
+    fields = field.Fields(interfaces.IHelloWorld)
+
+    def getContent(self):
+        msg = sql.getMessage(self.request.form['id'])
+        content = dict(
+            [(name, getattr(msg, name.upper()))
+             for name in self.fields.keys()] )
+        content['when'] = datetime.date.fromordinal(content['when'])
+        return content
+
+    def applyChanges(self, data):
+        changed = False
+        for name, value in self.getContent().items():
+            if data[name] != value:
+                changed = True
+        data['when'] = data['when'].toordinal()
+        if changed:
+            id = self.request.form['id']
+            sql.updateMessage(id, data)
+        return changed
+
+    @button.buttonAndHandler(u'Apply and View', name='applyView')
+    def handleApplyView(self, action):
+        self.handleApply(self, action)
+        if not self.widgets.errors:
+            url = absoluteURL(self.context, self.request)
+            url += '/showSQLHelloWorld.html?id=' + self.request['id']
+            self.request.response.redirect(url)
+
+
+class HelloWorldDisplayForm(layout.FormLayoutSupport, form.DisplayForm):
+    zope.interface.implements(ISQLMessagePage)
+
+    fields = field.Fields(interfaces.IHelloWorld)
+
+    def getContent(self):
+        msg = sql.getMessage(self.request.form['id'])
+        content = dict(
+            [(name, getattr(msg, name.upper()))
+             for name in self.fields.keys()] )
+        content['when'] = datetime.date.fromordinal(content['when'])
+        return content
+
+
+class SQLColumn(column.GetterColumn):
+    zope.interface.implements(ISortableColumn)
+
+    def getter(self, item, formatter):
+        return getattr(item, self.name.upper())
+
+    def cell_formatter(self, value, item, formatter):
+        return '<a href="showSQLHelloWorld.html?id=%s">%s</a>' %(
+            item.ID, unicode(value))
+
+class DateSQLColumn(SQLColumn):
+
+    def getter(self, item, formatter):
+        value = super(DateSQLColumn, self).getter(item, formatter)
+        return datetime.date.fromordinal(value)
+
+class DeleteSQLColumn(column.Column):
+
+    def renderCell(self, item, formatter):
+        return '<a href="?delete=%i">[Delete]</a>' %item.ID
+
+
+class HelloWorldOverview(browser.BrowserPagelet):
+    zope.interface.implements(ISQLMessagePage)
+
+    status = None
+
+    columns = (
+        SQLColumn(u'Id', name='id'),
+        SQLColumn(u'Who', name='who'),
+        DateSQLColumn(u'When', name='when'),
+        SQLColumn(u'What', name='what'),
+        DeleteSQLColumn(u'', name='delete')
+        )
+
+    def update(self):
+        if 'initialize' in self.request.form:
+            try:
+                sql.initialize()
+            except zope.rdb.DatabaseException, exc:
+                self.status = "Database Message: " + exc.message
+        elif 'delete' in self.request.form:
+            try:
+                sql.deleteMessage(self.request.form['delete'])
+            except zope.rdb.DatabaseException, exc:
+                self.status = "Database Message: " + exc.message
+
+        try:
+            messages = sql.queryAllMessages()
+        except zope.rdb.DatabaseException, exc:
+            # No message table exists yet.
+            messages = ()
+
+        self.table = formatter.ListFormatter(
+            self.context, self.request, messages,
+            prefix = SESSION_KEY + '.', columns=self.columns,
+            sort_on=[('id', False)])
+        self.table.sortKey = 'z3c.formdemo.sqlmessage.sort-on'
+        self.table.cssClasses['table'] = 'message-list'
+        self.table.widths = (50, 200, 100, 150, 100)


Property changes on: z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/browser.py
___________________________________________________________________
Name: svn:keywords
   + Id

Added: z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/configure.zcml
===================================================================
--- z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/configure.zcml	                        (rev 0)
+++ z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/configure.zcml	2007-06-22 16:13:33 UTC (rev 76940)
@@ -0,0 +1,100 @@
+<configure
+    xmlns="http://namespaces.zope.org/zope"
+    xmlns:browser="http://namespaces.zope.org/browser"
+    xmlns:rdb="http://namespaces.zope.org/rdb"
+    xmlns:z3c="http://namespaces.zope.org/z3c"
+    i18n_domain="z3c.formdemo">
+
+  <!-- RDB setup -->
+
+  <rdb:gadflyRoot path="./db" />
+
+  <rdb:provideConnection
+      name="msg"
+      component="zope.rdb.gadflyda.GadflyAdapter"
+      dsn="dbi://msg" />
+
+  <!-- Default widget value for "when" -->
+  <adapter
+      factory=".browser.DefaultDate"
+      name="default" />
+
+  <!-- Resources -->
+
+  <browser:zrt-resource
+      name="sqlmessage.css"
+      file="sqlmessage.css"
+      layer="z3c.formdemo.layer.IDemoBrowserLayer"
+      />
+
+  <browser:viewlet
+      name="sqlmessage.css"
+      view=".browser.ISQLMessagePage"
+      manager="z3c.formdemo.skin.ICSS"
+      class=".browser.SQLMessageCSSViewlet"
+      permission="zope.Public"
+      layer="z3c.formdemo.layer.IDemoBrowserLayer"
+      weight="1000"
+      />
+
+  <!-- Add Form -->
+  <z3c:pagelet
+      name="addSQLHelloWorld.html"
+      for="*"
+      class=".browser.HelloWorldAddForm"
+      layer="z3c.formdemo.layer.IDemoBrowserLayer"
+      permission="zope.Public"
+      />
+
+  <z3c:template
+      template="add.pt"
+      for=".browser.HelloWorldAddForm"
+      layer="z3c.formdemo.layer.IDemoBrowserLayer"
+      />
+
+  <!-- Edit Form -->
+  <z3c:pagelet
+      name="editSQLHelloWorld.html"
+      for="*"
+      class=".browser.HelloWorldEditForm"
+      layer="z3c.formdemo.layer.IDemoBrowserLayer"
+      permission="zope.Public"
+      />
+
+  <z3c:template
+      template="edit.pt"
+      for=".browser.HelloWorldEditForm"
+      layer="z3c.formdemo.layer.IDemoBrowserLayer"
+      />
+
+  <!-- Display Form -->
+  <z3c:pagelet
+      name="showSQLHelloWorld.html"
+      for="*"
+      class=".browser.HelloWorldDisplayForm"
+      layer="z3c.formdemo.layer.IDemoBrowserLayer"
+      permission="zope.Public"
+      />
+
+  <z3c:template
+      template="display.pt"
+      for=".browser.HelloWorldDisplayForm"
+      layer="z3c.formdemo.layer.IDemoBrowserLayer"
+      />
+
+  <!-- Overview Page -->
+  <z3c:pagelet
+      name="showAllSQLHelloWorld.html"
+      for="*"
+      class=".browser.HelloWorldOverview"
+      layer="z3c.formdemo.layer.IDemoBrowserLayer"
+      permission="zope.Public"
+      />
+
+  <z3c:template
+      template="overview.pt"
+      for=".browser.HelloWorldOverview"
+      layer="z3c.formdemo.layer.IDemoBrowserLayer"
+      />
+
+</configure>


Property changes on: z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/configure.zcml
___________________________________________________________________
Name: svn:eol-style
   + native

Added: z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/db/msg/MSG.grl
===================================================================
(Binary files differ)


Property changes on: z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/db/msg/MSG.grl
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/db/msg/msg.gfd
===================================================================
(Binary files differ)


Property changes on: z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/db/msg/msg.gfd
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/display.pt
===================================================================
--- z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/display.pt	                        (rev 0)
+++ z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/display.pt	2007-06-22 16:13:33 UTC (rev 76940)
@@ -0,0 +1,14 @@
+<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>
+
+<div id="body">
+  <div class="actions">
+    <a href="./edit.html"
+       tal:attributes="href string:editSQLHelloWorld.html?id=${request/id}">
+      [Edit Message]</a>
+    <a href="showAllSQLHelloWorld.html">[Show All Messages]</a>
+  </div>
+</div>


Property changes on: z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/display.pt
___________________________________________________________________
Name: svn:eol-style
   + native

Added: z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/edit.pt
===================================================================
--- z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/edit.pt	                        (rev 0)
+++ z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/edit.pt	2007-06-22 16:13:33 UTC (rev 76940)
@@ -0,0 +1,10 @@
+<h1>Hello World Message Edit Form</h1>
+
+<div id="body">
+  <div metal:use-macro="macro:form">
+    <metal:block fill-slot="above-buttons">
+      <input type="hidden" name="id" value=""
+             tal:attributes="value request/form/id" />
+    </metal:block>
+  </div>
+</div>


Property changes on: z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/edit.pt
___________________________________________________________________
Name: svn:eol-style
   + native

Added: z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/interfaces.py
===================================================================
--- z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/interfaces.py	                        (rev 0)
+++ z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/interfaces.py	2007-06-22 16:13:33 UTC (rev 76940)
@@ -0,0 +1,45 @@
+##############################################################################
+#
+# 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.
+#
+##############################################################################
+"""Hello World Message Interfaces
+
+$Id$
+"""
+__docformat__ = "reStructuredText"
+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',
+        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)


Property changes on: z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/interfaces.py
___________________________________________________________________
Name: svn:keywords
   + Id

Added: z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/overview.pt
===================================================================
--- z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/overview.pt	                        (rev 0)
+++ z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/overview.pt	2007-06-22 16:13:33 UTC (rev 76940)
@@ -0,0 +1,19 @@
+<h1>SQL Hello World Message Demo</h1>
+
+<div id="body">
+  <div class="status"
+         tal:define="status view/status"
+         tal:condition="status">
+    <div class="summary"
+         tal:content="status">
+      status summary
+    </div>
+  </div>
+
+  <div tal:replace="structure view/table" />
+
+  <div class="actions">
+    <a href="addSQLHelloWorld.html">[Add message]</a>
+    <a href="?initialize=1">[Initialize the database]</a>
+  </div>
+</div>


Property changes on: z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/overview.pt
___________________________________________________________________
Name: svn:eol-style
   + native

Added: z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/sql.py
===================================================================
--- z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/sql.py	                        (rev 0)
+++ z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/sql.py	2007-06-22 16:13:33 UTC (rev 76940)
@@ -0,0 +1,72 @@
+##############################################################################
+#
+# 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.
+#
+##############################################################################
+"""SQL calls to database
+
+$Id$
+"""
+__docformat__ = "reStructuredText"
+import zope.component
+import zope.rdb
+from zope.rdb import interfaces
+
+def query(query):
+    db = zope.component.getUtility(interfaces.IZopeDatabaseAdapter, name='msg')
+    conn = db()
+    return zope.rdb.queryForResults(conn, query)
+
+def initialize():
+    query('''\
+        CREATE TABLE msg (
+            id INTEGER,
+            who VARCHAR,
+            when INTEGER,
+            what VARCHAR)
+        ''')
+
+def queryAllMessages():
+    return query('''\
+        SELECT id, who, when, what FROM msg
+        ''')
+
+def getNextId():
+    result = query('''\
+        SELECT id FROM msg
+        ''')
+    if not result:
+        return 0
+    return max([entry.ID for entry in result]) + 1
+
+def addMessage(data):
+    query("""\
+      INSERT INTO msg (id, who, when, what)
+      VALUES (%(id)s, '%(who)s', %(when)s, '%(what)s')
+        """ %data)
+
+def updateMessage(id, data):
+    data['id'] = id
+    query("""\
+        UPDATE msg
+        SET who='%(who)s', when=%(when)s, what='%(what)s'
+        WHERE id = %(id)s
+        """ %data)
+
+def getMessage(id):
+    return query("""\
+        SELECT id, who, when, what FROM msg WHERE id = %s
+        """ %id)[0]
+
+def deleteMessage(id):
+    query("""\
+    DELETE FROM msg WHERE id = %s
+        """ %id)


Property changes on: z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/sql.py
___________________________________________________________________
Name: svn:keywords
   + Id

Added: z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/sqlmessage.css
===================================================================
--- z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/sqlmessage.css	                        (rev 0)
+++ z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/sqlmessage.css	2007-06-22 16:13:33 UTC (rev 76940)
@@ -0,0 +1,85 @@
+body {
+  background: #EBE6D3;
+}
+
+a:visited {
+  color: #D91813;
+}
+
+a:hover {
+  color: #D91813;
+}
+
+h1 {
+  background: #574E3F;
+  color: #D5CDC6;
+  font-weight: bold;
+  padding: 5px;
+  border-bottom: 3px solid #900002;
+}
+
+input[type=text] {
+ padding: 2px;
+}
+
+input[type=submit] {
+  border: 1px solid black;
+  background: #900002;
+  color: white;
+  font-weight: bold;
+  padding: 2px;
+  -moz-border-radius: 5px;
+}
+
+div#content {
+  margin: 0;
+  padding: 0;
+}
+
+div#body {
+  margin: 20px;
+}
+
+div.status {
+  background-color: #F5F2EB;
+  border: 1px solid #CAC8C2;
+  color: #D91813;
+  font-style: italic;
+  margin: 10px 0px;
+  padding: 7px;
+  -moz-border-radius: 5px;
+}
+
+div.actions, div.buttons {
+  background-color: #F5F2EB;
+  border: 1px solid #CAC8C2;
+  margin-top: 10px;
+  padding: 7px;
+  -moz-border-radius: 5px;
+}
+
+table.message-list th {
+  background: #A79E8D;
+  padding: 3px;
+}
+
+table.message-list td {
+  color: #574E3F;
+  padding: 2px 0px;
+}
+
+table.message-list tr.even {
+  background-color: #F5F2EB;
+}
+
+table.message-list td a {
+  color: #574E3F;
+}
+
+table.message-list td a:hover {
+  color: #574E3F;
+}
+
+table.message-list td a:visited {
+  color: #574E3F;
+}


Property changes on: z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/sqlmessage.css
___________________________________________________________________
Name: svn:eol-style
   + native

Added: z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/what-values.csv
===================================================================
--- z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/what-values.csv	                        (rev 0)
+++ z3c.formdemo/trunk/src/z3c/formdemo/sqlmessage/what-values.csv	2007-06-22 16:13:33 UTC (rev 76940)
@@ -0,0 +1,4 @@
+"cool";"cool"
+"sunny";"sunny"
+"silent";"silent"
+"best";"best"



More information about the Checkins mailing list