add 'labelWidth' schema property for better control of the apperance of forms

git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@3709 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2010-02-01 15:07:23 +00:00
parent c6d80925eb
commit 6cb702924e
4 changed files with 27 additions and 18 deletions

View file

@ -28,7 +28,7 @@ from zope.app.session.interfaces import ISession
from zope.cachedescriptors.property import Lazy from zope.cachedescriptors.property import Lazy
from cybertools.composer.interfaces import IInstance from cybertools.composer.interfaces import IInstance
from cybertools.composer.schema.interfaces import IClientFactory from cybertools.composer.schema.interfaces import IClientFactory, ISchema
schema_macros = ViewPageTemplateFile('schema_macros.pt') schema_macros = ViewPageTemplateFile('schema_macros.pt')
@ -158,3 +158,18 @@ class BaseView(object):
def getSessionInfo(self, key, default=None, packageId=packageId): def getSessionInfo(self, key, default=None, packageId=packageId):
session = ISession(self.request)[packageId] session = ISession(self.request)[packageId]
return session.get(key, default) return session.get(key, default)
def details(self, clientName):
result = []
client = self.context.getClients().get(clientName)
schemas = [s for s in self.context.getClientSchemas()
if ISchema.providedBy(s)]
instance = IInstance(client)
for s in schemas:
instance.template = s
data = instance.applyTemplate()
for f in s.fields:
if f.storeData:
result.append(dict(label=f.title, value=data.get(f.name)))
return result

View file

@ -137,20 +137,6 @@ class FormManagerView(BaseView):
result.append(data) result.append(data)
return result return result
def details(self, clientName):
result = []
client = self.context.getClients().get(clientName)
schemas = [s for s in self.context.getClientSchemas()
if ISchema.providedBy(s)]
instance = IInstance(client)
for s in schemas:
instance.template = s
data = instance.applyTemplate()
for f in s.fields:
if f.storeData:
result.append(dict(label=f.title, value=data.get(f.name)))
return result
class CheckoutView(BaseView): class CheckoutView(BaseView):

View file

@ -40,8 +40,8 @@ class ISchema(ITemplate):
name = schema.ASCII( name = schema.ASCII(
title=_(u'Schema name'), title=_(u'Schema name'),
description=_(u'The internal name of the schema; will be used ' description=_(u'The internal name of the schema; will be used '
'to identify data fields of instance objects that ' u'to identify data fields of instance objects that '
'are associated with this schema.'), u'are associated with this schema.'),
required=True,) required=True,)
title = schema.TextLine( title = schema.TextLine(
title=_(u'Title'), title=_(u'Title'),
@ -51,6 +51,13 @@ class ISchema(ITemplate):
title=_(u'Description'), title=_(u'Description'),
description=_(u'A brief description of the item.'), description=_(u'A brief description of the item.'),
required=False,) required=False,)
labelWidth = schema.TextLine(
title=_(u'Label column width'),
description=_(u'The width of the label column; please enter '
u'a value like used for CSS style sheets, '
u'e.g. "200px" or "20%".'),
default=u'auto',
required=False,)
fields = Attribute('The components the schema is built up of. ' fields = Attribute('The components the schema is built up of. '
'Should be a sequence of IField objects.') 'Should be a sequence of IField objects.')

View file

@ -1,5 +1,5 @@
# #
# Copyright (c) 2007 Helmut Merz helmutm@cy55.de # Copyright (c) 2010 Helmut Merz helmutm@cy55.de
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@ -36,6 +36,7 @@ class Schema(Template):
implements(ISchema) implements(ISchema)
name = u'' name = u''
labelWidth = 'auto'
manager = None manager = None
def __init__(self, *fields, **kw): def __init__(self, *fields, **kw):